Files
ROMFASTSQL/proxmox/lxc108-oracle/migration
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
..

🚀 SCRIPTURI AUTOMATIZARE MIGRARE ORACLE 10g → 21c XE

⚠️ Nu acesta e directorul pentru un client pe Windows

Scripturile de aici țintesc Oracle 21c XE în Docker pe LXC 108 (sau alt Linux). Ramura .bat creează un PDB ROA cu parola OraclePass123, generează un set minimal de sinonime și nu configurează SERVER_INFO, directoarele ROAUPDATE, joburile de actualizare, ACL-ul de rețea sau sqlnet.ora de compatibilitate pentru Instant Client 10/11. În plus, sys_objects.sql de aici creează AUTH_DETALII, AUTH_SERII și INFO în SYSTEM — cauza cunoscută a erorilor ORA-01653 la actualizare.

Pentru instalare/migrare ROA pe un server Windows la client folosește ../roa-windows-setup/. Comparația completă și arborele de decizie: ../docs/instalare-si-migrare-oracle.md.

Director: proxmox/lxc108-oracle/migration/ Data: 1 Octombrie 2025 Status: ✅ TESTAT ȘI FUNCȚIONAL Versiune: 2.1 - Universal Multi-platform + Export Flexibil


🎯 NOI FUNCȚIONALITĂȚI (Versiunea 2.1)

✨ Master Control Script

  • 00-MASTER-MIGRATION.sh - Orchestrează tot procesul de migrare
  • Ghidare interactivă pas cu pas
  • Confirmare înainte de fiecare acțiune
  • Suport pentru 2 moduri: MIGRARE și INSTALARE NOUĂ
  • Multi-platform support: LXC, VM Linux/Windows, Server fizic

🔄 Schema Dinamică

  • Nu mai ești limitat la MARIUSM_AUTO
  • Poți specifica orice nume de schema pentru cel de-al doilea user
  • Perfect pentru instalări noi cu firme diferite

📦 SYS Objects Pre-Generat

  • Fișier sys_objects.sql gata de import
  • Nu mai trebuie să rulezi export pe Oracle 10g pentru obiecte SYS
  • Include toate cele 9 obiecte custom SYS

🚀 Export Flexibil (NOU în v2.1)

  • 3 moduri de export pentru maxim flexibilitate:
    1. AUTOMAT - Export via SSH către server remote (Linux/Windows)
    2. MANUAL - Tu exporti manual, scriptul preia fișierele
    3. LOCAL - Migrare pe același server (Oracle sursa și destinație, porturi diferite)

📋 LISTA SCRIPTURI

🎯 Script Principal (RECOMANDAT - START AICI!)

Script Descriere Mod
00-MASTER-MIGRATION.sh 🚀 Master control - Orchestrează tot procesul Interactiv

Scripturi Linux/WSL (bash)

Script Descriere Durată Unde rulează
00-install-oracle21c-xe.sh Instalare Oracle 21c XE + Docker ~15 min Proxmox/LXC
01-setup-oracle21c.sh Setup tablespace ROA + useri ~3 min WSL/Linux
02-export-source.sh Export universal (AUTO/MANUAL/LOCAL) ~75 min WSL/Linux
03-transfer-to-oracle21c.sh Transfer fișiere DMP către Oracle 21c ~10 min WSL/Linux
04-import-to-oracle21c.sh Import scheme + SYS objects ~2h WSL/Linux
05-create-synonyms-grants.sh Creare 53 sinonime + 147 grant-uri ~5 min WSL/Linux
06-finalize-migration.sh Recompilare + verificare finală ~10 min WSL/Linux

Scripturi Windows (bat) - DEPRECATED

Script Descriere Status
02-export-oracle10g.bat Export vechi (doar Windows) ⚠️ Înlocuit cu 02-export-source.sh

Scripturi SQL auxiliare

Script Descriere
export-sys-objects.sql Export DDL obiecte SYS custom

🔧 MODURI DE EXPORT (Versiune 2.1)

Scriptul 02-export-source.sh suportă 3 moduri de export pentru maxim flexibilitate:

1️⃣ Export AUTOMAT (SSH)

Când se folosește: Migrare între servere diferite cu SSH disponibil

Configurare necesară:

  • IP/hostname server sursă
  • User SSH cu acces
  • Tip OS (Linux/Windows)

Avantaje:

  • Export complet automat
  • Nu necesită intervenție manuală
  • Verificare automată export

Exemplu scenariu: Oracle 10g @ VM 107 (10.0.20.122) → Oracle 21c @ LXC 108 (10.0.20.201)

2️⃣ Export MANUAL

