From b29b9f25489c3424bf93fbdd50414200278cfc10 Mon Sep 17 00:00:00 2001 From: Marius Date: Mon, 31 Aug 2026 13:59:05 +0300 Subject: [PATCH] docs: unde sunt scripturile sys_* si cum se actualizeaza kitul din ele Corpusul publicat e in D:\ROA\DATABASE\SCRIPTURI_CLAR\\\sys_*.sql (36 fisiere, 2009-2026). Restul copiilor de pe statie si din repo (ALTELE\Creare_server_scripturi, new-roa-oracle-server\) sunt snapshoturi vechi, fara nimic din 2026 -- un find peste D:\ROA da ~61 de rezultate din cauza lor. Documentul spune: unde e sursa de adevar si ce arata ca sursa dar nu e; conventia de nume si cum se marcheaza aplicarea in CONTAFIN_ORACLE.VERSIUNE (si de ce nu poti intreba tabela aia pe un server nou); interogarile care dau diferenta reala fata de productia 10.0.20.36; unde intra fiecare tip de obiect gasit in kit; capcanele la editare (CRLF, UpdateVersiune, grant direct vs prin rol, comparatie pe synonym_name nu pe table_name). Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01J7vUBDUY5hvLwRZ45Uqzcf --- CLAUDE.md | 1 + docs/unde-sunt-scripturile-sys.md | 144 ++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 docs/unde-sunt-scripturile-sys.md diff --git a/CLAUDE.md b/CLAUDE.md index e34bace..ec6a6e4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -54,6 +54,7 @@ input/ # Oracle DMP files for import - **Conectarea clienților vechi (Instant Client 10/11) la 21c — ORA-28040 / ORA-01017 / ORA-12514**: `docs/lectii-conectare-client-oracle.md` - **Aliasul TNS lipsă pe server — eșecuri tăcute (actualizarea ROA „SUCCEEDED" fără să aplice nimic; exportul zilnic `backupora.exe` scrie „DONE" cu directorul gol)**: `docs/lectii-actualizare-roa-alias-tns.md` - **Sinonime publice și obiecte SYS lipsă pe un server nou — refresh după instalare, nu liste crescute în kit**: `docs/refresh-scripturi-dupa-instalare.md` +- **Unde sunt scripturile `sys_*` și cum se actualizează kitul din ele**: `docs/unde-sunt-scripturile-sys.md` - **Kit de instalare pentru client (DMP-uri șablon + scripturi, gata de dus la client)**: `proxmox/lxc108-oracle/scripts/build-client-kit.ps1` - **VM 302 test environment for ROA setup**: `proxmox/vm302-oracle-test/README.md` - **Diagnostic spațiu Oracle la clienți (job zilnic + emailuri)**: `docs/diagnostic-spatiu-clienti.md` diff --git a/docs/unde-sunt-scripturile-sys.md b/docs/unde-sunt-scripturile-sys.md new file mode 100644 index 0000000..9ac0a6d --- /dev/null +++ b/docs/unde-sunt-scripturile-sys.md @@ -0,0 +1,144 @@ +# Unde sunt scripturile `sys_*` și cum se actualizează kitul din ele + +Scop: să se poată răspunde, fără redescoperire, la întrebarea *„ce scripturi `sys_*` există, care +dintre ele nu sunt în kit, și cum le pun acolo"*. Companion la +`docs/refresh-scripturi-dupa-instalare.md`, care explică **de ce** e nevoie de asta. + +## 1. Sursa de adevăr + +``` +D:\ROA\DATABASE\SCRIPTURI_CLAR\\\sys_*.sql +``` + +Aici sunt scripturile publicate, în forma în care le aplică `ROAACTUALIZARI`. La 31.08.2026: +**36 fișiere** (35 distincte, unul dublat), din 2009 până în august 2026. În același director stau +și `co_*` (comune, rulate în `CONTAFIN_ORACLE`) și `ff_*` (pe schemele de firmă), plus `wip*.txt` +— acelea sunt lucru în curs, **nu** se iau. + +Listare rapidă: + +```bash +find /d/ROA/DATABASE/SCRIPTURI_CLAR -iname "sys_*.sql" | sort +``` + +## 2. Locuri care arată ca surse, dar nu sunt + +| Locație | Ce e | De ce nu se folosește | +|---|---|---| +| `D:\ROA\DATABASE\ALTELE\Creare_server_scripturi\` | 29 fișiere `sys_*` | Snapshot vechi pentru creare server; nu are nimic din 2026 | +| `D:\ROA\DATABASE\ALTELE\linux_creare_server_scripturi\` | 25 fișiere | Varianta Linux a aceluiași snapshot | +| `D:\ROA\DATABASE\ALTELE\output\Creare_server_scripturi\` | 6 fișiere | Rest de generare | +| `proxmox/lxc108-oracle/new-roa-oracle-server/` (în repo) | 29 fișiere `sys_*` | Copie parțială și veche — **niciun script din 2026** | + +Un `find /d/ROA -iname "sys_*.sql"` întoarce ~61 de rezultate tocmai din cauza acestor copii. +Numai `SCRIPTURI_CLAR` contează. + +## 3. Convenția de nume și cum se marchează aplicarea + +``` +sys_YYYY_MM_DD_##_DESCRIERE.sql +``` + +Fiecare script se termină cu marcarea în tabela de versiuni: + +```sql +exec contafin_oracle.pack_migrare.UpdateVersiune('sys_2026_08_08_02_SYS_INFO_TABLESPACE_PURJARE','','SYS'); +commit; +``` + +Tabela e `CONTAFIN_ORACLE.VERSIUNE`, coloanele utile: `SCRIPT_FINAL` (numele scriptului), +`DATA_SCRIPT` + `SEQ_SCRIPT` (ordinea), `TIP_SCRIPT`, `DATA_FINAL` (când s-a aplicat), +`ID_VERSIUNE`. + +> **Capcană.** Nu întreba tabela asta ca să afli ce e aplicat pe un server nou. Ea **vine cu +> DMP-ul**, deci pe o bază proaspăt importată toate scripturile figurează deja ca aplicate, chiar +> dacă în `SYS` nu s-a creat nimic. Vezi `docs/refresh-scripturi-dupa-instalare.md`. + +## 4. Cum afli ce lipsește de fapt + +Se compară **starea reală a schemei `SYS`** cu producția ROMFAST `10.0.20.36` (Oracle 19c SE2, +non-CDB, SID `ROA`), unde scripturile s-au aplicat în timp. + +Conectare: + +```bash +scp -P 22122 x.sql Administrator@10.0.20.36:C:/Windows/Temp/ +ssh -p 22122 Administrator@10.0.20.36 "set ORACLE_SID=ROA& sqlplus -s / as sysdba @C:\Windows\Temp\x.sql" +``` + +(shell-ul de acolo e `cmd.exe`; pe serverele client cu PDB adaugă +`alter session set container=XEPDB1;` la începutul scriptului) + +Interogările care dau diferența: + +```sql +-- obiecte proprii ROA din SYS +select object_name, object_type, status from dba_objects + where owner='SYS' and oracle_maintained='N' order by 1,2; + +-- granturi de la SYS către CONTAFIN_ORACLE +select table_name, privilege from dba_tab_privs + where grantor='SYS' and grantee='CONTAFIN_ORACLE' order by 1,2; + +-- sinonime publice către SYS +select synonym_name, table_name from dba_synonyms + where owner='PUBLIC' and table_owner='SYS' order by 1; + +-- joburi de scheduler proprii +select job_name, enabled, state from dba_scheduler_jobs + where owner='SYS' and job_name not like 'ORA$%' and job_name not like 'SYS$%' order by 1; + +-- roluri si privilegii de sistem +select granted_role from dba_role_privs where grantee='CONTAFIN_ORACLE' order by 1; +select privilege from dba_sys_privs where grantee='CONTAFIN_ORACLE' order by 1; +``` + +Ce apare pe `10.0.20.36` și lipsește pe serverul verificat se caută apoi în corpus: + +```bash +grep -rlin "NUMELE_OBIECTULUI" --include="sys_*.sql" /d/ROA/DATABASE/SCRIPTURI_CLAR +``` + +Așa s-a găsit că `SYS.NEWSCHEMAPROGRESS` vine din `sys_2014_11_06_01_FIRMA.sql` (funcția, versiunea +curentă neîmpachetată), iar sinonimul public `SYN_NEWSCHEMAPROGRESS` din +`sys_2012_06_21_01_FIRMA.sql`. + +### Două avertismente de metodă + +- **ROMFAST e referință pentru *ce lipsește cu totul*, nu pentru *cât de nou e ce există*.** + `AUTH_PACK` de pe un server instalat recent cu kitul e mai nou decât cel de pe ROMFAST + (spec 62 vs 42 linii, body 533 vs 507). Nu „actualiza" înapoi. +- **PDB-ul `ROA` din laborator (LXC 108) nu e referință.** Conține obiecte de dezvoltare + (`TEST_*`, `PLSQL_PROFILER_*`, `SYS_EXPORT_SCHEMA_*`). O comparație cu el produce zeci de + „lipsuri" false. + +## 5. Unde se pune ce găsești + +| Ce ai găsit | Unde intră în kit | +|---|---| +| Obiect nou în `SYS` (tabelă, pachet, procedură, funcție, view, secvență) | `roa-windows-setup/sql/sys-objects.sql`, ca pas numerotat nou | +| Sinonim public către `SYS` | `roa-windows-setup/sql/sys-grants.sql`, secțiunea `[3/6]` (drop + create + grant) | +| Grant de la `SYS` către `CONTAFIN_ORACLE` sau `PUBLIC` | `roa-windows-setup/sql/sys-grants.sql`, secțiunea `[1/6]` sau `[2/6]` | +| Sinonim public către un obiect `CONTAFIN_ORACLE` | `roa-windows-setup/sql/synonyms-public.sql` | +| Patch aplicabil **după** o instalare deja făcută | `roa-windows-setup/sql/sys-updates/`, cu nume `YYYY_MM_DD_##_DESCRIERE.sql` | + +Reguli la editare: + +- **Fișierele sunt CRLF.** Un editor care le salvează cu LF face diff-ul să pară că s-a rescris tot + fișierul (1800 de linii în loc de 50). Verifică cu `file` și repară cu + `sed -i 's/\r$//; s/$/\r/'`. +- **Nu copia apelul `UpdateVersiune`** din scriptul original în kit. Kitul rulează la instalare, pe + o bază unde tabela de versiuni vine oricum din DMP; marcarea acolo doar ascunde starea. +- **Grantul trebuie direct**, nu prin rol și nu prin sinonim, dacă obiectul e apelat calificat din + PL/SQL cu drepturi de definitor (rolurile nu se aplică acolo). De asta `PACK_UPDATE` cere + `GRANT EXECUTE ON SYS.UPDATESQLPLUS TO CONTAFIN_ORACLE` direct. +- **Verifică dacă golul e real.** Un grant care pe producție e către `CONTAFIN_ORACLE` și pe + serverul nou către `PUBLIC` e echivalent funcțional; nu e gol. La sinonime, compară pe + `synonym_name`, nu pe `table_name` — altfel un `SYN_` existent maschează lipsa numelui + simplu. + +## 6. Stadiul la 31.08.2026 + +Tot corpusul `sys_*` este fie consolidat în `sys-objects.sql` / `sys-grants.sql`, fie deja prezent +pe serverele verificate. Singurul gol găsit a fost `SYS.NEWSCHEMAPROGRESS` (+ sinonim + două +granturi din `sys_2013_01_23_02.sql`), acum în kit.