Files
ROMFASTSQL/proxmox/lxc108-oracle/README.md
Marius a567f75f25 Reorganize oracle/ and chatbot/ into proxmox/ per LXC/VM structure
- Move oracle/migration-scripts/ to proxmox/lxc108-oracle/migration/
- Move oracle/roa/ and oracle/roa-romconstruct/ to proxmox/lxc108-oracle/sql/
- Move oracle/standby-server-scripts/ to proxmox/vm109-windows-dr/
- Move chatbot/ to proxmox/lxc104-flowise/
- Update proxmox/README.md with new structure and navigation
- Update all documentation with correct directory references
- Remove unused input/claude-agent-sdk/ files

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 17:28:53 +02:00

15 KiB

Oracle Database XE - LXC 108 (Proxmox)

📌 Informații Container LXC

  • VMID: 108
  • Nume: central-oracle
  • IP: 10.0.20.121
  • Host Proxmox: 10.0.20.201 (pvemini)
  • CPU: 2 cores
  • RAM: 4 GB
  • Storage: 50 GB (local-zfs)
  • Status: Running
  • OS: Ubuntu/Debian (LXC)
  • Docker Containers: oracle-xe (21c), oracle18-xe (18c)

📋 Sumar Containere Docker

Container Port Versiune TSTZ Utilizare
oracle-xe 1521 21c 35 Dezvoltare, ROA, ROA2
oracle18-xe 1522 18c 31 Export compatibil 11g/18c/19c

🐳 Oracle XE 21c în Docker

Informații Container Docker

  • Container Name: oracle-xe
  • Image: container-registry.oracle.com/database/express:21.3.0-xe
  • Versiune: Oracle Database 21c Express Edition
  • Status: Running (Up 3+ weeks, healthy)
  • Portainer: http://10.0.20.121:9000 (admin / parola281234)

Porturi Expuse

Port Serviciu Descriere
1521 Oracle Listener Conexiuni SQL*Plus, JDBC
5500 Oracle EM Express Enterprise Manager Web Interface

Volume Docker Montate (oracle-xe)

Container Path LXC 108 Path Descriere
/opt/oracle/oradata /opt/oracle/oradata Date Oracle, tablespaces
/opt/oracle/oradata/dmpdir /opt/oracle/oradata/dmpdir Export/Import DMP (DMPDIR)
/opt/oracle/scripts/setup /opt/oracle/scripts/setup Scripturi setup
/opt/oracle/scripts/startup /opt/oracle/scripts/startup Scripturi startup

🐳 Oracle XE 18c în Docker (Export Compatibil)

Scop: Export DMP compatibil cu Oracle 11g, 18c, 19c (TSTZ version 31)

Informații Container Docker

  • Container Name: oracle18-xe
  • Image: gvenzl/oracle-xe:18
  • Versiune: Oracle Database 18c Express Edition
  • Port: 1522
  • TSTZ Version: 31 (compatibil cu 11g/18c/19c)

Volume Docker Montate (oracle18-xe)

Container Path LXC 108 Path Descriere
/opt/oracle/oradata /opt/oracle/oradata18 Date Oracle 18c
/opt/oracle/oradata/dmpdir /opt/oracle/oradata/dmpdir Export/Import DMP (partajat)

Conexiune Oracle 18c

# SQL*Plus
sqlplus sys/romfastsoft@10.0.20.121:1522/XE as sysdba
sqlplus system/romfastsoft@10.0.20.121:1522/XE

# JDBC
jdbc:oracle:thin:@10.0.20.121:1522/XE

Export Compatibil din Oracle 18c

# Export schema (compatibil cu Oracle 11g, 18c, 19c)
docker exec oracle18-xe expdp system/romfastsoft@localhost:1521/XE \
  SCHEMAS=FIRMANOUA DIRECTORY=DMPDIR DUMPFILE=firmanoua_v18.dmp VERSION=11.2

Recreare Container Oracle 18c (dacă e necesar)

docker pull gvenzl/oracle-xe:18
docker run -d --name oracle18-xe \
  -p 1522:1521 \
  -e ORACLE_PASSWORD=romfastsoft \
  -v /opt/oracle/oradata18:/opt/oracle/oradata \
  -v /opt/oracle/oradata/dmpdir:/opt/oracle/oradata/dmpdir \
  gvenzl/oracle-xe:18

# Creare DMPDIR
docker exec oracle18-xe bash -c "sqlplus -s sys/romfastsoft@localhost:1521/XE as sysdba <<EOF
CREATE OR REPLACE DIRECTORY DMPDIR AS '/opt/oracle/oradata/dmpdir';
GRANT READ, WRITE ON DIRECTORY DMPDIR TO PUBLIC;
EOF"

