diff --git a/docs/depanare-spatiu-oracle.md b/docs/depanare-spatiu-oracle.md index 507dee3..bf433d7 100644 --- a/docs/depanare-spatiu-oracle.md +++ b/docs/depanare-spatiu-oracle.md @@ -11,6 +11,37 @@ alert log/trace/ADR, archivelog/FRA, disc server, alti mancatori de spatiu, verd 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. + +## Mecanisme reutilizabile (din investigatia pentru job) + +- **`CONTAFIN_ORACLE.SERVER_INFO`** tine parolele `PASSWORD_SYS`/`PASSWORD_CONTAFIN_ORACLE` + (zip+base64, nu criptare), caile `SQLPLUSPATH`/`POWERSHELLPATH`/`DMPDIR`, cheile `EMAIL_*` si + cache-ul `VERSIUNE_`. Parola se citeste cu `PACK_UPDATE.GetSchemaParola('')` + (decodeaza doar pentru `SYS` si `CONTAFIN_ORACLE`; pentru schemele de firma intoarce + `'ROMFASTSOFT'` hardcodat). +- **Rulare ca `SYS` din PL/SQL**: scrii un `.sql` in `DMPDIR` cu `connect sys/@ROA as + sysdba` + `spool`, il lansezi cu `sys.UpdateSQLPLUS` si astepti fisierul de iesire; pentru OS, + `sys.ExecuteScriptOS` (PowerShell). Ambele sunt asincrone (job `dbms_scheduler` de tip + `executable`, auto-drop) — mecanismul folosit si de `PACK_UPDATE.UpdateDatabaseSqlPlus`. Fisierele + temporare au nume proprii, ca sa nu se bata cu `script_master.sql` al actualizarii. +- **`PACK_UPDATE.EmailLog` nu e reutilizabila** pentru alt continut: subiectul e hardcodat + ("Actualizare ROA ...") si corpul vine din `UPD_LOG`. Pentru alte alerte, bloc `UTL_SMTP` propriu + care citeste aceleasi chei `EMAIL_*`. +- **Scripturile `sys_*`** se aplica automat, ca orice `co_`/`ff_`: prefixul e recunoscut in + `PACK_UPDATE.UpdateSchema*`, schema `SYS` se actualizeaza **prima**, iar `UpdateVersiune` isi + scrie randul in `CONTAFIN_ORACLE.versiune` (schema `SYS` n-are tabela proprie). Deci un `sys_` + livrat in aceeasi zi ruleaza inaintea scripturilor `co_` care depind de el. + ## Ce umple spatiul, in ordinea frecventei - **Tablespace cu `maxbytes` atins** — nu "disc plin", ci un plafon pus la instalare. Pe XE limita @@ -41,8 +72,15 @@ Pentru actualizarea blocata de spatiu, punctul de plecare e `depanare-pack-updat - **Privilegiile `ANY` nu se aplica pe obiectele din schema `SYS`** cat timp `O7_DICTIONARY_ACCESSIBILITY=FALSE` — orice curatare acolo cere `SYSDBA`. -- Parola `SYS` e generica (vezi `COMUN\docs\local\oracle.md`). `-SysPassword` ramane optional: - diagnosticul de baza merge complet fara el, doar sectiunile SYSDBA se sar. +- Parola `SYS` e de obicei cea generica (vezi `COMUN\docs\local\oracle.md`), dar **nu la toti + clientii** (ex. ROMCONSTRUCT) — cand nu merge, se ia cu `PACK_UPDATE.GetSchemaParola('SYS')`. + `-SysPassword` ramane 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$*` iese `INVALID` la clientul care are accesul doar prin rolul `DBA`, chiar daca + aceleasi interogari merg din SQL*Plus. De aceea granturile directe din `sys_2026_08_03_05`. + Lantul de actualizare **nu** se opreste in acest caz: `sqlplus` iese 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_TRAIL` a picat asa la Rompetrol): intai ridici plafonul, apoi cureti. - `RESIZE` pe datafile da `ORA-03297` daca extentele folosite nu sunt la coada fisierului — un