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