🔗 Conexiuni Oracle Database (21c)

Container Database (CDB)

  • CDB Name: XE
  • User SYS: sys / romfastsoft (CONTAINER=ALL)
  • User SYSTEM: system / romfastsoft (CONTAINER=ALL)

Conexiune la CDB

# SQL*Plus
sqlplus sys/romfastsoft@10.0.20.121:1521/XE as sysdba
sqlplus system/romfastsoft@10.0.20.121:1521/XE

# JDBC
jdbc:oracle:thin:@10.0.20.121:1521/XE

📊 Pluggable Databases (PDB-uri)

1. PDB: ROA (Producție)

Informații Generale:

  • Service Name: roa
  • Scop: Bază de date producție pentru aplicații ROMFAST

Useri și Parole:

User Password Rol
sys romfastsoft SYSDBA
system romfastsoft SYSTEM
CONTAFIN_ORACLE OraclePass123 Application schema
MARIUSM_AUTO OraclePass123 Application schema

SQL*Plus:

sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba
sqlplus system/romfastsoft@10.0.20.121:1521/roa
sqlplus CONTAFIN_ORACLE/OraclePass123@10.0.20.121:1521/roa
sqlplus MARIUSM_AUTO/OraclePass123@10.0.20.121:1521/roa

JDBC:

jdbc:oracle:thin:@10.0.20.121:1521/roa

TNS Entry:

ROA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.121)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = roa)
    )
  )

2. PDB: ROA2 (Template pentru Export DMP)

Informații Generale:

  • Service Name: roa2
  • Scop: Template pentru scheme noi, export DMP pentru clienți noi

Useri și Parole:

User Password Rol
sys romfastsoft SYSDBA
system romfastsoft SYSTEM
CONTAFIN_ORACLE ROMFASTSOFT Template schema
FIRMANOUA ROMFASTSOFT Template schema (client nou)

SQL*Plus:

sqlplus sys/romfastsoft@10.0.20.121:1521/roa2 as sysdba
sqlplus system/romfastsoft@10.0.20.121:1521/roa2
sqlplus CONTAFIN_ORACLE/ROMFASTSOFT@10.0.20.121:1521/roa2
sqlplus FIRMANOUA/ROMFASTSOFT@10.0.20.121:1521/roa2

JDBC:

jdbc:oracle:thin:@10.0.20.121:1521/roa2

TNS Entry:

ROA2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.20.121)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = roa2)
    )
  )

Caracteristici ROA2:

  • Tablespace ROA: 2GB (pentru teste/template)
  • Profil DEFAULT: parole nelimitate (PASSWORD_LIFE_TIME UNLIMITED)
  • Obiecte SYS custom: AUTH_PACK, UPDATESQLPLUS, EXECUTESCRIPTOS, UTL_MAIL
  • 232 sinonime publice CONTAFIN_ORACLE
  • 149 grant-uri către PUBLIC

🔧 Acces la Oracle prin LXC

IMPORTANT: Nu ai nevoie de user/parolă pentru LXC 108! Accesul se face prin Proxmox folosind comenzile pct.

Metoda 1: Intrare în LXC 108

# SSH în Proxmox
ssh root@10.0.20.201

# Intrare în LXC 108
pct enter 108

# Acum poți folosi comenzi Docker direct
docker ps
docker logs oracle-xe --tail 50

Metoda 2: Execuție Directă din Proxmox

# Verificare PDB-uri
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe bash -c "echo \"SELECT name, open_mode FROM v\\\$pdbs;\" | sqlplus -s sys/romfastsoft@localhost:1521/XE as sysdba"'

# Restart Oracle container
ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"

Metoda 3: SQL*Plus Direct în Container

# Intrare în container Oracle
pct exec 108 -- docker exec -it oracle-xe bash

# SQL*Plus din container
docker exec oracle-xe sqlplus sys/romfastsoft@localhost:1521/roa as sysdba

📦 Export și Import Data Pump

DMPDIR - Director Oracle montat direct pe LXC 108: /opt/oracle/oradata/dmpdir Fișierele DMP sunt accesibile direct, fără docker cp.

Export Complet ROA2 (Script)

# Rulează din LXC 108
pct exec 108 -- bash /opt/oracle/oradata/export-roa2.sh

Rezultat: /opt/oracle/oradata/dmpdir/roa2_export_YYYYMMDD_HHMMSS.zip

Export Individual

docker exec oracle-xe expdp system/romfastsoft@localhost:1521/roa2 \
  SCHEMAS=FIRMANOUA DIRECTORY=DMPDIR DUMPFILE=firmanoua.dmp COMPRESSION=ALL

