-- ============================================================================ -- SYS GRANTS AND SYNONYMS FOR ROA APPLICATION -- ============================================================================ -- Run AFTER sys-objects.sql and AFTER CONTAFIN_ORACLE import -- These grants enable CONTAFIN_ORACLE packages to work correctly -- -- Usage: -- sqlplus sys/password@service as sysdba @sys-grants.sql -- -- ============================================================================ SET ECHO OFF SET FEEDBACK ON SET SERVEROUTPUT ON SIZE UNLIMITED WHENEVER SQLERROR CONTINUE PROMPT PROMPT ============================================================ PROMPT Installing SYS Grants and Synonyms PROMPT ============================================================ PROMPT -- ============================================================================ -- SECTION 1: GRANTS TO CONTAFIN_ORACLE -- ============================================================================ PROMPT PROMPT [1/6] Granting privileges to CONTAFIN_ORACLE... -- Execute on SYS packages GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.DBMS_SCHEDULER TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.DBMS_LOCK TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.UTL_INADDR TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.UTL_FILE TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.UTL_MAIL TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.UTL_SMTP TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.UTL_TCP TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.DBMS_CRYPTO TO CONTAFIN_ORACLE; -- Proceduri SYS proprii ROA. Grant DIRECT, nu prin rol si nu prin sinonim public: -- CONTAFIN_ORACLE.PACK_UPDATE are drepturi de definitor si apeleaza calificat -- SYS.Updatesqlplus(...), deci rolurile si sinonimele nu se aplica. Fara ele -- PACK_UPDATE ramane INVALID (PLS-00201). Confirmat pe ROA_CENTRAL 2026-08-25. GRANT EXECUTE ON SYS.EXECUTESCRIPTOS TO CONTAFIN_ORACLE; GRANT EXECUTE ON SYS.UPDATESQLPLUS TO CONTAFIN_ORACLE; -- Directory privileges GRANT CREATE ANY DIRECTORY TO CONTAFIN_ORACLE; GRANT DROP ANY DIRECTORY TO CONTAFIN_ORACLE; -- Scheduler privileges GRANT CREATE JOB TO CONTAFIN_ORACLE; GRANT CREATE EXTERNAL JOB TO CONTAFIN_ORACLE; GRANT MANAGE SCHEDULER TO CONTAFIN_ORACLE; PROMPT Grants to CONTAFIN_ORACLE complete. -- ============================================================================ -- SECTION 2: PUBLIC GRANTS -- ============================================================================ PROMPT PROMPT [2/6] Granting public privileges... -- UTL packages for public use GRANT EXECUTE ON SYS.UTL_FILE TO PUBLIC; PROMPT Public grants complete. -- ============================================================================ -- SECTION 3: SYS PUBLIC SYNONYMS -- ============================================================================ PROMPT PROMPT [3/6] Creating SYS public synonyms... -- Synonyms for SYS procedures BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM SYN_NEWSCHEMA'; EXCEPTION WHEN OTHERS THEN NULL; END; / BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM SYN_NEWSCHEMAJOB'; EXCEPTION WHEN OTHERS THEN NULL; END; / BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM EXECUTESCRIPTOS'; EXCEPTION WHEN OTHERS THEN NULL; END; / BEGIN EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM SYN_PINFO'; EXCEPTION WHEN OTHERS THEN NULL; END; / CREATE PUBLIC SYNONYM SYN_NEWSCHEMA FOR SYS.NEWSCHEMA; CREATE PUBLIC SYNONYM SYN_NEWSCHEMAJOB FOR SYS.NEWSCHEMAJOB; CREATE PUBLIC SYNONYM EXECUTESCRIPTOS FOR SYS.EXECUTESCRIPTOS; CREATE PUBLIC SYNONYM SYN_PINFO FOR SYS.PINFO; -- Grants on synonyms GRANT EXECUTE ON SYN_NEWSCHEMA TO PUBLIC; GRANT EXECUTE ON SYN_NEWSCHEMAJOB TO PUBLIC; GRANT EXECUTE ON EXECUTESCRIPTOS TO PUBLIC; GRANT EXECUTE ON SYN_PINFO TO PUBLIC; PROMPT SYS public synonyms complete. -- ============================================================================ -- SECTION 4: DIRECTORY DMPDIR -- ============================================================================ PROMPT PROMPT [4/6] Creating DMPDIR directory... -- DMPDIR e creat de 01-setup-database.ps1, pe calea data cu -DmpDir. Aici doar -- se acorda drepturile; calea NU se atinge. -- -- Pana pe 2026-08-25 aici era un CREATE OR REPLACE DIRECTORY ... 'C:\DMPDIR' -- neconditionat. Pasul 04 ruleaza dupa 03, deci importul contafin-ului reusea -- (DMPDIR era inca unde il pusese 01), iar apoi 04 muta tacut obiectul inapoi pe -- C:\DMPDIR. Esecul aparea abia in faza 2, la importul firmelor, ca -- ORA-39070 / ORA-29283 - ore mai tarziu si fara nicio legatura vizibila cu -- pasul care il provocase. Vezi docs/lectii-conectare-client-oracle.md. DECLARE v_count NUMBER; v_path VARCHAR2(4000); BEGIN SELECT COUNT(*) INTO v_count FROM dba_directories WHERE directory_name = 'DMPDIR'; IF v_count = 0 THEN EXECUTE IMMEDIATE 'CREATE DIRECTORY DMPDIR AS ''C:\DMPDIR'''; DBMS_OUTPUT.PUT_LINE(' Directory DMPDIR created (C:\DMPDIR).'); DBMS_OUTPUT.PUT_LINE(' ATENTIE: 01-setup-database.ps1 nu a rulat sau a esuat.'); ELSE SELECT directory_path INTO v_path FROM dba_directories WHERE directory_name = 'DMPDIR'; DBMS_OUTPUT.PUT_LINE(' Directory DMPDIR exista deja (' || v_path || ') - calea se pastreaza.'); END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(' Directory DMPDIR: ' || SQLERRM); END; / GRANT READ, WRITE ON DIRECTORY DMPDIR TO PUBLIC; -- ============================================================================ -- SECTION 5: GRANTURI DE DICTIONAR PENTRU PACK_DIAG_SPATIU -- ============================================================================ -- Consolideaza scripturile de livrare din repo-ul COMUN: -- sys_2026_08_03_05_DIAG_SPATIU_GRANT - diagnosticul de baza -- sys_2026_08_03_07_DIAG_SPATIU_GRANT2 - sectiunea XE (plafon editie) -- sys_2026_08_06_07_DIAG_SPATIU_GRANT3 - provenienta segmentelor LOB/index -- -- CONTAFIN_ORACLE.PACK_DIAG_SPATIU are drepturi de definitor, iar rolul DBA NU se -- aplica in pachetele cu drepturi de definitor. Referintele statice la dba_*/v$* -- au nevoie de grant DIRECT catre user, altfel pachetul ramane INVALID si jobul -- DIAGSPATIU_ZILNIC nu ruleaza. -- -- ATENTIE la migrarea unui client existent: tabela de versiuni a lui PACK_MIGRARE -- traieste in CONTAFIN_ORACLE si vine cu DMP-ul. Baza noua va raporta scripturile -- sys_* de mai sus drept "deja aplicate", iar ROAACTUALIZARI le va sari - desi in -- SYS nu exista nimic. De aceea granturile se aplica de aici, la instalare, nu -- prin actualizator. -- -- Vederile absente pe versiunea/editia curenta sunt ignorate (ORA-00942). -- ============================================================================ PROMPT PROMPT [5/6] Granting data dictionary reads to CONTAFIN_ORACLE (PACK_DIAG_SPATIU)... DECLARE TYPE t_lista IS TABLE OF VARCHAR2(30); laObiecte t_lista := t_lista( -- sys_2026_08_03_05_DIAG_SPATIU_GRANT 'DBA_DATA_FILES', 'DBA_FREE_SPACE', 'DBA_TEMP_FILES', 'DBA_SEGMENTS', 'DBA_TAB_STATS_HISTORY', 'DBA_SCHEDULER_JOB_RUN_DETAILS', 'DBA_RECYCLEBIN', 'V_$INSTANCE', 'V_$DATABASE', 'V_$PARAMETER', 'V_$TRANSACTION', 'V_$TEMP_SPACE_HEADER', 'V_$FLASH_RECOVERY_AREA_USAGE', -- sys_2026_08_03_07_DIAG_SPATIU_GRANT2 'DBA_TABLESPACES', 'V_$VERSION', -- sys_2026_08_06_07_DIAG_SPATIU_GRANT3 'DBA_LOBS', 'DBA_LOB_PARTITIONS', 'DBA_INDEXES' ); lnAcordate PLS_INTEGER := 0; lnSarite PLS_INTEGER := 0; BEGIN FOR i IN 1 .. laObiecte.COUNT LOOP BEGIN EXECUTE IMMEDIATE 'GRANT SELECT ON SYS.' || laObiecte(i) || ' TO CONTAFIN_ORACLE'; lnAcordate := lnAcordate + 1; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -942 THEN lnSarite := lnSarite + 1; DBMS_OUTPUT.PUT_LINE(' SKIP (absent pe aceasta versiune): ' || laObiecte(i)); ELSE RAISE; END IF; END; END LOOP; DBMS_OUTPUT.PUT_LINE(' Granturi de dictionar acordate: ' || lnAcordate || ' / ' || laObiecte.COUNT || ' (sarite: ' || lnSarite || ')'); END; / PROMPT Dictionary grants complete. -- ============================================================================ -- SECTION 6: RECOMPILARE CONTAFIN_ORACLE -- ============================================================================ -- Obiectele venite cu Data Pump raman INVALID: la momentul importului granturile -- de mai sus inca nu erau puse, de unde ORA-39082 "created with compilation -- warnings" pe SENDEMAIL, EMAIL*, PACK_UPDATE, PACK_UTILS. Oracle le-ar recompila -- abia la primul apel, asa ca fara pasul asta 07-verify-installation raporteaza -- obiecte invalide la fiecare instalare curata. -- Verificat pe VM 302 (2026-08-25): 2 invalide inainte, 0 dupa. -- ============================================================================ PROMPT PROMPT [6/6] Recompiling CONTAFIN_ORACLE... BEGIN SYS.UTL_RECOMP.RECOMP_SERIAL('CONTAFIN_ORACLE'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(' Recompilare: ' || SQLERRM); END; / DECLARE lnInvalid PLS_INTEGER; BEGIN SELECT COUNT(*) INTO lnInvalid FROM dba_objects WHERE owner = 'CONTAFIN_ORACLE' AND status = 'INVALID'; DBMS_OUTPUT.PUT_LINE(' Obiecte INVALID ramase in CONTAFIN_ORACLE: ' || lnInvalid); END; / PROMPT Recompile complete. PROMPT PROMPT ============================================================ PROMPT SYS Grants and Synonyms Installation Complete PROMPT ============================================================ PROMPT