426 lines
11 KiB
Markdown
426 lines
11 KiB
Markdown
# 🚀 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! 🚀**
|