Files
ROMFASTSQL/docs/unde-sunt-scripturile-sys.md
Marius b29b9f2548 docs: unde sunt scripturile sys_* si cum se actualizeaza kitul din ele
Corpusul publicat e in D:\ROA\DATABASE\SCRIPTURI_CLAR\<an>\<luna>\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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J7vUBDUY5hvLwRZ45Uqzcf
2026-08-31 13:59:05 +03:00

6.5 KiB

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\<an>\<lună>\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ă:

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:

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:

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:

-- 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:

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_<nume> 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.