#Requires -Version 5.1 <# .SYNOPSIS Create public synonyms and grants for ROA Oracle. .DESCRIPTION Creates public synonyms for CONTAFIN_ORACLE objects and configures: - Public synonyms for tables, views, packages, types - Public grants (SELECT, EXECUTE, REFERENCES) - SESIUNE context - Network ACL for CONTAFIN_ORACLE .PARAMETER OracleHome Oracle home directory. If not specified, auto-detects. .PARAMETER ServiceName Database service name. Default: XEPDB1 .PARAMETER SystemPassword SYSTEM user password. Default: romfastsoft .PARAMETER SqlScriptsDir Directory containing SQL scripts. Default: ..\sql .EXAMPLE .\04-create-synonyms-grants.ps1 .EXAMPLE .\04-create-synonyms-grants.ps1 -ServiceName "ROA" -SystemPassword "mypassword" .NOTES File Name : 04-create-synonyms-grants.ps1 Prerequisite : Run 03-import-contafin.ps1 first Copyright 2024 : ROMFAST #> [CmdletBinding()] param( [Parameter(Mandatory = $false)] [string]$OracleHome, [Parameter(Mandatory = $false)] [string]$ServiceName = "XEPDB1", [Parameter(Mandatory = $false)] [string]$SystemPassword = "romfastsoft", [Parameter(Mandatory = $false)] [string]$SqlScriptsDir ) $ErrorActionPreference = 'Stop' # Source library functions . "$PSScriptRoot\lib\logging-functions.ps1" . "$PSScriptRoot\lib\oracle-functions.ps1" # Initialize logging $logPath = Join-Path $PSScriptRoot "..\logs\04-create-synonyms-grants_$(Get-Date -Format 'yyyyMMdd_HHmmss').log" Initialize-LogFile -LogPath $logPath -ScriptName "04-create-synonyms-grants.ps1" try { Write-LogSection "Creating Public Synonyms and Grants" # Validate Oracle installation $oraHome = Get-OracleHome -OracleHome $OracleHome Write-LogSuccess "Oracle Home: $oraHome" # Test connection Write-Log "Testing database connection..." if (-not (Test-OracleConnection -OracleHome $oraHome -ServiceName $ServiceName ` -Password $SystemPassword)) { throw "Cannot connect to database. Please verify ServiceName and SystemPassword." } Write-LogSuccess "Database connection successful" # Verify CONTAFIN_ORACLE exists and has objects Write-Log "Verifying CONTAFIN_ORACLE schema..." $counts = Get-SchemaObjectCount -OracleHome $oraHome -ServiceName $ServiceName ` -Password $SystemPassword -SchemaName "CONTAFIN_ORACLE" $totalObjects = if ($counts['TOTAL']) { $counts['TOTAL'] } else { 0 } if ($totalObjects -eq 0) { throw "CONTAFIN_ORACLE schema has no objects. Run 03-import-contafin.ps1 first." } 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 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; "@ $result = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` -Username "SYSTEM" -Password $SystemPassword -SqlCommand $synonymsSql if ($result -match "SYNONYMS_COMPLETE") { Write-LogSuccess "Public synonyms created successfully" } else { Write-LogWarning "Could not verify synonym creation" Write-LogDebug $result } # Configure Network ACL Write-LogSection "Configuring Network ACL" $aclSql = @" SET ECHO OFF FEEDBACK ON VERIFY OFF SERVEROUTPUT ON 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" } else { Write-LogWarning "Could not verify ACL configuration" } # Count synonyms created Write-LogSection "Verifying Synonyms" $countSql = @" SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SELECT 'SYNONYM_COUNT:' || COUNT(*) FROM dba_synonyms WHERE owner = 'PUBLIC' AND table_owner = 'CONTAFIN_ORACLE'; EXIT; "@ $countResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName ` -Username "SYSTEM" -Password $SystemPassword -SqlCommand $countSql -Silent $synonymCount = 0 if ($countResult -match "SYNONYM_COUNT:(\d+)") { $synonymCount = [int]$Matches[1] } Write-Log "Public synonyms for CONTAFIN_ORACLE: $synonymCount" # Summary Write-LogSection "Setup Complete" Write-LogSuccess "Public synonyms and grants configured!" Write-Log "" Write-Log "Summary:" Write-Log " Public synonyms created: $synonymCount" Write-Log " SESIUNE context: 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" Close-LogFile -Success $true exit 0 } catch { Write-LogError "Setup failed: $_" Write-LogError $_.ScriptStackTrace Close-LogFile -Success $false exit 1 }