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
This commit is contained in:
@@ -24,7 +24,7 @@ PROMPT
|
||||
-- SECTION 1: GRANTS TO CONTAFIN_ORACLE
|
||||
-- ============================================================================
|
||||
PROMPT
|
||||
PROMPT [1/4] Granting privileges to CONTAFIN_ORACLE...
|
||||
PROMPT [1/5] Granting privileges to CONTAFIN_ORACLE...
|
||||
|
||||
-- Execute on SYS packages
|
||||
GRANT EXECUTE ON SYS.AUTH_PACK TO CONTAFIN_ORACLE;
|
||||
@@ -51,7 +51,7 @@ PROMPT Grants to CONTAFIN_ORACLE complete.
|
||||
-- SECTION 2: PUBLIC GRANTS
|
||||
-- ============================================================================
|
||||
PROMPT
|
||||
PROMPT [2/4] Granting public privileges...
|
||||
PROMPT [2/5] Granting public privileges...
|
||||
|
||||
-- UTL packages for public use
|
||||
GRANT EXECUTE ON SYS.UTL_FILE TO PUBLIC;
|
||||
@@ -62,7 +62,7 @@ PROMPT Public grants complete.
|
||||
-- SECTION 3: SYS PUBLIC SYNONYMS
|
||||
-- ============================================================================
|
||||
PROMPT
|
||||
PROMPT [3/4] Creating SYS public synonyms...
|
||||
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;
|
||||
@@ -91,7 +91,7 @@ PROMPT SYS public synonyms complete.
|
||||
-- SECTION 4: DIRECTORY DMPDIR
|
||||
-- ============================================================================
|
||||
PROMPT
|
||||
PROMPT [4/4] Creating DMPDIR directory...
|
||||
PROMPT [4/5] Creating DMPDIR directory...
|
||||
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY DMPDIR AS ''C:\DMPDIR''';
|
||||
@@ -104,6 +104,72 @@ 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
|
||||
|
||||
@@ -10,10 +10,21 @@ scripts (`sys_2006_*.sql` through `sys_2026_*.sql`) here.
|
||||
|
||||
**Initial setup order:**
|
||||
1. `sys-objects.sql` - Creates all SYS objects (tables, packages, procedures, views)
|
||||
— rulat de `scripts/02-create-sys-objects.ps1`
|
||||
2. Import `CONTAFIN_ORACLE.dmp` - Application schema
|
||||
3. `sys-grants.sql` - Grants and public synonyms
|
||||
— rulat de `scripts/03-import-contafin.ps1`
|
||||
3. `sys-grants.sql` - Grants, public synonyms, DMPDIR și granturile de dicționar cerute de
|
||||
`PACK_DIAG_SPATIU` (secțiunea `[5/5]`, consolidând `sys_2026_08_03_05`,
|
||||
`sys_2026_08_03_07` și `sys_2026_08_06_07`)
|
||||
— rulat de `scripts/04-create-synonyms-grants.ps1`, după import
|
||||
4. `sys-updates/*.sql` - (Optional) Post-install patches
|
||||
|
||||
> **Atenție la migrări.** Tabela de versiuni a lui `PACK_MIGRARE` trăiește în
|
||||
> `CONTAFIN_ORACLE` și vine cu DMP-ul, deci pe baza nouă `ROAACTUALIZARI` va considera
|
||||
> scripturile `sys_*` deja aplicate și le va sări — deși în `SYS` nu există nimic. Orice
|
||||
> `sys_*` necesar unei instalări curate trebuie consolidat în pașii 1-3 de mai sus, nu
|
||||
> lăsat pe seama actualizatorului.
|
||||
|
||||
## When to Use This Folder
|
||||
|
||||
Place scripts here when you need to:
|
||||
|
||||
Reference in New Issue
Block a user