Files
ROMFASTSQL/oracle/migration-scripts/README.md
2025-10-01 16:08:13 +03:00

11 KiB
Raw Blame History

🚀 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!

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_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:

  • ../MIGRATION-COMPLETE-GUIDE.md - Ghid manual complet
  • ../MIGRATION-CONNECTION-DETAILS.md - Detalii conexiuni

Succes la migrare! 🚀