oracle migrare
This commit is contained in:
425
oracle/migration-scripts/README.md
Normal file
425
oracle/migration-scripts/README.md
Normal 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! 🚀**
|
||||
Reference in New Issue
Block a user