Fix 04-create-synonyms-grants.ps1 to use SQL files instead of inline SQL

The script had inline SQL that was missing 20 synonyms compared to
synonyms-public.sql, causing PACK_DEF and other packages to fail with
missing synonym errors (SYN_VNOM_UM_ISO, SYN_ATAS_*, SYN_SAL_*, etc.).

Changes:
- Remove all inline SQL (~350 lines)
- Now runs synonyms-public.sql (81 synonyms vs 61 before)
- Now runs grants-public.sql for all grants and ACL
- Add verification of SESIUNE context

This ensures the script stays in sync with the SQL files and
prevents future desync issues.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Marius
2026-01-29 00:30:12 +02:00
parent bcb558f1dc
commit aaf5942f6b

View File

@@ -6,8 +6,8 @@
.DESCRIPTION .DESCRIPTION
Creates public synonyms for CONTAFIN_ORACLE objects and configures: Creates public synonyms for CONTAFIN_ORACLE objects and configures:
- Public synonyms for tables, views, packages, types - Public synonyms for tables, views, packages, types (via synonyms-public.sql)
- Public grants (SELECT, EXECUTE, REFERENCES) - Public grants (SELECT, EXECUTE, REFERENCES) (via grants-public.sql)
- SESIUNE context - SESIUNE context
- Network ACL for CONTAFIN_ORACLE - Network ACL for CONTAFIN_ORACLE
@@ -67,6 +67,24 @@ try {
$oraHome = Get-OracleHome -OracleHome $OracleHome $oraHome = Get-OracleHome -OracleHome $OracleHome
Write-LogSuccess "Oracle Home: $oraHome" 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 # Test connection
Write-Log "Testing database connection..." Write-Log "Testing database connection..."
if (-not (Test-OracleConnection -OracleHome $oraHome -ServiceName $ServiceName ` if (-not (Test-OracleConnection -OracleHome $oraHome -ServiceName $ServiceName `
@@ -86,307 +104,16 @@ try {
} }
Write-LogSuccess "CONTAFIN_ORACLE has $totalObjects objects" Write-LogSuccess "CONTAFIN_ORACLE has $totalObjects objects"
# Create SESIUNE context # =========================================================================
Write-LogSection "Creating SESIUNE Context" # STEP 1: Create Public Synonyms (using synonyms-public.sql)
# =========================================================================
$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" Write-LogSection "Creating Public Synonyms"
Write-Log "Running synonyms-public.sql..."
$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 ` $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" Write-LogSuccess "Public synonyms created successfully"
} }
else { else {
@@ -394,70 +121,29 @@ EXIT;
Write-LogDebug $result 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 = @" $grantsResult = Invoke-SqlPlus -OracleHome $oraHome -ServiceName $ServiceName `
SET ECHO OFF FEEDBACK ON VERIFY OFF SERVEROUTPUT ON -Username "SYS" -Password $SystemPassword -SqlFile $grantsScript -AsSysdba
PROMPT Configuring Network ACL for CONTAFIN_ORACLE... if ($grantsResult -match "Grant|ACL|Grants Complete") {
Write-LogSuccess "Grants and ACL configured successfully"
-- 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 { 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 = @" $countSql = @"
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
SELECT 'SYNONYM_COUNT:' || COUNT(*) SELECT 'SYNONYM_COUNT:' || COUNT(*)
@@ -477,15 +163,49 @@ EXIT;
Write-Log "Public synonyms for CONTAFIN_ORACLE: $synonymCount" 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 # Summary
# =========================================================================
Write-LogSection "Setup Complete" Write-LogSection "Setup Complete"
Write-LogSuccess "Public synonyms and grants configured!" Write-LogSuccess "Public synonyms and grants configured!"
Write-Log "" Write-Log ""
Write-Log "Summary:" 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 " 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 " Network ACL: Configured (roaupdate.xml)"
Write-Log " UTL packages granted: UTL_INADDR, UTL_TCP, UTL_SMTP, UTL_HTTP"
Write-Log "" Write-Log ""
Write-Log "Next steps:" Write-Log "Next steps:"
Write-Log " 1. Run 05-import-companies.ps1 to import company schemas" Write-Log " 1. Run 05-import-companies.ps1 to import company schemas"