Blocul de instalare/migrare Oracle 21c XE, terminat si validat pe VM 302. Kit de instalare (nou) scripts/build-client-kit.ps1 exporta CONTAFIN_ORACLE si FIRMANOUA de pe LXC 108 (PDB ROA2, nu ROA - ROA e productia ROA_CENTRAL), le aduce local prin cele trei hopuri container -> LXC -> host -> statie, le redenumeste la numele pe care le asteapta scripturile si le impacheteaza cu o copie a directorului roa-windows-setup. Citeste logul expdp si raporteaza cate firme are NOM_FIRME, ca sa nu plece din greseala datele unui client. roa-windows-setup/INSTALEAZA.cmd ruleaza pasii 01..08 fara "set /p", deci merge si prin SSH - RunAll.cmd nu poate fi rulat neinteractiv. Trateaza corect codul 5 de la pasul 03 si se opreste la prima eroare reala. Corectii 01-setup-database.ps1 nu mai scrie SQLNET.RECV_TIMEOUT / SEND_TIMEOUT in sqlnet.ora. Le hardcoda la 30 s, iar fisierul e citit si de impdp: in timpul unui import serverul poate lucra minute fara sa trimita un pachet, clientul murea cu ORA-12609 iar scriptul raporta esec pentru un import care se terminase cu bine pe server. Reprodus si reparat pe VM 302. 01-setup-database.ps1: Step 4c optional (-ResetSystemPassword) care curata EXPIRED(GRACE) pe SYSTEM in CDB root; ALTER PROFILE opreste expirarile viitoare dar nu reseteaza un cont deja intrat in gratie. uninstall-roa.sql: retry la DROP USER dupa KILL SESSION, plus un bloc final de verdict care numara ce a ramas si iese cu ORA-20900 daca baza nu e curata. Pana acum toate sectiunile prindeau exceptiile in WHEN OTHERS si scriptul tiparea "UNINSTALL COMPLETE" chiar si cand un user supravietuise, iar instalarea urmatoare dadea ORA-31684 in lant. 99-uninstall-roa.ps1 propaga codul de iesire. 08-post-install-config.ps1: Step 7b seteaza SMTP_OUT_SERVER si ACL-ul de retea pentru CONTAFIN_ORACLE. UTL_MAIL se instala si primea EXECUTE, adica destul cat sa compileze, dar nu si cat sa trimita. Privilegiul resolve nu accepta interval de porturi (ORA-24244), deci se acorda separat de connect. 07-verify-installation.ps1: sectiune noua care verifica prezenta lui FIRMANOUA.dmp in DMPDIR si o raporteaza ca eroare daca lipseste. Fara el, adaugarea unei firme noi pica in DBMS_DATAPUMP.ADD_FILE peste luni de la instalare, cand nimeni nu mai leaga eroarea de instalare. configure-profile.sql: antetul spune ca e unealta de remediere manuala, nu parte din flux; pas nou la final pentru CDB root. Documentatie README-ul roa-windows-setup descrie acum explicit cele doua scenarii - instalare pe curat si migrare - de unde se iau DMP-urile sablon, si capcana ORA-12609. Handoff-urile de sesiune au fost sterse; ce era durabil in ele a intrat in README-uri si in docs/diagnostic-spatiu-clienti.md. Validare pe VM 302: ciclu complet din kit, instalare pe curat, verificarea finala "[OK] All checks passed!". Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SzF1hf4aFS1tmJWpPMiwGp
219 lines
8.7 KiB
SQL
219 lines
8.7 KiB
SQL
-- ============================================================================
|
|
-- 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...
|
|
|
|
BEGIN
|
|
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY DMPDIR AS ''C:\DMPDIR''';
|
|
DBMS_OUTPUT.PUT_LINE(' Directory DMPDIR created.');
|
|
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
|