- leaga_skills.ps1: expune skill-urile in ~/.claude/skills prin symlink (citit si de Claude Code, si de opencode), fara copiere - rutare zona->skill in reguli_lucru pct. 7, README, AGENTS.md; skill-ul devine proprietarul procedurii, docurile raman referinta conditionata - rec_skills.md: decizia, inventarul si cum se adauga un skill nou
6.5 KiB
6.5 KiB
name, description
| name | description |
|---|---|
| roa-oracle-diagnostic | Diagnostic read-only pentru doua incidente de productie la clientii ROA - actualizarea automata (PACK_UPDATE) care nu se termina si tablespace-ul/discul Oracle plin. Foloseste-l OBLIGATORIU cand utilizatorul spune "actualizarea nu se termina la clientul X", "a ramas blocat la pasul 3", "update-ul nu a mers azi", "verifica de ce n-a mers update-ul", "clientul are baza plina", "spatiu insuficient la client", "ORA-01653", "ORA-01654", "nu mai pot salva in baza", "tablespace plin" sau cere sa verifici de ce a esuat o actualizare. Ruleaza intai scriptul de diagnostic dedicat, citeste dovada exacta (starea rularii, scriptul candidat, consumatorul de spatiu, procentul tablespace-ului) si abia apoi da verdictul. Nu improviza interogari manuale, nu relansa update-ul si nu rula curatare pana nu stii pasul exact unde s-a oprit. |
Diagnostic ROA: actualizare blocata si spatiu Oracle plin
Doua incidente, acelasi tipar: simptomul din aplicatie nu spune cauza. Fie actualizarea nu se
termina (stare=3 fara dataora_end, log mut), fie baza/discul e plin (ORA-01653/ORA-01654,
blocaj brusc). Diagnostic STRICT read-only: se identifica pasul/consumatorul exact si se propune deblocarea.
Cand se foloseste
- "actualizarea nu se termina la clientul X", "a ramas la pasul 3", "update-ul nu a mers azi";
- "verifica de ce n-a mers actualizarea", "de ce nu s-a actualizat baza la client";
- "clientul are baza plina", "spatiu insuficient", "ORA-01653", "ORA-01654", "ORA-00257";
- orice cerere de a verifica o actualizare esuata sau un tablespace/disk plin la un client; nu improviza interogari si nu relansa update-ul inainte de verdictul scriptului.
Pasi
Ambele: intai conexiunea (tunel SSH pe 1521 + alias TNS pe 127.0.0.1 in
D:\ROA\instantclient_19_18\tnsnames.ora, user contafin_oracle), apoi scriptul dedicat.
A. Actualizarea nu se termina (job UPDATEROA_ZILNIC -> PACK_UPDATE.UpdateROA):
- Ruleaza
diag_actualizare.ps1 -Alias <ALIAS>si citeste verdictul: pana unde a ajuns si unde e eroarea. Lantul e secvential, o etapa picata le opreste pe toate: UpdateApp -> UpdateScripts -> UpdateDatabaseSqlPlus. UPD_ISTORIC:stare(0=start, 1=aplicatii, 2=scripturi, 3=aplicare, 4=incheiat) sidataora_endgol = neincheiata; un sir oprit la aceeasistarearata etapa vinovata.UPD_LOG:dataora_start= rularea,secventa+dataora= ordinea,explicatie(CLOB) = cauza reala. Se goleste la fiecare rulare - iei logul curent sau relansezi ca sa-l reproduce.- Versiuni:
UPD_DATABASE.script_datevs<schema>.VERSIUNE.data_script. Lastare=3faradataora_endcuVERSIUNEblocat, candidatul e primul scriptUPD_DATABASEneaplicat. script_master.loginDMPDIR(C:\DMPDIR) pe server = mesajul real al aplicarii. Eroarea de aici NU ajunge inUPD_LOG; se citeste si prinUTL_FILEfara RDP (util e la sfarsit).- Descarcare: daca etapa 1 a picat, verifica intai folderul Oracle
UPD_<PROGRAM>pe disc (dbms_lob.fileexists(bfilename(...))) siall_directories like 'UPD%', nu reteaua. GetStarerefuza o rulare noua cat timp precedenta e neincheiata si n-a trecut o ora. Deblocarea e doar sugestie - nu o executa fara acordul explicit.
B. Spatiu Oracle plin:
- Ruleaza
diag_spatiu.ps1 -Alias <ALIAS> -Disc(cu-Discdoar pe servere Windows) si citeste verdictul plus topul segmentelor. - Tablespace + datafile: ce e plin,
maxbytesvsbytes, cat mai poate creste. Unmaxbytessub XE 11/12 GB nu e limita XE - e plafon pus la instalare. - Top consumatori: tablespace cu
maxbytesatins,SYSAUX(SQL Tuning Sets/AWR/audit), fisiere.auddinadump(NU se vad din SQL, doar cu-Disc), alert log/trace/ADR, FRA plina cuARCHIVELOG(ORA-00257/ORA-19809), recyclebin/UNDO/TEMP, logurile aplicatiei care cresc. - Daca eroarea de actualizare nu priveste obiectele atinse de script, suspecteaza intai spatiul
(ex.
ORA-01653 table SYS.INFO in tablespace SYSTEM, ridicata dinSYS.PINFO).
Cand A si B se intersecteaza, verdictul leaga scriptul candidat de tablespace-ul plin.
Capcane
UPD_LOGse goleste la fiecare rulare - nu ai istoric; altfel relansezi orbeste.- Eroarea din
additional_info-ul jobului e de obicei falsa:EmailLogridicaORA-20000(SMTP picat) si mascheaza eroarea originala. Cauza adevarata e inUPD_LOG. - UpdateApp abandoneaza TOT la primul program nedescarcat (
CT_INSUCCES): un fisier indisponibil blocheaza la infinit, tacut (Fisierul NU s-a salvat pe disc.). Verifica folderul, nu reteaua. - Ordinea de citit cand actualizarea e muta:
UPD_ISTORIC->UPD_LOG->script_master.log; daca sari direct la logul de SQL, nu stii pe ce schema si pe ce rulare te uiti. - Erorile de script fac
UPD_LOGcurat (WHENEVER SQLERROR EXIT ... ROLLBACK); semnul estare=3faradataora_end+VERSIUNEblocat. Mesajul real e doar inscript_master.log. adrci purgesialter database datafile ... autoextendsunt DOAR sugestii afisate; nu le rula automat si niciodata fara acordul explicit al utilizatorului.- La clienti Oracle 10g lipsesc coloane din
dba_scheduler_*- folosestedba_scheduler_job_run_details. -Discscrie un.ps1temporar inDMPDIR; pe Linux expira dupa 60s cu mesaj.
Criterii de acceptare si dovada
Fara dovezile de mai jos nu exista verdict; diagnosticul NU se raporteaza ca terminat.
- Verdictul scriptului e citat. Ramura A:
stare+dataora_enddinUPD_ISTORICsi linia exacta dinUPD_LOG/script_master.log. Ramura B: procentul tablespace-ului vinovat +maxbytes. - Scriptul candidat e numit exact (primul din
UPD_DATABASEde dupa ultima versiune), nu "undeva in etapa 3". - Dovada e legata de obiectele reale: daca mesajul Oracle nu priveste ce atinge scriptul, s-a dovedit spatiul (procent + plafon), nu scriptul.
- Deblocarea propusa e scrisa ca sugestie cu comanda exacta, neexecutata.
Scripturi
D:\ROA\ROAFACTURARE\COMUN\utile\diag_actualizare.ps1powershell -File D:\ROA\ROAFACTURARE\COMUN\utile\diag_actualizare.ps1 -Alias <ALIAS> [-DoarLog] [-Disc]D:\ROA\ROAFACTURARE\COMUN\utile\diag_spatiu.ps1powershell -File D:\ROA\ROAFACTURARE\COMUN\utile\diag_spatiu.ps1 -Alias <ALIAS> [-Disc] [-SysPassword <parola>] [-Top 30]
Referinta (doar la nevoie)
- Doar daca ramura A (actualizare) sau ramura B (spatiu) cere detalii, citeste
COMUN\docs\depanare-pack-update.mdsiCOMUN\docs\depanare-spatiu-oracle.md.