depanare-spatiu-oracle.md: jobul zilnic de diagnostic + mecanismele reutilizabile
Jobul DIAGSPATIU_ZILNIC (SVN r17969) si mecanismele generale desprinse din investigatie: cheile SERVER_INFO si GetSchemaParola, rularea ca SYS/OS prin UpdateSQLPLUS/ExecuteScriptOS, de ce EmailLog nu se reutilizeaza, ordinea de aplicare a scripturilor sys_. Capcane noi: parola SYS nu e generica la toti clientii, iar rolurile nu se aplica in pachete cu drepturi de definitor - de aici granturile directe din sys_2026_08_03_05. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
This commit is contained in:
@@ -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`.
|
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_<SCHEMA>`. Parola se citeste cu `PACK_UPDATE.GetSchemaParola('<SCHEMA>')`
|
||||||
|
(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/<parola>@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
|
## Ce umple spatiul, in ordinea frecventei
|
||||||
|
|
||||||
- **Tablespace cu `maxbytes` atins** — nu "disc plin", ci un plafon pus la instalare. Pe XE limita
|
- **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
|
- **Privilegiile `ANY` nu se aplica pe obiectele din schema `SYS`** cat timp
|
||||||
`O7_DICTIONARY_ACCESSIBILITY=FALSE` — orice curatare acolo cere `SYSDBA`.
|
`O7_DICTIONARY_ACCESSIBILITY=FALSE` — orice curatare acolo cere `SYSDBA`.
|
||||||
- Parola `SYS` e generica (vezi `COMUN\docs\local\oracle.md`). `-SysPassword` ramane optional:
|
- Parola `SYS` e de obicei cea generica (vezi `COMUN\docs\local\oracle.md`), dar **nu la toti
|
||||||
diagnosticul de baza merge complet fara el, doar sectiunile SYSDBA se sar.
|
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
|
- **Curatenia poate esua din lipsa de spatiu** (`DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL` a picat asa la
|
||||||
Rompetrol): intai ridici plafonul, apoi cureti.
|
Rompetrol): intai ridici plafonul, apoi cureti.
|
||||||
- `RESIZE` pe datafile da `ORA-03297` daca extentele folosite nu sunt la coada fisierului — un
|
- `RESIZE` pe datafile da `ORA-03297` daca extentele folosite nu sunt la coada fisierului — un
|
||||||
|
|||||||
Reference in New Issue
Block a user