diff --git a/proxmox/lxc108-oracle/roa-windows-setup/scripts/04-create-synonyms-grants.ps1 b/proxmox/lxc108-oracle/roa-windows-setup/scripts/04-create-synonyms-grants.ps1 index e5f37b0..45d4344 100644 --- a/proxmox/lxc108-oracle/roa-windows-setup/scripts/04-create-synonyms-grants.ps1 +++ b/proxmox/lxc108-oracle/roa-windows-setup/scripts/04-create-synonyms-grants.ps1 @@ -6,8 +6,8 @@ .DESCRIPTION Creates public synonyms for CONTAFIN_ORACLE objects and configures: - - Public synonyms for tables, views, packages, types - - Public grants (SELECT, EXECUTE, REFERENCES) + - Public synonyms for tables, views, packages, types (via synonyms-public.sql) + - Public grants (SELECT, EXECUTE, REFERENCES) (via grants-public.sql) - SESIUNE context - Network ACL for CONTAFIN_ORACLE @@ -67,6 +67,24 @@ try { $oraHome = Get-OracleHome -OracleHome $OracleHome Write-LogSuccess "Oracle Home: $oraHome" + # Determine SQL scripts directory + if (-not $SqlScriptsDir) { + $SqlScriptsDir = Join-Path $PSScriptRoot "..\sql" + } + + # Verify SQL files exist + $synonymsScript = Join-Path $SqlScriptsDir "synonyms-public.sql" + $grantsScript = Join-Path $SqlScriptsDir "grants-public.sql" + + if (-not (Test-Path -Path $synonymsScript)) { + throw "synonyms-public.sql not found at $synonymsScript" + } + if (-not (Test-Path -Path $grantsScript)) { + throw "grants-public.sql not found at $grantsScript" + } + + Write-Log "SQL scripts directory: $SqlScriptsDir" + # Test connection Write-Log "Testing database connection..." if (-not (Test-OracleConnection -OracleHome $oraHome -ServiceName $ServiceName ` @@ -86,307 +104,16 @@ try { } Write-LogSuccess "CONTAFIN_ORACLE has $totalObjects objects" - # Create SESIUNE context - Write-LogSection "Creating SESIUNE Context" - - $contextSql = @" -SET ECHO OFF FEEDBACK ON VERIFY OFF - --- Drop existing context if exists -BEGIN - EXECUTE IMMEDIATE 'DROP CONTEXT SESIUNE'; -EXCEPTION - WHEN OTHERS THEN NULL; -END; -/ - --- Create context -CREATE CONTEXT SESIUNE USING CONTAFIN_ORACLE.SET_VARIABILE; - -SELECT 'CONTEXT_CREATED' FROM dual; -EXIT; -"@ - - $result = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` - -Username "SYSTEM" -Password $SystemPassword -SqlCommand $contextSql - - if ($result -match "CONTEXT_CREATED") { - Write-LogSuccess "Context SESIUNE created" - } - else { - Write-LogWarning "Could not verify context creation" - } - - # Create public synonyms SQL + # ========================================================================= + # STEP 1: Create Public Synonyms (using synonyms-public.sql) + # ========================================================================= Write-LogSection "Creating Public Synonyms" - - $synonymsSql = @" -SET ECHO OFF FEEDBACK ON VERIFY OFF SERVEROUTPUT ON -SPOOL synonyms_grants.log - -PROMPT -PROMPT ============================================= -PROMPT Creating Public Synonyms for CONTAFIN_ORACLE -PROMPT ============================================= -PROMPT - --- Core synonyms with grants -PROMPT Creating SYN_DEF_GRUP... -CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP FOR CONTAFIN_ORACLE.DEF_GRUP; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.DEF_GRUP TO PUBLIC; - -PROMPT Creating SYN_DEF_PROGRAME... -CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_PROGRAME FOR CONTAFIN_ORACLE.DEF_PROGRAME; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.DEF_PROGRAME TO PUBLIC; - -PROMPT Creating SYN_VDEF_PROGRAME... -CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_PROGRAME FOR CONTAFIN_ORACLE.VDEF_PROGRAME; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.VDEF_PROGRAME TO PUBLIC; - -PROMPT Creating SYN_LUNILEAN... -CREATE OR REPLACE PUBLIC SYNONYM SYN_LUNILEAN FOR CONTAFIN_ORACLE.LUNILEAN; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.LUNILEAN TO PUBLIC; - -PROMPT Creating SYN_NOM_FIRME... -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FIRME FOR CONTAFIN_ORACLE.NOM_FIRME; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_FIRME TO PUBLIC; - -PROMPT Creating SYN_NOM_PROGRAME... -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_PROGRAME FOR CONTAFIN_ORACLE.NOM_PROGRAME; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_PROGRAME TO PUBLIC; - -PROMPT Creating SYN_PACK_DREPTURI... -CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DREPTURI FOR CONTAFIN_ORACLE.PACK_DREPTURI; -GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_DREPTURI TO PUBLIC; - -PROMPT Creating SYN_UTILIZATORI... -CREATE OR REPLACE PUBLIC SYNONYM SYN_UTILIZATORI FOR CONTAFIN_ORACLE.UTILIZATORI; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.UTILIZATORI TO PUBLIC; - -PROMPT Creating syn_vdef_util_programe... -CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_PROGRAME FOR CONTAFIN_ORACLE.VDEF_UTIL_PROGRAME; -GRANT SELECT ON CONTAFIN_ORACLE.VDEF_UTIL_PROGRAME TO PUBLIC; - -PROMPT Creating syn_vdef_util_firme... -CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_FIRME FOR CONTAFIN_ORACLE.VDEF_UTIL_FIRME; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.VDEF_UTIL_FIRME TO PUBLIC; - -PROMPT Creating SYN_VDEF_UTIL_OBIECTE... -CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_OBIECTE FOR CONTAFIN_ORACLE.VDEF_UTIL_OBIECTE; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.VDEF_UTIL_OBIECTE TO PUBLIC; - -PROMPT Creating SYN_VUTILIZATORI... -CREATE OR REPLACE PUBLIC SYNONYM SYN_VUTILIZATORI FOR CONTAFIN_ORACLE.VUTILIZATORI; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.VUTILIZATORI TO PUBLIC; - -PROMPT Creating SYN_VDEF_UTIL_GRUP... -CREATE OR REPLACE PUBLIC SYNONYM SYN_VDEF_UTIL_GRUP FOR CONTAFIN_ORACLE.VDEF_UTIL_GRUP; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.VDEF_UTIL_GRUP TO PUBLIC; - -PROMPT Creating SYN_DEF_GRUP_DREPT... -CREATE OR REPLACE PUBLIC SYNONYM SYN_DEF_GRUP_DREPT FOR CONTAFIN_ORACLE.DEF_GRUP_DREPT; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.DEF_GRUP_DREPT TO PUBLIC; - -PROMPT Creating SYN_OPTIUNI_PROGRAME... -CREATE OR REPLACE PUBLIC SYNONYM SYN_OPTIUNI_PROGRAME FOR CONTAFIN_ORACLE.OPTIUNI_PROGRAME; -GRANT SELECT ON CONTAFIN_ORACLE.OPTIUNI_PROGRAME TO PUBLIC; - -PROMPT Creating SYN_HELPCONT... -CREATE OR REPLACE PUBLIC SYNONYM SYN_HELPCONT FOR CONTAFIN_ORACLE.HELPCONT; -GRANT SELECT ON CONTAFIN_ORACLE.HELPCONT TO PUBLIC; - -PROMPT Creating SYN_V_NOM_FIRME... -CREATE OR REPLACE PUBLIC SYNONYM SYN_V_NOM_FIRME FOR CONTAFIN_ORACLE.V_NOM_FIRME; -GRANT SELECT ON CONTAFIN_ORACLE.V_NOM_FIRME TO PUBLIC; - --- Nomenclators -PROMPT Creating nomenclator synonyms... -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_JURIDICE FOR CONTAFIN_ORACLE.NOM_FORME_JURIDICE; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_FORME_JURIDICE TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_ORGANIZARE FOR CONTAFIN_ORACLE.NOM_FORME_ORGANIZARE; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_FORME_ORGANIZARE TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TIP_SOCIETATE FOR CONTAFIN_ORACLE.NOM_TIP_SOCIETATE; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_TIP_SOCIETATE TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_FORME_PROPRIETATE FOR CONTAFIN_ORACLE.NOM_FORME_PROPRIETATE; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_FORME_PROPRIETATE TO PUBLIC; - --- String aggregation -PROMPT Creating stringAgg synonym... -CREATE OR REPLACE PUBLIC SYNONYM STRINGAGG FOR CONTAFIN_ORACLE.STRINGAGG; -GRANT EXECUTE ON CONTAFIN_ORACLE.STRINGAGG TO PUBLIC; - --- Types -PROMPT Creating type synonyms... -BEGIN - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.STRINGAGGTYPE TO PUBLIC'; -EXCEPTION WHEN OTHERS THEN NULL; -END; -/ - -CREATE OR REPLACE PUBLIC SYNONYM CHAR_ROW FOR CONTAFIN_ORACLE.CHAR_ROW; -CREATE OR REPLACE PUBLIC SYNONYM CHAR_TAB FOR CONTAFIN_ORACLE.CHAR_TAB; -CREATE OR REPLACE PUBLIC SYNONYM NUM_ROW FOR CONTAFIN_ORACLE.NUM_ROW; -CREATE OR REPLACE PUBLIC SYNONYM NUM_TAB FOR CONTAFIN_ORACLE.NUM_TAB; - -BEGIN - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.NUM_ROW TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.NUM_TAB TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.CHAR_ROW TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.CHAR_TAB TO PUBLIC'; -EXCEPTION WHEN OTHERS THEN NULL; -END; -/ - -CREATE OR REPLACE PUBLIC SYNONYM UW_SEL_ROW FOR CONTAFIN_ORACLE.UW_SEL_ROW; -CREATE OR REPLACE PUBLIC SYNONYM UW_SEL_TAB FOR CONTAFIN_ORACLE.UW_SEL_TAB; - -BEGIN - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.UW_SEL_ROW TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.UW_SEL_TAB TO PUBLIC'; -EXCEPTION WHEN OTHERS THEN NULL; -END; -/ - --- Functions -PROMPT Creating function synonyms... -CREATE OR REPLACE PUBLIC SYNONYM VALOARETAG FOR CONTAFIN_ORACLE.VALOARETAG; -CREATE OR REPLACE PUBLIC SYNONYM GETWORDCOUNT FOR CONTAFIN_ORACLE.GETWORDCOUNT; -CREATE OR REPLACE PUBLIC SYNONYM GETWORDNUM FOR CONTAFIN_ORACLE.GETWORDNUM; -CREATE OR REPLACE PUBLIC SYNONYM CHARC2COLLECTION FOR CONTAFIN_ORACLE.CHARC2COLLECTION; -CREATE OR REPLACE PUBLIC SYNONYM CHARN2COLLECTION FOR CONTAFIN_ORACLE.CHARN2COLLECTION; - -BEGIN - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.VALOARETAG TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.GETWORDCOUNT TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.GETWORDNUM TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.CHARC2COLLECTION TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.CHARN2COLLECTION TO PUBLIC'; -EXCEPTION WHEN OTHERS THEN NULL; -END; -/ - --- VAUTH_SERII synonym for CONTAFIN_ORACLE -PROMPT Creating VDEF_PROGRAME_SERII synonym... -BEGIN - EXECUTE IMMEDIATE 'DROP SYNONYM CONTAFIN_ORACLE.VDEF_PROGRAME_SERII'; -EXCEPTION WHEN OTHERS THEN NULL; -END; -/ -CREATE SYNONYM CONTAFIN_ORACLE.VDEF_PROGRAME_SERII FOR SYS.VAUTH_SERII; -GRANT SELECT ON CONTAFIN_ORACLE.VDEF_PROGRAME_SERII TO CONTAFIN_ORACLE; - --- Currency and location synonyms -PROMPT Creating currency/location synonyms... -CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_VALUTE_ISO FOR CONTAFIN_ORACLE.VNOM_VALUTE_ISO; -GRANT SELECT ON CONTAFIN_ORACLE.VNOM_VALUTE_ISO TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_ACTUALIZARI FOR CONTAFIN_ORACLE.CURS_ACTUALIZARI; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.CURS_ACTUALIZARI TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_VALUTE_ISO FOR CONTAFIN_ORACLE.NOM_VALUTE_ISO; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_VALUTE_ISO TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_CURS_COTATII FOR CONTAFIN_ORACLE.CURS_COTATII; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.CURS_COTATII TO PUBLIC; - --- Location synonyms -PROMPT Creating location synonyms... -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_JUDETE FOR CONTAFIN_ORACLE.NOM_JUDETE; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_JUDETE TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_LOCALITATI FOR CONTAFIN_ORACLE.NOM_LOCALITATI; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_LOCALITATI TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_JUDETE FOR CONTAFIN_ORACLE.VNOM_JUDETE; -GRANT SELECT ON CONTAFIN_ORACLE.VNOM_JUDETE TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_LOCALITATI FOR CONTAFIN_ORACLE.VNOM_LOCALITATI; -GRANT SELECT ON CONTAFIN_ORACLE.VNOM_LOCALITATI TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_VNOM_TARI FOR CONTAFIN_ORACLE.VNOM_TARI; -GRANT SELECT ON CONTAFIN_ORACLE.VNOM_TARI TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CETATENII FOR CONTAFIN_ORACLE.NOM_CETATENII; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_CETATENII TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_TARI FOR CONTAFIN_ORACLE.NOM_TARI; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_TARI TO PUBLIC; - --- Packages -PROMPT Creating package synonyms... -CREATE OR REPLACE PUBLIC SYNONYM SYN_PACK_DEF_CO FOR CONTAFIN_ORACLE.PACK_DEF_CO; -GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_DEF_CO TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM PACK_UTILS FOR CONTAFIN_ORACLE.PACK_UTILS; -GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UTILS TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM PACK_UTILS_FILE FOR CONTAFIN_ORACLE.PACK_UTILS_FILE; -GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_UTILS_FILE TO PUBLIC; - -CREATE OR REPLACE PUBLIC SYNONYM PACK_ROARTVAI FOR CONTAFIN_ORACLE.PACK_ROARTVAI; -GRANT EXECUTE ON CONTAFIN_ORACLE.PACK_ROARTVAI TO PUBLIC; - --- More types and synonyms -PROMPT Creating additional type synonyms... -CREATE OR REPLACE PUBLIC SYNONYM CONTRACT_M FOR CONTAFIN_ORACLE.CONTRACT_M; -CREATE OR REPLACE PUBLIC SYNONYM SAL_CONTRACT_M FOR CONTAFIN_ORACLE.SAL_CONTRACT_M; -CREATE OR REPLACE PUBLIC SYNONYM SAL_RED FOR CONTAFIN_ORACLE.SAL_RED; -CREATE OR REPLACE PUBLIC SYNONYM SAL_CAMPURI_RED FOR CONTAFIN_ORACLE.SAL_CAMPURI_RED; -CREATE OR REPLACE PUBLIC SYNONYM TABSTERS FOR CONTAFIN_ORACLE.TABSTERS; -CREATE OR REPLACE PUBLIC SYNONYM SAL_TABELESTERS FOR CONTAFIN_ORACLE.SAL_TABELESTERS; -CREATE OR REPLACE PUBLIC SYNONYM FF_SUME FOR CONTAFIN_ORACLE.FF_SUME; -CREATE OR REPLACE PUBLIC SYNONYM FF_PERSINTRET FOR CONTAFIN_ORACLE.FF_PERSINTRET; -CREATE OR REPLACE PUBLIC SYNONYM VANZARI_DETALII_TAB FOR CONTAFIN_ORACLE.VANZARI_DETALII_TAB; -CREATE OR REPLACE PUBLIC SYNONYM PIVOT_TABLE FOR CONTAFIN_ORACLE.PIVOT_TABLE; -CREATE OR REPLACE PUBLIC SYNONYM PIVOT_ROW FOR CONTAFIN_ORACLE.PIVOT_ROW; - -BEGIN - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.CONTRACT_M TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.SAL_CONTRACT_M TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.SAL_RED TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.SAL_CAMPURI_RED TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.TABSTERS TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.SAL_TABELESTERS TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.FF_SUME TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.FF_PERSINTRET TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.VANZARI_DETALII_TAB TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.PIVOT_TABLE TO PUBLIC'; - EXECUTE IMMEDIATE 'GRANT EXECUTE ON CONTAFIN_ORACLE.PIVOT_ROW TO PUBLIC'; -EXCEPTION WHEN OTHERS THEN NULL; -END; -/ - --- SERVER_INFO -PROMPT Creating SERVER_INFO synonym... -CREATE OR REPLACE PUBLIC SYNONYM SERVER_INFO FOR CONTAFIN_ORACLE.SERVER_INFO; -GRANT SELECT, UPDATE ON CONTAFIN_ORACLE.SERVER_INFO TO PUBLIC; - --- CAEN codes -PROMPT Creating SYN_NOM_CODURI_CAEN... -CREATE OR REPLACE PUBLIC SYNONYM SYN_NOM_CODURI_CAEN FOR CONTAFIN_ORACLE.NOM_CODURI_CAEN; -GRANT SELECT, REFERENCES ON CONTAFIN_ORACLE.NOM_CODURI_CAEN TO PUBLIC; - --- Directory grants -PROMPT Granting directory access... -GRANT ALL ON DIRECTORY DMPDIR TO PUBLIC; -GRANT EXECUTE ON UTL_FILE TO PUBLIC; -GRANT EXECUTE ON DBMS_LOCK TO PUBLIC; - -COMMIT; - -SPOOL OFF - -SELECT 'SYNONYMS_COMPLETE' FROM dual; -EXIT; -"@ + Write-Log "Running synonyms-public.sql..." $result = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` - -Username "SYSTEM" -Password $SystemPassword -SqlCommand $synonymsSql + -Username "SYS" -Password $SystemPassword -SqlFile $synonymsScript -AsSysdba - if ($result -match "SYNONYMS_COMPLETE") { + if ($result -match "synonym_count|SYNONYM_NAME") { Write-LogSuccess "Public synonyms created successfully" } else { @@ -394,70 +121,29 @@ EXIT; Write-LogDebug $result } - # Configure Network ACL - Write-LogSection "Configuring Network ACL" + # ========================================================================= + # STEP 2: Create Grants and ACL (using grants-public.sql) + # ========================================================================= + Write-LogSection "Creating Grants and Network ACL" + Write-Log "Running grants-public.sql..." - $aclSql = @" -SET ECHO OFF FEEDBACK ON VERIFY OFF SERVEROUTPUT ON + $grantsResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` + -Username "SYS" -Password $SystemPassword -SqlFile $grantsScript -AsSysdba -PROMPT Configuring Network ACL for CONTAFIN_ORACLE... - --- Drop existing ACL -BEGIN - DBMS_NETWORK_ACL_ADMIN.DROP_ACL(acl => 'roaupdate.xml'); -EXCEPTION - WHEN OTHERS THEN NULL; -END; -/ - --- Create new ACL -BEGIN - DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( - acl => 'roaupdate.xml', - description => 'Permissions to connect and resolve for ROA', - principal => 'CONTAFIN_ORACLE', - is_grant => TRUE, - privilege => 'connect' - ); - - DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( - acl => 'roaupdate.xml', - principal => 'CONTAFIN_ORACLE', - is_grant => TRUE, - privilege => 'resolve' - ); - - DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( - acl => 'roaupdate.xml', - host => '*' - ); -END; -/ -COMMIT; - --- Grant UTL packages to CONTAFIN_ORACLE -GRANT EXECUTE ON UTL_INADDR TO CONTAFIN_ORACLE; -GRANT EXECUTE ON UTL_TCP TO CONTAFIN_ORACLE; -GRANT EXECUTE ON UTL_SMTP TO CONTAFIN_ORACLE; -GRANT EXECUTE ON UTL_HTTP TO CONTAFIN_ORACLE; - -SELECT 'ACL_CONFIGURED' FROM dual; -EXIT; -"@ - - $aclResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` - -Username "SYS" -Password $SystemPassword -SqlCommand $aclSql -AsSysdba - - if ($aclResult -match "ACL_CONFIGURED") { - Write-LogSuccess "Network ACL configured" + if ($grantsResult -match "Grant|ACL|Grants Complete") { + Write-LogSuccess "Grants and ACL configured successfully" } else { - Write-LogWarning "Could not verify ACL configuration" + Write-LogWarning "Could not verify grants configuration" + Write-LogDebug $grantsResult } - # Count synonyms created - Write-LogSection "Verifying Synonyms" + # ========================================================================= + # STEP 3: Verify Results + # ========================================================================= + Write-LogSection "Verifying Configuration" + # Count synonyms $countSql = @" SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SELECT 'SYNONYM_COUNT:' || COUNT(*) @@ -477,15 +163,49 @@ EXIT; Write-Log "Public synonyms for CONTAFIN_ORACLE: $synonymCount" + # Verify SESIUNE context exists (created by grants-public.sql or synonyms-public.sql) + $contextSql = @" +SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF +SELECT 'CONTEXT_EXISTS:' || COUNT(*) +FROM dba_context +WHERE namespace = 'SESIUNE'; +EXIT; +"@ + + $contextResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` + -Username "SYSTEM" -Password $SystemPassword -SqlCommand $contextSql -Silent + + $contextExists = $false + if ($contextResult -match "CONTEXT_EXISTS:(\d+)") { + $contextExists = [int]$Matches[1] -gt 0 + } + + if ($contextExists) { + Write-LogSuccess "SESIUNE context exists" + } + else { + Write-LogWarning "SESIUNE context not found - creating..." + $createContextSql = @" +CREATE CONTEXT SESIUNE USING CONTAFIN_ORACLE.SET_VARIABILE; +EXIT; +"@ + Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` + -Username "SYS" -Password $SystemPassword -SqlCommand $createContextSql -AsSysdba + } + + # ========================================================================= # Summary + # ========================================================================= Write-LogSection "Setup Complete" Write-LogSuccess "Public synonyms and grants configured!" Write-Log "" Write-Log "Summary:" + Write-Log " SQL scripts used:" + Write-Log " - synonyms-public.sql (all public synonyms)" + Write-Log " - grants-public.sql (all grants and ACL)" Write-Log " Public synonyms created: $synonymCount" - Write-Log " SESIUNE context: Created" + Write-Log " SESIUNE context: $(if ($contextExists) { 'Verified' } else { 'Created' })" Write-Log " Network ACL: Configured (roaupdate.xml)" - Write-Log " UTL packages granted: UTL_INADDR, UTL_TCP, UTL_SMTP, UTL_HTTP" Write-Log "" Write-Log "Next steps:" Write-Log " 1. Run 05-import-companies.ps1 to import company schemas"