docker exec oracle-xe expdp system/romfastsoft@localhost:1521/roa2 \
  SCHEMAS=CONTAFIN_ORACLE DIRECTORY=DMPDIR DUMPFILE=contafin.dmp COMPRESSION=ALL

Import în PDB

docker exec oracle-xe impdp system/romfastsoft@localhost:1521/roa \
  SCHEMAS=FIRMANOUA DIRECTORY=DMPDIR DUMPFILE=firmanoua.dmp LOGFILE=firmanoua_import.log

Copiere DMP din LXC 108 în WSL

scp root@10.0.20.201:/opt/oracle/oradata/dmpdir/firmanoua.dmp /mnt/e/backups/

Recreare DMPDIR (dacă e necesar)

# 1. Creează folder pe LXC 108
pct exec 108 -- mkdir -p /opt/oracle/oradata/dmpdir
pct exec 108 -- chmod 777 /opt/oracle/oradata/dmpdir

# 2. Creează DIRECTORY Oracle în fiecare PDB
for pdb in XE roa roa2; do
  pct exec 108 -- docker exec oracle-xe bash -c "sqlplus -s sys/romfastsoft@localhost:1521/$pdb as sysdba <<EOF
CREATE OR REPLACE DIRECTORY DMPDIR AS '/opt/oracle/oradata/dmpdir';
GRANT READ, WRITE ON DIRECTORY DMPDIR TO PUBLIC;
EOF"
done

🔍 Verificări și Comenzi SQL Utile

Status PDB-uri

-- Verificare status PDB-uri
SELECT name, open_mode, restricted FROM v$pdbs;

-- Deschidere PDB (dacă e MOUNTED)
ALTER PLUGGABLE DATABASE roa OPEN;
ALTER PLUGGABLE DATABASE roa2 OPEN;
ALTER PLUGGABLE DATABASE ALL SAVE STATE;

Verificare Tablespace-uri

-- Tablespace-uri și utilizare în ROA2
SELECT
  tablespace_name,
  ROUND(bytes/1024/1024, 2) as MB,
  ROUND(maxbytes/1024/1024, 2) as MAX_MB,
  autoextensible
FROM dba_data_files
WHERE tablespace_name='ROA';

-- Spațiu liber
SELECT
  tablespace_name,
  ROUND(SUM(bytes)/1024/1024, 2) as FREE_MB
FROM dba_free_space
GROUP BY tablespace_name;

Status Obiecte și Scheme

-- Număr obiecte per schema în ROA2
SELECT
  owner,
  COUNT(*) total_objects,
  SUM(CASE WHEN status='VALID' THEN 1 ELSE 0 END) valid_objects,
  SUM(CASE WHEN status='INVALID' THEN 1 ELSE 0 END) invalid_objects
FROM dba_objects
WHERE owner IN ('CONTAFIN_ORACLE', 'FIRMANOUA')
GROUP BY owner;

-- Tipuri obiecte
SELECT owner, object_type, COUNT(*)
FROM dba_objects
WHERE owner IN ('CONTAFIN_ORACLE', 'FIRMANOUA')
GROUP BY owner, object_type
ORDER BY owner, COUNT(*) DESC;

Useri și Profiluri

-- Verificare useri și profile în PDB
SELECT username, account_status, profile, created
FROM dba_users
WHERE username IN ('CONTAFIN_ORACLE', 'FIRMANOUA', 'MARIUSM_AUTO')
ORDER BY created DESC;

-- Verificare limită parole (PASSWORD_LIFE_TIME)
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE resource_name = 'PASSWORD_LIFE_TIME'
ORDER BY profile;

Sinonime Publice

-- Verificare sinonime publice CONTAFIN_ORACLE
SELECT COUNT(*) as total_synonyms
FROM dba_synonyms
WHERE owner = 'PUBLIC'
AND table_owner = 'CONTAFIN_ORACLE';

-- Detalii sinonime
SELECT synonym_name, table_owner, table_name
FROM dba_synonyms
WHERE owner = 'PUBLIC'
AND table_owner = 'CONTAFIN_ORACLE'
ORDER BY synonym_name;

Grant-uri către PUBLIC

-- Număr grant-uri către PUBLIC
SELECT COUNT(*) as total_grants
FROM dba_tab_privs
WHERE grantee = 'PUBLIC'
AND owner IN ('CONTAFIN_ORACLE', 'SYS');

-- Detalii grant-uri
SELECT owner, table_name, privilege, grantee
FROM dba_tab_privs
WHERE grantee = 'PUBLIC'
AND owner IN ('CONTAFIN_ORACLE', 'SYS')
ORDER BY owner, table_name;

🚨 Troubleshooting Oracle

Verificare Conexiune Oracle

