Files
ROMFASTSQL/proxmox/oracle-database-lxc108.md
Marius f1b982794b Reorganize Oracle and Proxmox documentation structure
- Move oracle/CONEXIUNI-ORACLE.md → proxmox/oracle-database-lxc108.md
- Create proxmox/README.md as documentation index
- Update proxmox-ssh-guide.md:
  * Remove VM 107 references (decommissioned)
  * Update LXC and VM tables with IP addresses
  * Add IP address map for all services
  * Simplify Oracle section (detailed info in oracle-database-lxc108.md)
  * Update backup job configuration

Benefits:
- All infrastructure docs in proxmox/ directory
- Clear separation: general Proxmox (proxmox-ssh-guide.md) vs Oracle-specific (oracle-database-lxc108.md)
- No duplicate information between files
- Easy navigation with README.md index

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 12:58:22 +02:00

11 KiB

Oracle Database XE 21c - 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 Container: oracle-xe (Oracle XE 21c)

🐳 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:9443

Porturi Expuse

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

🔗 Conexiuni Oracle Database

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

Export Schema FIRMANOUA din ROA2

# Export complet schema
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe expdp system/romfastsoft@localhost:1521/roa2 \
  SCHEMAS=FIRMANOUA \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=firmanoua_template_%U.dmp \
  LOGFILE=firmanoua_template.log \
  PARALLEL=2'

Export Schema CONTAFIN_ORACLE din ROA2

ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe expdp system/romfastsoft@localhost:1521/roa2 \
  SCHEMAS=CONTAFIN_ORACLE \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=contafin_template_%U.dmp \
  LOGFILE=contafin_template.log \
  PARALLEL=2'

Import în PDB Nou

# Import schema în PDB existent
ssh root@10.0.20.201 'pct exec 108 -- docker exec oracle-xe impdp system/romfastsoft@localhost:1521/roa \
  SCHEMAS=FIRMANOUA \
  DIRECTORY=DATA_PUMP_DIR \
  DUMPFILE=firmanoua_template_%U.dmp \
  LOGFILE=firmanoua_import.log \
  PARALLEL=2'

Copiere Fișiere DMP din/în Container

# Copiere DMP din Oracle container în LXC 108
ssh root@10.0.20.201 "pct exec 108 -- docker cp oracle-xe:/opt/oracle/admin/XE/dpdump/firmanoua_template_01.dmp /tmp/"

# Copiere DMP din LXC 108 în WSL
scp root@10.0.20.201:/var/lib/lxc/108/rootfs/tmp/firmanoua_template_01.dmp /mnt/e/backups/

# Copiere DMP în Oracle container (pentru import)
ssh root@10.0.20.201 "pct exec 108 -- docker cp /tmp/firmanoua_template_01.dmp oracle-xe:/opt/oracle/admin/XE/dpdump/"

🔍 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

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)

Istoric Migrare

  • VM 107 (Windows 7 Oracle 10g) - DECOMMISSIONED
    • Fostă sursă Oracle 10g pentru migrare DMP
    • Archive DMP: firmanoua.zip (backup arhivat)
    • Status: Stopped/Removed (înlocuit de LXC 108)

🔗 Legături Utile

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

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

Portainer Docker Management: http://10.0.20.121:9443


Data ultimei actualizări: 2025-11-19 Autor: Marius Mutu Proiect: ROMFASTSQL - Oracle XE 21c în Proxmox LXC