# 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 ```bash # 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:** ```bash 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:** ```bash 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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 ```bash 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 ```bash # 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 ```bash # 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 ```sql -- 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 ```sql -- 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 ```sql -- 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 ```sql -- 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 ```sql -- 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 ```sql -- 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 ```bash # 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 ```bash # 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 ```bash # 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) ```bash # 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 ```sql -- 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 ```bash # 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