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
This commit is contained in:
@@ -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`
|
- **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`
|
- **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`
|
- **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`
|
- **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`
|
- **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`
|
- **Diagnostic spațiu Oracle la clienți (job zilnic + emailuri)**: `docs/diagnostic-spatiu-clienti.md`
|
||||||
|
|||||||
144
docs/unde-sunt-scripturile-sys.md
Normal file
144
docs/unde-sunt-scripturile-sys.md
Normal file
@@ -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\<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ă:
|
||||||
|
|
||||||
|
```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_<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.
|
||||||
Reference in New Issue
Block a user