Files
ROMFASTSQL/proxmox/lxc108-oracle/roa-windows-setup/sql/sys-grants.sql
Marius afb8266407 feat(oracle): granturi dictionar PACK_DIAG_SPATIU + sys-grants.sql legat in flux
Trei probleme gasite pregatind migrarea unui client de pe Oracle XE 11 pe XE 21c.

1. sys-grants.sql nu era rulat de niciun script PowerShell. Era referit doar din
   run-all-sys.sql, care se lanseaza manual. Pe orice instalare facuta cu
   RunAll.cmd lipseau sinonimele SYS (SYN_NEWSCHEMA, SYN_NEWSCHEMAJOB,
   EXECUTESCRIPTOS, SYN_PINFO), DMPDIR si granturile pe DBMS_SCHEDULER / UTL_* /
   DBMS_CRYPTO catre CONTAFIN_ORACLE. Legat ca STEP 3 in 04-create-synonyms-grants,
   dupa import - unde propriul header al fisierului spune ca trebuie rulat.

2. Granturile de dictionar cerute de PACK_DIAG_SPATIU lipseau complet. Consolidez
   sys_2026_08_03_05, sys_2026_08_03_07 si sys_2026_08_06_07 in sectiunea [5/5]
   din sys-grants.sql: SELECT direct pe 18 vederi dba_*/v$*, idempotent, cu
   ORA-00942 tratat pentru vederile absente pe alte editii/versiuni. Grantul prin
   rolul DBA nu ajunge - rolurile nu se aplica in pachetele cu drepturi de
   definitor, iar PACK_DIAG_SPATIU e exact asa; fara ele ramane INVALID si
   DIAGSPATIU_ZILNIC nu ruleaza.

3. Capcana la migrari: tabela de versiuni a lui PACK_MIGRARE traieste in
   CONTAFIN_ORACLE si vine cu DMP-ul, deci baza noua raporteaza scripturile sys_*
   drept aplicate si ROAACTUALIZARI le sare, desi in SYS nu exista nimic. De aceea
   obiectele si granturile SYS se pun la instalare, nu prin actualizator.
   Documentat in sys-updates/README.md si in ghidul nou.

07-verify-installation raporteaza nominal care dintre cele 18 granturi lipsesc.

Documentatie: docs/instalare-si-migrare-oracle.md - arbore de decizie intre
roa-windows-setup/ (client pe Windows), migration/ (Oracle in Docker pe LXC 108) si
new-roa-oracle-server/ (arhiva). Include de ce migration/ nu se foloseste la un
client Windows: creeaza PDB ROA cu OraclePass123, sinonime minimale, fara
SERVER_INFO / ROAUPDATE / ACL / sqlnet.ora, iar sys_objects.sql de acolo creeaza
INFO in SYSTEM - cauza cunoscuta a ORA-01653 la actualizare. Plus comenzile de
export din XE 11 / 10g si plafonul XE de 12 GB.

Corectat pe drum: dual-edition-test-plan si issues-se-prod indicau clonarea
VM 302 -> 303 pentru testul SE, dar 303 e ocupat de Win11-Adina. Mutat pe 304.

NETESTAT pe baza reala - VM 302 e oprit. Scripturile trec doar parse-check
PowerShell.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SzF1hf4aFS1tmJWpPMiwGp
2026-08-25 15:46:28 +03:00

178 lines
7.0 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/5] 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_SMTP TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.UTL_TCP TO CONTAFIN_ORACLE;
GRANT EXECUTE ON SYS.DBMS_CRYPTO 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/5] 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/5] 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/5] 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/5] 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.
PROMPT
PROMPT ============================================================
PROMPT SYS Grants and Synonyms Installation Complete
PROMPT ============================================================
PROMPT