# 🚀 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: 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!** ```bash 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) ```bash 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) ```batch 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) ```bash ./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) ```bash ./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) ```bash ./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) ```bash ./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:** ```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:** ```batch 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ă" ```bash 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ă: ```bash ls -lh /mnt/e/ORACLE_EXPORT/dumps/*.dmp ``` Copiază manual dacă e necesar: ```bash cp D:\ORACLE_EXPORT\dumps\*.dmp /mnt/e/ORACLE_EXPORT/dumps/ ``` ### Verificare log-uri import ```bash 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: ```bash # 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! 🚀**