Files
ROMFASTSQL/oracle/migration-scripts/README-UPGRADE-IN-PLACE.md
2025-10-01 16:08:13 +03:00

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:

  1. Download Oracle XE 21c:

  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:

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:

  1. Oprește Oracle 21c:

    net stop OracleServiceXE
    sc config OracleServiceXE start= disabled
    
  2. Repornește Oracle vechi:

    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:

Issues GitHub (pentru probleme cu scripturile):

Community Oracle:


Succes cu upgrade-ul! 🚀