Când se folosește:

  • Nu ai acces SSH la sursa
  • Vrei să controlezi manual exportul
  • Migrare din medii fără SSH (Windows standalone)

Cum funcționează:

  1. Scriptul îți arată comenzile exacte de export
  2. Tu rulezi manual exportul pe server sursă
  3. Copiezi fișierele DMP în locația indicată
  4. Scriptul verifică și continuă procesul

Avantaje:

  • Control total asupra exportului
  • Nu necesită SSH
  • Funcționează în orice mediu

Exemplu scenariu: Oracle 11g @ Windows fără SSH → Oracle 21c @ Server Linux

3️⃣ Export LOCAL (Același server)

Când se folosește: Upgrade Oracle pe același server (instanțe diferite, porturi diferite)

Configurare necesară:

  • Port Oracle sursă (ex: 1521)
  • Port Oracle destinație (ex: 1522)
  • SID pentru ambele instanțe
  • Password SYSTEM pentru sursă

Avantaje:

  • Export direct fără SSH sau transfer
  • Cel mai rapid mod (fără copiere fișiere)
  • Perfect pentru upgrade in-place

Exemplu scenariu: Oracle 11g XE @ localhost:1521 → Oracle 21c XE @ localhost:1522


🏗️ PLATFORME SUPORTATE

Oracle 21c Destinație:

  • ✅ LXC Proxmox + Docker
  • ✅ VM Linux + Docker
  • ✅ VM Linux native Oracle
  • ✅ VM Windows Oracle
  • ✅ Server fizic (Linux/Windows)

Oracle Sursă (pentru export):

  • ✅ Export AUTOMAT via SSH (Linux/Windows)
  • ✅ Export MANUAL (orice platformă)
  • ✅ Export LOCAL (același server, porturi diferite)

🎯 RULARE PAS CU PAS

Pasul 0: Instalare Oracle 21c XE (pe Proxmox/LXC) - OPȚIONAL

Doar dacă nu ai Oracle 21c XE deja instalat!

cd /mnt/e/proiecte/ROMFASTSQL/proxmox/lxc108-oracle/migration
chmod +x *.sh

# Opțiunea 1: Rulare direct pe Proxmox host
ssh root@10.0.20.201
./00-install-oracle21c-xe.sh

# Opțiunea 2: Rulare din WSL (cu SSH către Proxmox)
./00-install-oracle21c-xe.sh

Ce face:

  • Verifică LXC 108 există
  • Instalează Docker în LXC (dacă nu există)
  • Download Oracle 21c XE image (~2-3 GB)
  • Start container Oracle XE
  • Șterge XEPDB1 automat
  • Creează PDB ROA
  • Întreabă dacă vrei PDB ROA2 (opțional)

Output așteptat:

✅ INSTALARE ORACLE 21c XE COMPLETĂ!
PDB: ROA (XEPDB1 șters)

Timp estimat: ~15-20 minute (include download)


Pasul 1: Setup Oracle 21c XE (pe WSL/Linux)

cd /mnt/e/proiecte/ROMFASTSQL/proxmox/lxc108-oracle/migration
chmod +x *.sh
./01-setup-oracle21c.sh

Ce face:

  • Verifică container oracle-xe
  • Creează PDB ROA
  • Creează tablespace ROA (20GB, autoextend)
  • Creează useri CONTAFIN_ORACLE și MARIUSM_AUTO
  • Acordă system privileges
  • Acordă grant-uri DBMS packages

Output așteptat:

✅ SETUP COMPLET!
PDB ROA creat și configurat
Tablespace: ROA (20GB)
Useri: CONTAFIN_ORACLE, MARIUSM_AUTO

Pasul 2: Export din Oracle 10g (pe Windows VM 107)

D:\migration-scripts\02-export-oracle10g.bat

Ce face:

  • Exportă CONTAFIN_ORACLE (~15 min)
  • Exportă MARIUSM_AUTO (~60 min)
  • Exportă SYS objects DDL (~1 min)

Fișiere generate:

D:\ORACLE_EXPORT\dumps\
├── CONTAFIN_ORACLE_20250930.dmp
├── MARIUSM_AUTO_20250930.dmp
└── SYS_OBJECTS.sql

După export:

  • Copiază fișierele *.dmp în WSL: /mnt/e/ORACLE_EXPORT/dumps/
  • Sau asigură-te că D:\ORACLE_EXPORT este accesibil ca /mnt/e/ORACLE_EXPORT

Pasul 3: Transfer către Oracle 21c (pe WSL/Linux)

./03-transfer-to-oracle21c.sh

