# 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.