8.3 KiB
🔄 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ă
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:
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:
# 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:
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:
# 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:
-
Download Oracle XE 21c:
- https://www.oracle.com/database/technologies/xe-downloads.html
- Fișier:
OracleXE213_Win64.zip(~2.5 GB)
-
Extrage și rulează
setup.exe -
Instalare:
- Port: 1521 (același ca Oracle vechi)
- Password SYS:
OraclePass123(sau custom) - Configurare automată
-
Verificare instalare:
sqlplus system/OraclePass123@localhost:1521/XE
SQL> SELECT * FROM v$version;
Linux (LXC/Docker):
# 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:
# 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:
# 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:
sqlplus CONTAFIN_ORACLE/OraclePass123@localhost:1521/roa
Verificare obiecte:
-- 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:
-- 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)
exp system/pass@localhost:1521/XE ^
TABLES=(CONTAFIN_ORACLE.FACTURI,CONTAFIN_ORACLE.CLIENTI) ^
FILE=export_partial.dmp
Problema: "Import cu erori"
Verificare:
# 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:
# 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:
net stop OracleServiceXE
net start OracleServiceXE
Linux:
sudo systemctl stop oracle-xe
sudo systemctl start oracle-xe
Conectare rapidă
# SYS
sqlplus / as sysdba
sqlplus sys/OraclePass123@localhost:1521/roa as sysdba
# User normal
sqlplus CONTAFIN_ORACLE/OraclePass123@localhost:1521/roa
Verificare status
-- 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:
-
Oprește Oracle 21c:
net stop OracleServiceXE sc config OracleServiceXE start= disabled -
Repornește Oracle vechi:
sc config OracleServiceXE start= auto net start OracleServiceXE -
Verifică: Aplicația ar trebui să funcționeze cu Oracle vechi
-
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/
- Windows:
📞 SUPORT
Documentație oficială Oracle:
Issues GitHub (pentru probleme cu scripturile):
Community Oracle:
Succes cu upgrade-ul! 🚀