Ce face:

  • Verifică fișiere locale în /mnt/e/ORACLE_EXPORT/dumps
  • Transfer fișiere către Proxmox /tmp/oracle-import
  • Copiază fișiere în container Docker oracle-xe

Output așteptat:

✅ TRANSFER COMPLET!
Fișierele sunt în container oracle-xe:/tmp/

Pasul 4: Import în Oracle 21c (pe WSL/Linux)

./04-import-to-oracle21c.sh

Ce face:

  • Import SYS objects custom (~5 min)
  • Grant-uri SYS → CONTAFIN_ORACLE
  • Import CONTAFIN_ORACLE (~15 min)
  • Import MARIUSM_AUTO (~90 min)
  • Verificare obiecte importate

Durată totală: ~2 ore

Output așteptat:

✅ IMPORT COMPLET!
Log-uri:
  /tmp/contafin_import.log
  /tmp/mariusm_import.log

Pasul 5: Creare Sinonime + Grant-uri (pe WSL/Linux)

./05-create-synonyms-grants.sh

Ce face:

  • Crează 53 sinonime publice (SYN_PACK_DREPTURI, etc.)
  • Acordă 147 grant-uri către PUBLIC
  • Verificare sinonime și grant-uri create

Output așteptat:

✅ SINONIME + GRANT-URI COMPLETE!
Sinonime SYN_*: 53
Grant-uri to PUBLIC: 147

Pasul 6: Finalizare Migrare (pe WSL/Linux)

./06-finalize-migration.sh

Ce face:

  • Recompilare obiecte invalide (CONTAFIN_ORACLE + MARIUSM_AUTO)
  • Verificare completă migrare (10 teste)
  • Raport final

Output așteptat:

✅ MIGRARE FINALIZATA CU SUCCES!
Toate verificările PASSED

⚙️ CONFIGURARE

Variabile de modificat (dacă e necesar)

În toate scripturile bash:

ORACLE_PWD="OraclePass123"          # Parola Oracle
PROXMOX_HOST="root@10.0.20.201"     # IP Proxmox
SOURCE_DIR="/mnt/e/ORACLE_EXPORT"   # Director export Windows

În scriptul Windows:

set ORACLE_CONN=system/romfastromfast@10.0.20.122:1521/ROA
set EXPORT_DIR=D:\ORACLE_EXPORT

📊 TIMP TOTAL ESTIMAT

Fază Durată
Setup Oracle 21c 5 min
Export Oracle 10g 60-75 min
Transfer fișiere 10 min
Import scheme 110 min
Sinonime + Grant-uri 5 min
Finalizare 10 min
TOTAL ~3.5 ore

⚠️ TROUBLESHOOTING

Eroare: "Container oracle-xe nu rulează"

ssh root@10.0.20.201
pct exec 108 -- docker start oracle-xe
docker logs -f oracle-xe

Eroare: "PDB ROA nu există"

Rulează din nou 01-setup-oracle21c.sh - scriptul șterge și recreează PDB dacă există.

Eroare: "Fișiere DMP nu găsite"

Verifică:

ls -lh /mnt/e/ORACLE_EXPORT/dumps/*.dmp

Copiază manual dacă e necesar:

cp D:\ORACLE_EXPORT\dumps\*.dmp /mnt/e/ORACLE_EXPORT/dumps/

Verificare log-uri import

ssh root@10.0.20.201
pct exec 108 -- docker exec oracle-xe tail -100 /tmp/contafin_import.log
pct exec 108 -- docker exec oracle-xe tail -100 /tmp/mariusm_import.log

✅ VERIFICARE FINALĂ MANUALĂ

După rularea tuturor scripturilor:

# Conectare la Oracle 21c
ssh root@10.0.20.201
pct exec 108 -- docker exec -it oracle-xe sqlplus CONTAFIN_ORACLE/OraclePass123@localhost:1521/roa

# Teste SQL
SELECT COUNT(*) FROM nom_firme;
SELECT * FROM syn_pack_drepturi WHERE ROWNUM <= 5;
EXIT;

📁 STRUCTURA FINALĂ

După migrare, în Oracle 21c vei avea:

CDB: XE
└── PDB: ROA
    ├── Tablespace: ROA (20GB)
    ├── Users:
    │   ├── CONTAFIN_ORACLE (366 obiecte)
    │   └── MARIUSM_AUTO (3,667 obiecte)
    ├── SYS custom objects: 9
    ├── Public synonyms (SYN_*): 53
    └── Grants to PUBLIC: 147

🔗 DOCUMENTAȚIE COMPLETĂ

Pentru detalii complete, vezi:

  • ../README.md - Documentație principală LXC 108 Oracle
  • ../../README.md - Index Proxmox principal

Succes la migrare! 🚀