# Test ping LXC 108
ping -c 3 10.0.20.121

# Test port Oracle listener
nc -zv 10.0.20.121 1521

# Test SQL*Plus conexiune
sqlplus sys/romfastsoft@10.0.20.121:1521/roa as sysdba

Restart Oracle Database

# Opțiunea 1: Restart container Docker (RAPID)
ssh root@10.0.20.201 "pct exec 108 -- docker restart oracle-xe"

# Opțiunea 2: Restart LXC complet
ssh root@10.0.20.201 "pct restart 108"

# Verificare după restart
ssh root@10.0.20.201 "pct exec 108 -- docker ps"

Verificare Status Container

# Status Docker container
ssh root@10.0.20.201 "pct exec 108 -- docker ps"

# Healthcheck Oracle
ssh root@10.0.20.201 "pct exec 108 -- docker inspect oracle-xe | grep -A 10 Health"

# Loguri Oracle
ssh root@10.0.20.201 "pct exec 108 -- docker logs oracle-xe --tail 100"

PDB nu se deschide (MOUNTED)

# Deschidere manuală PDB
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe bash -c "echo \"ALTER PLUGGABLE DATABASE ALL OPEN; ALTER PLUGGABLE DATABASE ALL SAVE STATE;\" | sqlplus -s sys/romfastsoft@localhost:1521/XE as sysdba"'

Probleme Maximum Open Cursors

-- Verificare valoare curentă
SELECT name, value FROM v$parameter WHERE name = 'open_cursors';

-- Creștere limită cursoare (dacă apar erori ORA-01000)
ALTER SYSTEM SET OPEN_CURSORS=1000 SCOPE=BOTH SID='*';

Verificare Alert Log Oracle

# Alert log location în container
ssh root@10.0.20.201 "pct exec 108 -- docker exec oracle-xe tail -100 /opt/oracle/diag/rdbms/xe/XE/trace/alert_XE.log"

📝 Notițe Importante

Compatibilitate TSTZ (Time Zone)

Versiune TSTZ Compatibilitate Import
Oracle 21c 35 Doar 21c+
Oracle 18c 31 11g, 18c, 19c, 21c
Oracle 19c 32 11g, 18c, 19c, 21c

Important: Pentru export compatibil cu clienți Oracle 11g/18c/19c, folosește oracle18-xe (port 1522).

Diferențe Oracle 10g vs 21c

  • Oracle 10g folosește SID (ORCL) - sistem vechi, decommissioned
  • Oracle 21c folosește SERVICE_NAME (roa, roa2) - sistem actual
  • Migrare: Export DMP Oracle 10g → Import Data Pump Oracle 21c (impdp)

Profile Parole

  • ROA: Parolele pot expira (setări default Oracle)
  • ROA2: Parolele NU expiră (PASSWORD_LIFE_TIME UNLIMITED)

VM 201 - Windows 11 (Client Aplicații)

  • VMID: 201
  • Nume: roacentral
  • Host: 10.0.20.201 (Proxmox pvemini)
  • OS: Windows 11 (24H2)
  • Rol: Client pentru aplicații Windows, SQL*Plus client
  • NU rulează Oracle Database (migrat în LXC 108 Docker)

📂 Subdirectoare

migration/

Scripturi pentru migrarea Oracle 10g → 21c XE:

  • 00-MASTER-MIGRATION.sh - Script master orchestrare migrare
  • 01-setup-oracle21c.sh - Setup tablespace ROA + useri
  • 02-export-source.sh - Export universal (AUTO/MANUAL/LOCAL)
  • 03-transfer-to-oracle21c.sh - Transfer fișiere DMP
  • 04-import-to-oracle21c.sh - Import scheme + SYS objects
  • 05-create-synonyms-grants.sh - Creare sinonime + grant-uri
  • 06-finalize-migration.sh - Recompilare + verificare finală

Documentație: migration/README.md

sql/

SQL-uri și packages Oracle:

  • sql/roa/ - SQL-uri compatibilitate Oracle 10g (scrie_jc_2007.sql, etc.)
  • sql/roa-romconstruct/ - Package PACK_CONTAFIN.pck

scripts/

Scripturi operaționale:

  • export-roa2.sh - Export PDB roa2
  • export-roa2.ps1 - Export pentru Windows

🔗 Legături Utile

Pentru detalii Proxmox generale (cluster, toate LXC-uri/VM-uri): Vezi fișierul: ../cluster/README.md

Oracle Enterprise Manager Express: http://10.0.20.121:5500/em

Portainer Docker Management:


Data ultimei actualizări: 2026-01-27 Autor: Marius Mutu Proiect: ROMFASTSQL - Oracle XE 18c/21c în Proxmox LXC