Files
ROMFASTSQL/proxmox/vm302-oracle-test/docs/dual-edition-test-plan.md
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

4.5 KiB

Plan de testare dual-edition: Oracle 21c XE + SE

Context

Scripturile roa-windows-setup (din lxc108-oracle/roa-windows-setup/) susțin două ținte:

  • Oracle 21c XE — CDB/PDB, free, limită 12 GB date / 2 GB RAM
  • Oracle 21c Standard Edition — non-CDB, licență, fără limite

Diferențe care contează la setup (vezi roa-windows-setup/README.md → "Architecture Differences"):

Element XE SE
Arhitectură CDB + PDB (XEPDB1) non-CDB (single DB: ROA)
Service name XEPDB1 ROA
ORACLE_HOME ...\dbhomeXE ...\dbhome_1
Datafile dir ...\oradata\XE\XEPDB1 ...\oradata\ROA
Service Windows OracleServiceXE OracleServiceROA
Conectare ca SYS sys/...@XEPDB1 as sysdba sys/...@ROA as sysdba

Aceste diferențe sunt ascunse în config.ps1. Riscul: o ramură de cod care presupune CDB/PDB (de ex. ALTER SESSION SET CONTAINER) va eșua pe SE non-CDB. Acesta e cazul real care a produs erori în producție — vezi issues-se-prod.md.

Status curent

Scenariu Mediu Status
XE — install fresh VM 302 (Windows 11 + XE) OK
XE — uninstall/reinstall VM 302 OK
XE — add company VM 302 OK
SE — install fresh — TODO
SE — uninstall/reinstall — TODO
SE — add company — TODO
SE — în producție server prod Windows EȘUAT (erori — TODO de capturat)

Plan testare SE pe VM 302

Variantă A — reconfigurare VM 302 pentru SE

Risc: pierdem mediul XE deja validat. Necesar snapshot înainte.

# Snapshot XE state
ssh root@10.0.20.201 "qm snapshot 302 xe-validated --description 'Pre-SE-test, XE installation validated'"

Pași pe VM:

  1. Uninstall Oracle XE complet (Programs and Features + manual cleanup)
  2. Install Oracle 21c SE conform roa-windows-setup/docs/00-INSTALL-ORACLE-SE.md
    • Wizard: "Create and configure a single instance database"
    • Global database name: ROA
    • Debifează "Create as Container database"
  3. Copy config.example.ps1 → config.ps1, ajustează valorile pentru SE:
    $ORACLE_HOME = "C:\app\oracle\product\21c\dbhome_1"
    $SERVICE_NAME = "ROA"
    $DATAFILE_DIR = "C:\app\oracle\oradata\ROA"
    
  4. RunAll.cmd și capturează toate erorile
  5. Snapshot SE state:
    ssh root@10.0.20.201 "qm snapshot 302 se-validated --description 'SE installation validated'"
    

Variantă B — clonă dedicată SE (VM 304)

VM 303 este ocupat de Win11-Adina. Prima clonă liberă e 304.

Recomandată dacă vrem să păstrăm ambele medii live pentru regresie.

# Clone VM 302 → 304 (template state, înainte de Oracle XE — TODO: identifică snapshot)
ssh root@10.0.20.201 "qm clone 302 304 --name oracle-test-304-se --full"
ssh root@10.0.20.201 "qm start 304"
# Schimbă IP-ul Windows: 10.0.20.130 → 10.0.20.131 (sau altul liber)

Apoi pași 1-5 din varianta A pe VM 304.

Cost spațiu: clonă full pe local-zfs ≈ 500 GB. Verifică spațiu pvemini înainte (zfs list local-zfs).

Checklist validare per ediție

Pentru fiecare ediție (XE și SE), bifează după rulare reușită:

Install fresh

  • 01-setup-database.ps1 — tablespace ROA + CONTAFIN_ORACLE user
  • 02-create-sys-objects.ps1 — AUTH_PACK, NEWSCHEMA, EXECUTESCRIPTOS, UTL_MAIL
  • 03-import-contafin.ps1 — import CONTAFIN_ORACLE (~344 obiecte)
  • 04-create-synonyms-grants.ps1 — 81 synonyms publice + grants
  • 05-import-companies.ps1 — minim 1 firmă (CAPIDAVATOUR ~3418 obiecte)
  • 08-post-install-config.ps1 — 54 directories, SERVER_INFO, scheduler jobs
  • 07-verify-installation.ps1 — toate verificările OK

Add company

  • 06-add-company.ps1 — adaugă firmă nouă pe instalare existentă

Uninstall

  • 99-uninstall-roa.ps1 — curăță tot, lasă DB-ul gata pentru reinstall

Ce trebuie urmărit specific pentru SE

Locuri unde scripturile pot face presupuneri CDB-only:

  • ALTER PLUGGABLE DATABASE — nu există pe non-CDB
  • ALTER SESSION SET CONTAINER — nu se aplică pe non-CDB
  • Path-uri datafile hardcodate XE\XEPDB1
  • Service name XEPDB1 în connection strings
  • DBMS_AUTO_TASK_ADMIN tweaks (XE 12 GB workaround) — irelevante pe SE

grep -rn "XEPDB1\|XE\b\|SET CONTAINER\|PLUGGABLE DATABASE" lxc108-oracle/roa-windows-setup/scripts lxc108-oracle/roa-windows-setup/sql înainte de testul SE — orice match e candidat la breakaj.


Last Updated: 2026-04-25 Author: Marius Mutu