oracle migrare

This commit is contained in:
Marius
2025-10-01 16:08:13 +03:00
parent b414b3c338
commit 02ef8775ab
19 changed files with 4832 additions and 1864 deletions

View File

@@ -0,0 +1,425 @@
# 🚀 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! 🚀**