From afb8266407e9dca0b61a27edd25e62277be67aa7 Mon Sep 17 00:00:00 2001 From: Marius Date: Tue, 25 Aug 2026 15:46:28 +0300 Subject: [PATCH] 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) Claude-Session: https://claude.ai/code/session_01SzF1hf4aFS1tmJWpPMiwGp --- CLAUDE.md | 1 + proxmox/README.md | 2 + proxmox/lxc108-oracle/README.md | 5 + .../docs/instalare-si-migrare-oracle.md | 218 ++++ proxmox/lxc108-oracle/migration/README.md | 14 + .../lxc108-oracle/roa-windows-setup/README.md | 90 +- .../scripts/04-create-synonyms-grants.ps1 | 507 ++++---- .../scripts/07-verify-installation.ps1 | 1081 +++++++++-------- .../roa-windows-setup/sql/sys-grants.sql | 74 +- .../sql/sys-updates/README.md | 13 +- proxmox/vm302-oracle-test/README.md | 5 + .../docs/dual-edition-test-plan.md | 12 +- .../vm302-oracle-test/docs/issues-se-prod.md | 2 +- 13 files changed, 1267 insertions(+), 757 deletions(-) create mode 100644 proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md diff --git a/CLAUDE.md b/CLAUDE.md index bed27d6..0b1acc4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -45,6 +45,7 @@ input/ # Oracle DMP files for import - **Chatbot architecture**: `proxmox/lxc104-flowise/docs/prd.md` - **Docker Sandboxes (sbx) — agenți AI izolați**: `proxmox/lxc102-docker/README.md` - **Disaster recovery**: `proxmox/vm109-windows-dr/README.md` +- **Instalare/migrare Oracle — care director se folosește**: `proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md` - **ROA Windows setup scripts (XE/SE 21c)**: `proxmox/lxc108-oracle/roa-windows-setup/README.md` - **VM 302 test environment for ROA setup**: `proxmox/vm302-oracle-test/README.md` - **Diagnostic spațiu Oracle la clienți (job zilnic + emailuri)**: `docs/diagnostic-spatiu-clienti.md` diff --git a/proxmox/README.md b/proxmox/README.md index 8e102c0..a4ebdbf 100644 --- a/proxmox/README.md +++ b/proxmox/README.md @@ -49,6 +49,7 @@ proxmox/ │ ├── clienti/ # Cazuri concrete clienți (depanare/recreare DB) │ │ ├── README.md # Index cazuri │ │ └── oracle-xe-21c/ # ROMPETROL ENERGY: recreare PDB după ORA-12954 +│ ├── docs/ # Ghid rutare instalare vs. migrare Oracle │ ├── roa-windows-setup/ # Scripturi setup ROA pe Windows + Oracle 21c │ └── sql/ │ ├── roa/ # SQL-uri Oracle 10g compatibilitate @@ -482,6 +483,7 @@ ssh root@10.0.20.201 "qm snapshot 302 pre-test --description 'Before ROA test'" - **Plan testare dual-edition** → `vm302-oracle-test/docs/dual-edition-test-plan.md` - **Erori prod Oracle SE (TODO)** → `vm302-oracle-test/docs/issues-se-prod.md` - **Scripturi setup ROA Windows** → `lxc108-oracle/roa-windows-setup/` +- **Care director de instalare/migrare Oracle se folosește** → `lxc108-oracle/docs/instalare-si-migrare-oracle.md` ### Windows VM 201 - **Reînnoiesc certificate SSL** → `vm201-windows/docs/vm201-certificat-letsencrypt-iis.md` diff --git a/proxmox/lxc108-oracle/README.md b/proxmox/lxc108-oracle/README.md index a09d33c..850103c 100644 --- a/proxmox/lxc108-oracle/README.md +++ b/proxmox/lxc108-oracle/README.md @@ -1,5 +1,10 @@ # Oracle Database XE - LXC 108 (Proxmox) +> **Scripturi de instalare / migrare Oracle pentru ROA** — trei directoare, ghid de rutare +> în [`docs/instalare-si-migrare-oracle.md`](docs/instalare-si-migrare-oracle.md): +> `roa-windows-setup/` (client pe Windows), `migration/` (Oracle în Docker pe acest LXC), +> `new-roa-oracle-server/` (arhivă istorică, nu se rulează). + ## 📌 Informații Container LXC - **VMID:** 108 diff --git a/proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md b/proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md new file mode 100644 index 0000000..52f16f0 --- /dev/null +++ b/proxmox/lxc108-oracle/docs/instalare-si-migrare-oracle.md @@ -0,0 +1,218 @@ +# Instalare și migrare Oracle pentru ROA — care director, pentru ce + +În `proxmox/lxc108-oracle/` există **trei** directoare cu scripturi de instalare/migrare, iar +numele lor nu spun de la sine care se potrivește. Nota asta e ghidul de rutare: ce livrează +fiecare, ce **nu** livrează și cum se aleg între ele. + +| Director | Ce e | Stare | +|---|---|---| +| [`roa-windows-setup/`](../roa-windows-setup/README.md) | instalare ROA completă pe **Windows** + Oracle 21c (XE sau SE) | activ, validat pe VM 302 (XE) | +| [`migration/`](../migration/README.md) | migrare Oracle 10g → 21c XE cu Oracle **în Docker pe LXC 108** | activ pentru infrastructura internă | +| [`new-roa-oracle-server/`](../new-roa-oracle-server/) | arhiva istorică din era Oracle 10g | **doar referință**, nu se rulează | + +--- + +## 1. Arbore de decizie + +``` +Baza Oracle ajunge pe un server Windows la client? +├── DA → roa-windows-setup/ (PowerShell nativ, fără WSL) +└── NU → baza ajunge în Docker pe LXC 108 / alt Linux? + ├── DA → migration/ (bash, orchestrat de 00-MASTER-MIGRATION.sh) + └── NU → niciunul; descrie scenariul înainte de a improviza +``` + +**Cazul tipic la client** — server vechi cu Oracle XE 11 (sau 10g), se mută +`CONTAFIN_ORACLE` + schemele de firme pe un server nou cu Oracle 21c XE, tot Windows: +→ **`roa-windows-setup/`**, plus pasul de export descris la §4. + +--- + +## 2. Ce livrează fiecare + +### `roa-windows-setup/` — instalare ROA, nu doar bază de date + +Diferența esențială: `migration/` îți lasă o bază cu schemele înăuntru; +`roa-windows-setup/` îți lasă o **instalare ROA funcțională**. + +| # | Script | Ce face | +|---|---|---| +| 01 | `01-setup-database.ps1` | tablespace `ROA`, profil, user `CONTAFIN_ORACLE`, `sqlnet.ora` cu `ALLOWED_LOGON_VERSION=8` | +| 02 | `02-create-sys-objects.ps1` | obiectele SYS din `sql/sys-objects.sql` (AUTH_PACK, AUTH_DETALII, AUTH_SERII, VAUTH_SERII, INFO, pINFO, SEQ_AUTH_SERII, EXECUTESCRIPTOS, NEWSCHEMA, NEWSCHEMAJOB, UPDATESQLPLUS) | +| 03 | `03-import-contafin.ps1` | import `CONTAFIN_ORACLE` (parfile: `par/import-contafin.par`) | +| 04 | `04-create-synonyms-grants.ps1` | `synonyms-public.sql` + `grants-public.sql` + **`sys-grants.sql`** (granturi SYS, sinonime SYS, DMPDIR, granturi de dicționar pentru `PACK_DIAG_SPATIU`), context `SESIUNE`, ACL de rețea | +| 05 | `05-import-companies.ps1` | import în lot al schemelor de firme (parfile: `par/import-company.par`) | +| 06 | `06-add-company.ps1` | adaugă o firmă nouă pe un server deja instalat (opțional) | +| 08 | `08-post-install-config.ps1` | 54 directoare `ROAUPDATE` (fizice + obiecte `DIRECTORY`), `SERVER_INFO`, `AUTH_DETALII` (Customer ID), joburile `UPDATEROA_ZILNIC` / `UPDATERTVAI_ZILNIC` / `SYSINFO_PURJARE_ZILNIC` | +| 07 | `07-verify-installation.ps1` | raport de verificare: versiune/ediție, tablespace, obiecte, obiecte invalide, sinonime, **granturi de dicționar**, firme din `NOM_FIRME` vs. scheme reale, ACL | +| 99 | `99-uninstall-roa.ps1` | curățare completă, pentru re-testare | + +`RunAll.cmd` le rulează în ordinea `01 → 02 → 03 → 04 → 05 → 08 → 07`. +`Run.cmd