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,382 @@
# 🔄 UPGRADE ORACLE IN-PLACE - Ghid Complet
**Scenariu**: Upgrade Oracle pe același calculator (Oracle vechi → Oracle 21c XE)
**Data**: 1 Octombrie 2025
**Versiune scripturi**: 2.1+
---
## 🎯 Ce este UPGRADE IN-PLACE?
Upgrade in-place înseamnă:
- Oracle vechi și Oracle 21c pe **același computer**
- **Export DMP** din Oracle vechi
- **Oprire** Oracle vechi
- **Instalare** Oracle 21c XE (pe același port 1521)
- **Import DMP** în Oracle 21c
---
## 🚀 QUICK START
### Pasul 1: Pornire ghidare automată
```bash
cd /mnt/e/proiecte/ROMFASTSQL/oracle/migration-scripts
chmod +x *.sh
./00-MASTER-MIGRATION.sh
```
**La întrebări răspunde:**
- Mod: **MIGRARE** (1)
- Export: **UPGRADE IN-PLACE** (4)
Scriptul te va ghida complet prin toți pașii!
---
## 📋 PAȘII DETALIAȚI
### PASUL 1/5: Export DMP din Oracle vechi
**Unde execuți**: Pe computerul unde e Oracle vechi (Windows/Linux)
**Windows** - Deschide Command Prompt CA ADMINISTRATOR:
```cmd
REM Creează director pentru export
cd /d D:\oracle-export
mkdir %CD% 2>nul
REM Export CONTAFIN_ORACLE
exp system/PAROLA@localhost:1521/XE ^
FILE=CONTAFIN_ORACLE_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^
OWNER=CONTAFIN_ORACLE ^
LOG=contafin_export.log ^
CONSISTENT=Y
REM Export schema secundară (dacă ai)
exp system/PAROLA@localhost:1521/XE ^
FILE=MARIUSM_AUTO_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.dmp ^
OWNER=MARIUSM_AUTO ^
LOG=mariusm_export.log ^
CONSISTENT=Y
REM Verificare fișiere
dir *.dmp
```
**Linux** - Deschide terminal:
```bash
# Creează director pentru export
mkdir -p /tmp/oracle-export
cd /tmp/oracle-export
# Export CONTAFIN_ORACLE
exp system/PAROLA@localhost:1521/XE \
FILE=CONTAFIN_ORACLE_$(date +%Y%m%d).dmp \
OWNER=CONTAFIN_ORACLE \
LOG=contafin_export.log \
CONSISTENT=Y
# Export schema secundară (dacă ai)
exp system/PAROLA@localhost:1521/XE \
FILE=MARIUSM_AUTO_$(date +%Y%m%d).dmp \
OWNER=MARIUSM_AUTO \
LOG=mariusm_export.log \
CONSISTENT=Y
# Verificare fișiere
ls -lh *.dmp
```
**Verificare**:
- Fișierele DMP trebuie să fie > 0 bytes
- Citește log-urile pentru erori
- Notează locația fișierelor DMP
---
### PASUL 2/5: Oprire Oracle vechi
**⚠️ IMPORTANT**: Fă backup la fișierele DMP înainte să oprești Oracle!
**Windows** - Command Prompt CA ADMINISTRATOR:
```cmd
REM Oprire servicii Oracle vechi
net stop OracleServiceXE
net stop OracleXETNSListener
REM Opțional: Dezactivează pornirea automată
sc config OracleServiceXE start= disabled
sc config OracleXETNSListener start= disabled
REM Verificare
sc query OracleServiceXE
```
**Output așteptat**: `STATE: STOPPED`
**Linux** - Terminal:
```bash
# Oprire serviciu Oracle vechi
sudo systemctl stop oracle-xe
sudo systemctl disable oracle-xe
# Verificare
sudo systemctl status oracle-xe
```
**Output așteptat**: `Active: inactive (dead)`
---
### PASUL 3/5: Instalare Oracle 21c XE
**Windows**:
1. Download Oracle XE 21c:
- https://www.oracle.com/database/technologies/xe-downloads.html
- Fișier: `OracleXE213_Win64.zip` (~2.5 GB)
2. Extrage și rulează `setup.exe`
3. Instalare:
- Port: **1521** (același ca Oracle vechi)
- Password SYS: `OraclePass123` (sau custom)
- Configurare automată
4. Verificare instalare:
```cmd
sqlplus system/OraclePass123@localhost:1521/XE
SQL> SELECT * FROM v$version;
```
**Linux** (LXC/Docker):
```bash
# Dacă folosești LXC + Docker (recomandat)
./00-install-oracle21c-xe.sh
# SAU instalare manuală Oracle XE 21c pe Linux
# Vezi: https://docs.oracle.com/en/database/oracle/oracle-database/21/xeinl/
```
---
### PASUL 4/5: Setup + Import
**Continuă cu master scriptul** (dacă l-ai folosit) SAU rulează manual:
```bash
# Setup tablespaces și useri
./01-setup-oracle21c.sh
# Import scheme
# (asigură-te că DMP-urile sunt accesibile din WSL/Linux)
./04-import-to-oracle21c.sh
# Creare sinonime
./05-create-synonyms-grants.sh
# Finalizare
./06-finalize-migration.sh
```
**Dacă DMP-urile sunt pe Windows și rulezi scripturile din WSL**:
```bash
# Montează directorul Windows în WSL
ln -s /mnt/d/oracle-export /tmp/oracle-import
# SAU copiază fișierele
cp /mnt/d/oracle-export/*.dmp /tmp/oracle-import/
```
---
### PASUL 5/5: Verificare finală
**Testare conexiune**:
```bash
sqlplus CONTAFIN_ORACLE/OraclePass123@localhost:1521/roa
```
**Verificare obiecte**:
```sql
-- Număr tabele
SELECT COUNT(*) FROM user_tables;
-- Obiecte invalide (ar trebui 0)
SELECT COUNT(*) FROM user_objects WHERE status = 'INVALID';
-- Verificare date
SELECT COUNT(*) FROM <tabel_important>;
```
**Testare aplicație**:
- Pornește aplicația
- Verifică login
- Testează operații CRUD
- Verifică rapoarte
---
## 🔧 TROUBLESHOOTING
### Problema: "ORA-01017: invalid username/password"
**Soluție**:
```sql
-- Conectează-te ca SYS
sqlplus / as sysdba
-- Resetează parola
ALTER USER CONTAFIN_ORACLE IDENTIFIED BY OraclePass123;
```
### Problema: "Export foarte mare/lent"
**Soluție**: Export selective (doar ce ai nevoie)
```cmd
exp system/pass@localhost:1521/XE ^
TABLES=(CONTAFIN_ORACLE.FACTURI,CONTAFIN_ORACLE.CLIENTI) ^
FILE=export_partial.dmp
```
### Problema: "Import cu erori"
**Verificare**:
```bash
# Citește log-ul de import
cat /tmp/oracle-import/contafin_import.log | grep -i "error"
# Majoritatea erorilor de "object already exists" sunt OK
# Caută erori de tip: ORA-00942, ORA-01555, etc.
```
### Problema: "Nu găsesc fișierul DMP în WSL"
**Soluție**:
```bash
# Windows D:\ e montat în WSL ca /mnt/d/
ls /mnt/d/oracle-export/
# Copiază în locație accesibilă
cp /mnt/d/oracle-export/*.dmp /tmp/oracle-import/
```
---
## ⚡ QUICK COMMANDS
### Oprire/Pornire Oracle 21c
**Windows**:
```cmd
net stop OracleServiceXE
net start OracleServiceXE
```
**Linux**:
```bash
sudo systemctl stop oracle-xe
sudo systemctl start oracle-xe
```
### Conectare rapidă
```bash
# SYS
sqlplus / as sysdba
sqlplus sys/OraclePass123@localhost:1521/roa as sysdba
# User normal
sqlplus CONTAFIN_ORACLE/OraclePass123@localhost:1521/roa
```
### Verificare status
```sql
-- PDB-uri active
SELECT name, open_mode FROM v$pdbs;
-- Tablespaces
SELECT tablespace_name, bytes/1024/1024 MB FROM dba_data_files;
-- Useri
SELECT username, account_status FROM dba_users WHERE username LIKE '%CONTAFIN%';
```
---
## 📊 TIMELINE ESTIMAT
| Pas | Activitate | Timp estimat |
|-----|------------|--------------|
| 1 | Export DMP | 15-90 min (depinde de mărimea BD) |
| 2 | Oprire Oracle vechi | 1 min |
| 3 | Instalare Oracle 21c | 15-30 min |
| 4 | Setup + Import | 30-120 min |
| 5 | Verificare | 15 min |
| **TOTAL** | | **1.5 - 4 ore** |
---
## ✅ CHECKLIST FINAL
- [ ] Export DMP complet (fișiere > 0 bytes)
- [ ] Oracle vechi oprit și dezactivat
- [ ] Oracle 21c XE instalat și pornit
- [ ] Setup tablespace ROA complet
- [ ] Import CONTAFIN_ORACLE success
- [ ] Import schema secundară success
- [ ] Sinonime create (53 bucăți)
- [ ] Grant-uri acordate (147 bucăți)
- [ ] Obiecte recompilate (0 invalide)
- [ ] Testare conexiune OK
- [ ] Testare aplicație OK
- [ ] Backup DMP păstrat pentru siguranță
---
## 🆘 ROLLBACK (Dacă ceva merge prost)
Dacă Oracle 21c nu funcționează cum trebuie:
1. **Oprește Oracle 21c**:
```cmd
net stop OracleServiceXE
sc config OracleServiceXE start= disabled
```
2. **Repornește Oracle vechi**:
```cmd
sc config OracleServiceXE start= auto
net start OracleServiceXE
```
3. **Verifică**: Aplicația ar trebui să funcționeze cu Oracle vechi
4. **Investigație**: Verifică log-urile din Oracle 21c
- Windows: `C:\app\oracle\product\21c\homes\OraDB21Home1\diag\rdbms\xe\xe\trace\`
- Linux: `/opt/oracle/diag/rdbms/xe/xe/trace/`
---
## 📞 SUPORT
**Documentație oficială Oracle**:
- https://docs.oracle.com/en/database/oracle/oracle-database/21/
**Issues GitHub** (pentru probleme cu scripturile):
- https://github.com/anthropics/claude-code/issues
**Community Oracle**:
- https://forums.oracle.com/
---
**Succes cu upgrade-ul! 🚀**