Add a top-level case index at lxc108-oracle/clienti/README.md and a narrative README inside oracle-xe-21c/ that names ROMPETROL ENERGY explicitly, describes symptom -> diagnostic -> what failed -> what worked, and lists each numbered SQL with its role in the import phases. Wire the case into discoverable entry points: - proxmox/lxc108-oracle/README.md: new "clienti/" subsection - proxmox/README.md: tree + nav links - /workspace/romfastsql/CLAUDE.md: entry points Future "Rompetrol Energy" / "ORA-12954" / "recreare PDB" searches now hit the docs from the master indices instead of via grep on schema name. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.5 KiB
ROMPETROL ENERGY — Recreare PDB Oracle XE 21c după ORA-12954
Client: ROMPETROL ENERGY
Schemă aplicație: ROMPETROLE (parolă inițială: ROMFASTSOFT)
Bază de date: Oracle XE 21c (CDB XE + PDB XEPDB1) pe Windows
Stadiu: rezolvat — PDB recreat, total alocat redus de la 13.5 GB la ~3 GB
Simptom
Aplicația nu mai putea scrie în baza de date. La operații de DML / cleanup:
ORA-12954: The request exceeds the maximum allowed database size of 12 GB.
Inclusiv DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL eșua cu același cod, deci
nici curățarea audit trail-ului nu mai era posibilă în-place.
Diagnostic
Limita 12 GB a Oracle XE se aplică pe suma dba_data_files (spațiu alocat),
nu pe dba_segments (spațiu efectiv folosit). Datafile-urile pot fi 90% goale
și tot să atingă limita.
Distribuție găsită la diagnostic:
| Componentă | Alocat |
|---|---|
| SYSAUX | 7.8 GB (segmente reale: 7.5 GB) |
| UNDOTBS1 | 2.1 GB |
| SYSTEM + alte | rest |
| Total | ~13.5 GB (peste limită) |
Cauze SYSAUX umflat (în ordinea impactului):
- SQL Tuning Sets (
wri$_sqlset_*) — ~5 GB acumulat - AWR snapshots — retention default + moving window baseline 8 zile
- Audit policies active (
ORA_SECURECONFIG,ORA_LOGON_FAILURES) → AUDSYS umflat în PDB nou creat dinPDB$SEED - Auto tasks (
sql tuning advisor,auto space advisor) regenerează constant date
Vezi depanare-ora-12954-spatiu.md pentru
queries-le de diagnostic.
Ce s-a încercat (parțial)
DROPpe SQL Tuning Sets viaDBMS_SQLTUNE.DROP_SQLSET— nu a eliberat spațiul LOB-ului.TRUNCATEdirect pewri$_sqlset_*a funcționat.DBMS_ADVISOR.DELETE_EXPIRED_TASKS,MODIFY_SNAPSHOT_SETTINGS,PURGE_STATS,PURGE DBA_RECYCLEBIN— au eliberat segmentele.ALTER DATABASE DATAFILE ... RESIZEpe SYSAUX — eșec ORA-03297 (used data beyond resize value). Pe XE 21c nu existăALTER TABLESPACE ... SHRINK(apare doar din 23ai). Segmentele SYSAUX erau la high water mark și nu puteau fi compactate.UNDOTBS1— soluționat prin recreare (drop tablespace + recreate cu datafile mic). Funcționează pentru UNDO, NU și pentru SYSAUX.
Concluzie: SYSAUX nu se poate shrink-ui pe XE 21c → singura soluție definitivă = recrearea PDB-ului.
Soluție: recreare PDB + reimport
Pași (orchestrator: import/recreare_pdb.sql):
- Export din PDB-ul vechi (înainte de orice DROP):
expdpData Pump pentru schemele aplicației:CONTAFIN_ORACLE,ROMPETROLEexpdpseparat pentru tabele SYS custom (SYS.AUTH_SERII,SYS.AUTH_DETALII,SYS.INFO)export_pdb_complet.sqldin SQLPlus pentru obiectele de cod SYS (packages, views, triggers, context) care nu se pot exporta cu Data Pump
- DROP PLUGGABLE DATABASE
XEPDB1 INCLUDING DATAFILESdinCDB$ROOT - CREATE PLUGGABLE DATABASE
XEPDB1dinPDB$SEEDcu admin user nou - Faza 1 import (
import/11_import_master.sql) — infrastructură care trebuie să existe înainte de Data Pump: tablespaces (01) → useri (02) → directories (03) → tabele SYS (04) → context (08) - Data Pump impdp scheme aplicație cu
remap_tablespace=USERS:ROA(PDB-ul nou din seed nu are tablespace USERS) - Data Pump impdp tabele SYS custom cu
table_exists_action=APPEND - Faza 2 import (
import/11_import_master_faza2.sql) — obiecte dependente de date: cod SYS (05) → views (06) → triggers (07) → granturi (09) → sinonime publice (10) - Recompilare —
DBMS_UTILITY.COMPILE_SCHEMApentruCONTAFIN_ORACLE,ROMPETROLE,SYS - Prevenție — dezactivare auto tasks, retention AWR la min 8 zile,
NOAUDIT POLICYpeORA_SECURECONFIGșiORA_LOGON_FAILURES
Rezultat
| Componentă | Înainte | După recreare PDB |
|---|---|---|
| SYSAUX | 7.8 GB | 390 MB |
| SYSTEM | — | 370 MB |
| ROA | — | 2 GB |
| UNDOTBS1 | 2.1 GB | 165 MB |
| Total alocat | 13.5 GB | ~3 GB |
Marjă recâștigată față de limita 12 GB: ~9 GB.
Scripturi în acest director
| Fișier | Scop |
|---|---|
depanare-ora-12954-spatiu.md |
Ghid complet ORA-12954: diagnostic, cleanup, resize, gotcha-uri Oracle XE 21c |
import/recreare_pdb.sql |
Orchestrator (drop PDB → recreate → faze import) |
import/export_pdb_complet.sql |
Export obiecte SYS care nu merg via Data Pump |
import/01_tablespaces.sql |
Faza 1.1: ROA tablespace |
import/02_useri.sql |
Faza 1.2: CONTAFIN_ORACLE, ROMPETROLE |
import/03_directories.sql |
Faza 1.3: DIRECTORY objects |
import/04_sys_tables.sql |
Faza 1.4: tabele SYS custom |
import/05_sys_code_objects.sql |
Faza 2.1: packages SYS |
import/06_sys_views.sql |
Faza 2.2: views SYS |
import/07_sys_triggers.sql |
Faza 2.3: triggere SYS |
import/08_context.sql |
Faza 1.5: application context |
import/09_granturi.sql |
Faza 2.4: granturi |
import/10_sinonime_publice.sql |
Faza 2.5: sinonime publice |
import/11_import_master.sql |
Faza 1 master (rulează 01 → 04, 08) |
import/11_import_master_faza2.sql |
Faza 2 master (rulează 05 → 07, 09 → 10) + verificare |
import/cleanup_audit.sql |
Curățare audit trail (rulează doar dacă DB-ul nu e plin) |
Reutilizare la alți clienți
Scripturile sunt parametrizate la nivel de schemă aplicație. Pentru un client nou cu aceeași problemă (Oracle XE 21c plin):
- Adaptează
02_useri.sqlcu noua schemă (înlocuieșteROMPETROLE) - Adaptează
04_sys_tables.sqlși09_granturi.sqlla nevoie - Rulează exportul, apoi
recreare_pdb.sqlpas cu pas - La pasul de prevenție, rulează imediat
NOAUDIT POLICYșiDBMS_AUTO_TASK_ADMIN.DISABLE— dacă lași PDB-ul nou în default, problema reapare în câteva luni
Lecții învățate
- TRUNCATE > DROP pe SQL Tuning Sets — DROP nu eliberează LOB-ul.
- Limita 12 GB =
dba_data_files— segmentele pot fi mici, contează spațiul alocat. - SYSAUX nu se poate shrink pe XE 21c (fără 23ai). Singura ieșire = recreare PDB.
- AWR retention >= 8 zile — moving window baseline default e 8 zile, nu poți seta sub fără să modifici baseline-ul (care nu există ca procedură pe XE 21c).
- PDB nou din
PDB$SEEDare audit policies active —ORA_SECURECONFIGșiORA_LOGON_FAILURESumflă AUDSYS rapid. Dezactivare imediat după CREATE. DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILeșuează când DB-ul e plin — chiar și în restricted mode. Prevenția > intervenția.- PDB nou nu are tablespace
USERS— toate impdp-urile cu obiecte pe USERS necesităremap_tablespace=USERS:ROA. - Pe Windows,
AS SYSDBAîn impdp/expdp trebuie inclus în ghilimelele conexiunii:expdp "sys/...@XEPDB1 AS SYSDBA" ...
Last Updated: 2026-04-25 Autor depanare: Marius Mutu