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
12 KiB
🚀 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
.batcreează un PDBROAcu parolaOraclePass123, generează un set minimal de sinonime și nu configureazăSERVER_INFO, directoareleROAUPDATE, joburile de actualizare, ACL-ul de rețea sausqlnet.orade compatibilitate pentru Instant Client 10/11. În plus,sys_objects.sqlde aici creeazăAUTH_DETALII,AUTH_SERIIșiINFOînSYSTEM— cauza cunoscută a erorilorORA-01653la 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:
- AUTOMAT - Export via SSH către server remote (Linux/Windows)
- MANUAL - Tu exporti manual, scriptul preia fișierele
- 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ă:
- Scriptul îți arată comenzile exacte de export
- Tu rulezi manual exportul pe server sursă
- Copiezi fișierele DMP în locația indicată
- 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_EXPORTeste 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! 🚀