Nota in depanare-spatiu-oracle.md pentru co_2026_08_06_01_DIAG_SPATIU_PACK: pragul absolut nu se mai aplica tablespace-urilor cu maximul sub el, iar emailul include tot DIAG_SPATIU_LOG-ul rularii, plafonat la 30000 de caractere.
6.7 KiB
Depanare spatiu Oracle la clienti
powershell -File COMUN\utile\diag_spatiu.ps1 -Alias <ALIAS_TNS> [-Disc] [-SysPassword <parola>] [-Top 30]
Strict read-only in afara lui -Disc (singura parte care scrie: un .ps1 temporar in DMPDIR,
lansat cu sys.ExecuteScriptOS si sters la final). Actiunile de curatare sunt doar sugerate,
niciodata executate. 8 sectiuni: conexiune/versiune (CDB-PDB), tablespace + top segmente, audit,
alert log/trace/ADR, archivelog/FRA, disc server, alti mancatori de spatiu, verdict.
Pentru actualizarea blocata de spatiu, punctul de plecare e depanare-pack-update.md.
Jobul automat DIAGSPATIU_ZILNIC (SVN r17969)
Echivalentul in baza al scriptului de mai sus, rulat zilnic la 06:00 de la fiecare client:
co_2026_08_03_02 (tabela DIAG_SPATIU_LOG, istoric purjat la 90 zile), co_2026_08_03_03
(PACK_DIAG_SPATIU), co_2026_08_03_04 (jobul), sys_2026_08_03_05 (granturi). Praguri identice
cu diag_spatiu.ps1; email doar la prag depasit, tacere completa altfel. Sursa de referinta:
COMUN\docs\PACK_DIAG_SPATIU.pck.
Sectiunile informative (recyclebin, UNDO, TEMP, istoric statistici/scheduler, top segmente, audit SYS, disc) se scriu doar cand exista deja o alerta — dau context, nu alerteaza singure.
co_2026_08_06_01_DIAG_SPATIU_PACK (06.08.2026) corecteaza doua lucruri vazute pe primele rulari:
- pragul absolut (2048 MB) nu se mai aplica tablespace-urilor al caror maxim e sub el — orice
UNDOTBS/SYSTEMplafonat la 500–2048 MB alerta zilnic, prin definitie; acolo ramane doar garda relativa de 15%. - emailul contine tot logul rularii (alertele intai, apoi toate randurile din
DIAG_SPATIU_LOG, cu!pe cele peste prag, sortate pe sectiune si valoare descrescator), nu doar un pointer catre tabela. Corpul e plafonat la 30000 de caractere (EmailDiagSpatiulucreaza peVARCHAR2(32000)), cu marcaj... restul in DIAG_SPATIU_LOGla depasire.
Mecanisme reutilizabile (din investigatia pentru job)
CONTAFIN_ORACLE.SERVER_INFOtine parolelePASSWORD_SYS/PASSWORD_CONTAFIN_ORACLE(zip+base64, nu criptare), caileSQLPLUSPATH/POWERSHELLPATH/DMPDIR, cheileEMAIL_*si cache-ulVERSIUNE_<SCHEMA>. Parola se citeste cuPACK_UPDATE.GetSchemaParola('<SCHEMA>')(decodeaza doar pentruSYSsiCONTAFIN_ORACLE; pentru schemele de firma intoarce'ROMFASTSOFT'hardcodat).- Rulare ca
SYSdin PL/SQL: scrii un.sqlinDMPDIRcuconnect sys/<parola>@ROA as sysdba+spool, il lansezi cusys.UpdateSQLPLUSsi astepti fisierul de iesire; pentru OS,sys.ExecuteScriptOS(PowerShell). Ambele sunt asincrone (jobdbms_schedulerde tipexecutable, auto-drop) — mecanismul folosit si dePACK_UPDATE.UpdateDatabaseSqlPlus. Fisierele temporare au nume proprii, ca sa nu se bata cuscript_master.sqlal actualizarii. PACK_UPDATE.EmailLognu e reutilizabila pentru alt continut: subiectul e hardcodat ("Actualizare ROA ...") si corpul vine dinUPD_LOG. Pentru alte alerte, blocUTL_SMTPpropriu care citeste aceleasi cheiEMAIL_*.- Scripturile
sys_*se aplica automat, ca oriceco_/ff_: prefixul e recunoscut inPACK_UPDATE.UpdateSchema*, schemaSYSse actualizeaza prima, iarUpdateVersiuneisi scrie randul inCONTAFIN_ORACLE.versiune(schemaSYSn-are tabela proprie). Deci unsys_livrat in aceeasi zi ruleaza inaintea scripturilorco_care depind de el.
Ce umple spatiul, in ordinea frecventei
- Tablespace cu
maxbytesatins — nu "disc plin", ci un plafon pus la instalare. Pe XE limita de 11/12 GB e pe date utilizator, nu peSYSTEM. SYSAUX— SQL Tuning Sets (wri$_sqlset_*), AWR, audit policies active pe un PDB nou.- Fisierele
.auddinaudit_file_dest(adump) — zeci de mii, niciodata curatate; nu se vad din SQL, doar cu-Disc. - Alert log / trace / incident (
diagnostic_dest) — se purja cuadrci purge. - FRA plina cu
log_mode=ARCHIVELOG→ORA-00257/ORA-19809; baza se blocheaza brusc, fara eroare vizibila in aplicatie. - Recyclebin,
UNDOumflat, istoric statistici/scheduler,TEMP. - Tabele de log ale aplicatiei care cresc nelimitat (tiparul
SYS.INFOde pe SIGMA) — apar in raportul de top segmente, numele difera per client.
Cazuri
- Rompetrol Energy (XE 21c):
ORA-12954, limita de 12 GB pedba_data_filesatinsa.SYSAUXumflat la 7.8 GB din SQL Tuning Sets (~5 GB) + AWR + audit policies.TRUNCATE wri$_sqlset_*a eliberat segmentele, darRESIZEa picat cuORA-03297(SYSAUXnu se shrink pe XE 21c) → singura solutie a fost recrearea PDB-ului, 13.5 GB → 3 GB. Detalii:E:\proiecte\ROMFASTSQL\proxmox\lxc108-oracle\clienti\oracle-xe-21c\(README.md,depanare-ora-12954-spatiu.md). - ROA_CENTRAL (
ORA-65114, 02.08.2026): acelasi tipar, rezolvat prin curatenie tintita in loc de recreare PDB; SQL-uri gata scrise in acelasi repo (docs/curatenie-spatiu-oracle.sql). - SIGMA (03.08.2026):
SYSTEMplafonat la 600 MB — vezidepanare-pack-update.md.
Capcane
- Privilegiile
ANYnu se aplica pe obiectele din schemaSYScat timpO7_DICTIONARY_ACCESSIBILITY=FALSE— orice curatare acolo cereSYSDBA. - Parola
SYSe de obicei cea generica (veziCOMUN\docs\local\oracle.md), dar nu la toti clientii (ex. ROMCONSTRUCT) — cand nu merge, se ia cuPACK_UPDATE.GetSchemaParola('SYS').-SysPasswordramane optional: diagnosticul de baza merge complet fara el, doar sectiunile SYSDBA se sar. - Rolurile nu se aplica in pachete cu drepturi de definitor: un pachet care refera static
dba_*/v$*ieseINVALIDla clientul care are accesul doar prin rolulDBA, chiar daca aceleasi interogari merg din SQL*Plus. De aceea granturile directe dinsys_2026_08_03_05. Lantul de actualizare nu se opreste in acest caz:sqlplusiese cu cod 0 la eroare de compilare, deci se vede doar ca pachet invalid + job cazut. - Curatenia poate esua din lipsa de spatiu (
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILa picat asa la Rompetrol): intai ridici plafonul, apoi cureti. RESIZEpe datafile daORA-03297daca extentele folosite nu sunt la coada fisierului — unDELETEfaraMOVE/SHRINKnu recupereaza MB.- Dimensiunile reale ale fisierelor de pe disc nu se vad din SQL —
-Disc, prinExecuteScriptOS. -Discmerge doar pe servere Windows (ExecuteScriptOSlanseaza PowerShell). Pe Linux expira curat dupa 60s, cu mesaj.MAX_PDB_STORAGEse citeste doar de pe un alias care tinteste radacina CDB. De pe un serviciu de PDB (cazul obisnuit al aliasurilor dintnsnames.ora),alter session set container=CDB$ROOTdaORA-01031— e nevoie de un alias separat spre radacina.