From 32c7a5dcee93c447d792520780879eac0cc827bd Mon Sep 17 00:00:00 2001 From: Grzegorz Michalski Date: Tue, 3 Feb 2026 18:38:17 +0100 Subject: [PATCH] wk --- confluence/Package_Deployment_Guide.md | 116 +++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/confluence/Package_Deployment_Guide.md b/confluence/Package_Deployment_Guide.md index 1f449da..fa748b3 100644 --- a/confluence/Package_Deployment_Guide.md +++ b/confluence/Package_Deployment_Guide.md @@ -10,6 +10,122 @@ This guide provides step-by-step instructions for developers on how to properly --- +## MANDATORY STANDARDS (NEVER SKIP!) + +### 🔴 Critical: Author Field + +**ALL scripts MUST have:** +```sql +-- Author: Grzegorz Michalski +``` + +**❌ WRONG:** +```sql +-- Author: System +-- Author: Developer +-- Author: [your name here] +``` + +**✅ CORRECT:** +```sql +-- Author: Grzegorz Michalski +``` + +### 📅 Date Format Standard + +**ISO 8601 format only:** +```sql +-- Date: 2026-02-03 (YYYY-MM-DD) +``` + +### 📝 Script Header Template + +**Copy-paste this template for ALL scripts:** +```sql +-- ===================================================================== +-- Script: XX_MARS_XXX_description.sql +-- MARS Issue: MARS-XXX +-- Purpose: Brief description of what this script does +-- Author: Grzegorz Michalski +-- Date: YYYY-MM-DD +-- ===================================================================== +``` + +### 🔐 Database User Requirements + +**Execute installations as ADMIN:** +```powershell +# ✅ CORRECT +Get-Content "install_marsXXX.sql" | sql "ADMIN/password@service" + +# ❌ WRONG +Get-Content "install_marsXXX.sql" | sql "CT_MRDS/password@service" +``` + +### 🔍 Data Dictionary Views + +**Use ALL_* views when installing as ADMIN:** +```sql +-- ✅ CORRECT (ADMIN user) +SELECT * FROM ALL_ERRORS WHERE OWNER = 'CT_MRDS' AND NAME = 'PACKAGE_NAME'; + +-- ❌ WRONG (shows ADMIN schema, not CT_MRDS) +SELECT * FROM USER_ERRORS WHERE NAME = 'PACKAGE_NAME'; +``` + +### 📂 Log Directory Management + +**MANDATORY in all master scripts:** +```sql +-- Create log/ directory before SPOOL (prevents failures) +host mkdir log 2>nul + +-- Then configure dynamic SPOOL filename +var filename VARCHAR2(100) +BEGIN + :filename := 'log/INSTALL_MARS_XXX_' || SYS_CONTEXT('USERENV', 'CON_NAME') || '_' || TO_CHAR(SYSDATE,'YYYYMMDD_HH24MISS') || '.log'; +END; +/ +``` + +### ✋ User Confirmation + +**MANDATORY ACCEPT validation in master scripts:** +```sql +ACCEPT continue CHAR PROMPT 'Type YES to continue with installation, or Ctrl+C to abort: ' +WHENEVER SQLERROR EXIT SQL.SQLCODE +BEGIN + IF '&continue' IS NULL OR TRIM('&continue') IS NULL OR UPPER(TRIM('&continue')) != 'YES' THEN + RAISE_APPLICATION_ERROR(-20001, 'Installation aborted by user'); + END IF; +END; +/ +WHENEVER SQLERROR CONTINUE +``` + +### 🚪 Clean Exit + +**End all master scripts with:** +```sql +spool off +quit; -- ← MANDATORY for clean SQLcl/SQL*Plus exit +``` + +### 📋 Quick Compliance Checklist + +Before committing any script, verify: +- [ ] `Author: Grzegorz Michalski` in header +- [ ] Date in ISO 8601 format (YYYY-MM-DD) +- [ ] Master scripts use `host mkdir log 2>nul` +- [ ] Master scripts require ACCEPT validation +- [ ] Master scripts end with `quit;` +- [ ] Verification queries use ALL_* views with OWNER filter +- [ ] Installation instructions specify ADMIN user + +**💡 Remember:** These standards prevent common mistakes and ensure consistency across all MARS packages! + +--- + ## Table of Contents 1. [Before You Start](#before-you-start)