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
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
SYSnu s-a creat nimic. Vezidocs/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_PACKde 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
ROAdin 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ă cused -i 's/\r$//; s/$/\r/'. - Nu copia apelul
UpdateVersiunedin 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_UPDATEcereGRANT EXECUTE ON SYS.UPDATESQLPLUS TO CONTAFIN_ORACLEdirect. - Verifică dacă golul e real. Un grant care pe producție e către
CONTAFIN_ORACLEși pe serverul nou cătrePUBLICe echivalent funcțional; nu e gol. La sinonime, compară pesynonym_name, nu petable_name— altfel unSYN_<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.