11 KiB
🚀 SCRIPTURI AUTOMATIZARE MIGRARE ORACLE 10g → 21c XE
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/oracle/migration-scripts
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/oracle/migration-scripts
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:
../MIGRATION-COMPLETE-GUIDE.md- Ghid manual complet../MIGRATION-CONNECTION-DETAILS.md- Detalii conexiuni
Succes la migrare! 🚀