fix(roa-setup): sinonime publice si obiecte SYS lipsa pe serverele instalate cu kitul
Pe VADECO (instalat 25.08.2026) salvarea in istoric coduri fiscale pica cu PLS-00905: VADECO.PACK_PARTENERI invalid. Cauza: pachetul isi declara parametrii ca ISTORIC_CODURI_FISCALE.<col>%TYPE, nume necalificat, iar sinonimul public lipsea. Serverul avea 81 de sinonime publice catre CONTAFIN_ORACLE, productia 10.0.20.36 are 100 -- lipseau exact 20. Gaura apare pentru ca sinonimele publice nu fac parte dintr-un export schema-mode (impdp nu le aduce), singurul loc care le creeaza este o lista enumerata manual, iar CONTAFIN_ORACLE.VERSIUNE vine cu DMP-ul si marcheaza scripturile co_*/sys_* drept aplicate, deci nici ROAACTUALIZARI nu le mai ruleaza. Din acelasi motiv lipsea si SYS.NEWSCHEMAPROGRESS, o functie din 2014. - synonyms-public.sql: cele 20 de sinonime (81 -> 101 CREATE) - sys-objects.sql: pas [9b/10], SYS.NEWSCHEMAPROGRESS (sys_2014_11_06_01_FIRMA) - sys-grants.sql: SYN_NEWSCHEMAPROGRESS in [3/6]; granturi directe SELECT pe SYS.DBA_DATAPUMP_JOBS si SYS.AUTH_SERII in [1/6] (sys_2013_01_23_02) - docs/refresh-scripturi-dupa-instalare.md: de ce completarea listelor e paliativ si ce ar trebui sa faca un pas de refresh rulat dupa instalare, nu la instalare - sys-updates/README.md, CLAUDE.md: trimiteri catre documentul nou Aplicat pe VADECO: PACK_PARTENERI si PACK_IMPORT_COMENZI sunt VALID pe VADECO, DANUBE, LACERTA si SPACE. Obiectele ramase invalide sunt cele preexistente, invalide si pe 10.0.20.36. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J7vUBDUY5hvLwRZ45Uqzcf
This commit is contained in:
92
docs/refresh-scripturi-dupa-instalare.md
Normal file
92
docs/refresh-scripturi-dupa-instalare.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Scripturile de instalare trebuie reîmprospătate la o rulare ulterioară, nu la instalare
|
||||
|
||||
**Constatat la VADECO, 2026-08-31.** Serverul fusese instalat pe 25.08.2026 cu kitul Windows și
|
||||
avea 81 de sinonime publice către `CONTAFIN_ORACLE`, în timp ce producția ROMFAST (10.0.20.36) are
|
||||
100. Lipseau exact 20, printre care `ISTORIC_CODURI_FISCALE`, `PACK_ISTORIC_CF` și toate
|
||||
`PLJSON*` — de unde `PLS-00905: object VADECO.PACK_PARTENERI is invalid` la salvarea în istoric
|
||||
coduri fiscale. Separat, lipsea `SYS.NEWSCHEMAPROGRESS`, o funcție din 2014.
|
||||
|
||||
## De ce apare gaura
|
||||
|
||||
Trei mecanisme care se acoperă unul pe altul:
|
||||
|
||||
1. **Sinonimele publice nu fac parte dintr-un export schema-mode.** `expdp schemas=CONTAFIN_ORACLE`
|
||||
scoate tabelele, pachetele, tipurile și granturile de obiect, dar sinonimele publice aparțin lui
|
||||
`PUBLIC`, nu schemei. `impdp` nu le aduce niciodată. Obiectele ajung pe server; numele prin care
|
||||
se ajunge la ele, nu.
|
||||
2. **Singurul loc care le creează este o listă enumerată manual** —
|
||||
`roa-windows-setup/sql/synonyms-public.sql`, plus `sys-objects.sql` și `sys-grants.sql` pentru
|
||||
partea SYS. Listele se scriu la un moment dat și rămân acolo.
|
||||
3. **`ROAACTUALIZARI` nu repară gaura, pentru că nu știe că există.** Tabela de versiuni a lui
|
||||
`PACK_MIGRARE` trăiește în `CONTAFIN_ORACLE` și **vine cu DMP-ul**, deci pe baza nouă
|
||||
scripturile `co_*` și `sys_*` figurează deja ca aplicate și sunt sărite — deși în `SYS` și în
|
||||
`PUBLIC` nu s-a creat nimic. Vezi și `docs/lectii-actualizare-roa-alias-tns.md`.
|
||||
|
||||
Rezultatul: o instalare nouă pornește cu **obiectele la zi** (vin din DMP), cu **sinonimele și
|
||||
obiectele SYS de la data ultimei actualizări manuale a listelor**, și cu un contor care spune că
|
||||
totul e aplicat. Cu cât DMP-ul e mai nou față de liste, cu atât gaura e mai mare.
|
||||
|
||||
## Direcția corectă: refresh după instalare, nu liste crescute la nesfârșit
|
||||
|
||||
Completarea listelor din kit rezolvă instalarea de azi, nu problema. Orice obiect central adăugat
|
||||
după ultima editare a listelor reintroduce exact aceeași situație, iar defectul se vede abia la
|
||||
client, ca pachet invalid.
|
||||
|
||||
Pasul care lipsește este un **refresh, rulat după instalare și re-rulabil oricând**, care nu
|
||||
depinde de tabela de versiuni venită cu DMP-ul:
|
||||
|
||||
- **Nu la instalare.** La instalare, `synonyms-public.sql` / `sys-objects.sql` / `sys-grants.sql`
|
||||
rămân ce sunt: aduc baza într-o stare pornibilă. Nu au de unde ști ce s-a mai adăugat central
|
||||
între momentul în care au fost scrise și momentul instalării.
|
||||
- **La o rulare ulterioară**, un pas separat compară starea reală a bazei cu sursa de adevăr și
|
||||
completează diferența. Idempotent, fără a scrie în `VERSIUNE`.
|
||||
|
||||
### Ce trebuie să facă refresh-ul
|
||||
|
||||
1. **Sinonimele publice** — generate, nu enumerate. Sursa: obiectele `CONTAFIN_ORACLE` cu grant
|
||||
către `PUBLIC` care nu au deja un sinonim public **cu același nume** (nu cu același obiect
|
||||
țintă — atenție, există și sinonime `SYN_<nume>`, iar un filtru pe `table_name` raportează
|
||||
numele simplu ca acoperit deși nu se rezolvă). Alternativ, exportate din 10.0.20.36.
|
||||
2. **Scripturile `sys_*` mai noi decât kitul** — aplicate pe baza a ceea ce există efectiv în `SYS`,
|
||||
nu pe baza a ce spune `CONTAFIN_ORACLE.VERSIUNE`. Corpusul curent:
|
||||
`D:\ROA\DATABASE\SCRIPTURI_CLAR\<an>\<lună>\sys_*.sql`. Copia din
|
||||
`proxmox/lxc108-oracle/new-roa-oracle-server/` este veche și incompletă (nu conține niciun
|
||||
script din 2026) — nu se folosește ca sursă.
|
||||
3. **Verificare la final** — obiecte invalide pe `CONTAFIN_ORACLE` și pe schemele de firmă. Cele
|
||||
preexistente sunt cunoscute și invalide și pe producție (`EMAILINCASARI`,
|
||||
`RESPONSABILI2PARTENERI`, `PACK_IMPORT`, `PACK_HOTEL`, `PACK_RESTAURANT`,
|
||||
`ACTUALIZARE_STOC_072010`, `CRM_V*`, `VCRM_*`, `VBALANTA_CLIENTI`, `VNOM_INTRET`); ele nu sunt
|
||||
semnal de instalare greșită.
|
||||
|
||||
### Referința de comparație
|
||||
|
||||
**10.0.20.36 (ROMFAST producție, Oracle 19c SE2, non-CDB, SID ROA).**
|
||||
|
||||
PDB-ul `ROA` din laborator (LXC 108) **nu** e referință validă: are 252 de sinonime publice, multe
|
||||
pentru obiecte de dezvoltare (`TEST_*`, `PLSQL_PROFILER_*`, `SYS_EXPORT_SCHEMA_*`) care nu există
|
||||
pe niciun server de producție. O comparație cu laboratorul dă 171 de sinonime „lipsă", din care
|
||||
doar 20 sunt reale.
|
||||
|
||||
Atenție și în sens invers: pentru **versiunile** obiectelor SYS, ROMFAST e în urmă — `AUTH_PACK` de
|
||||
pe VADECO e mai nou (spec 62 vs 42 linii, body 533 vs 507). ROMFAST e referință pentru *ce lipsește
|
||||
cu totul*, nu pentru cât de nou e ce există.
|
||||
|
||||
## Ce s-a făcut pe 2026-08-31 (paliativ, nu soluția)
|
||||
|
||||
Listele din kit au fost completate cu ce lipsea, iar VADECO a fost reparat punctual:
|
||||
|
||||
- `roa-windows-setup/sql/synonyms-public.sql` — cele 20 de sinonime (81 → 101 `CREATE`).
|
||||
- `roa-windows-setup/sql/sys-objects.sql` — pas `[9b/10]`, `SYS.NEWSCHEMAPROGRESS`
|
||||
(din `sys_2014_11_06_01_FIRMA.sql`).
|
||||
- `roa-windows-setup/sql/sys-grants.sql` — `SYN_NEWSCHEMAPROGRESS` în `[3/6]`; granturile directe
|
||||
`SELECT` pe `SYS.DBA_DATAPUMP_JOBS` și `SYS.AUTH_SERII` către `CONTAFIN_ORACLE` în `[1/6]`
|
||||
(din `sys_2013_01_23_02.sql`).
|
||||
- Aplicat pe VADECO cu două scripturi ad-hoc (create public synonym × 20, respectiv funcția
|
||||
SYS + sinonimul + granturile), rulate ca `SYSDBA` pe `XEPDB1`. Nu sunt păstrate în repo: conținutul
|
||||
lor este exact ce s-a consolidat mai sus în kit, deci se regenerează de acolo.
|
||||
După rulare, `PACK_PARTENERI` și `PACK_IMPORT_COMENZI` sunt VALID pe VADECO, DANUBE, LACERTA și
|
||||
SPACE.
|
||||
|
||||
Asta închide cazul VADECO și instalările făcute de acum înainte. **Nu** închide problema: listele
|
||||
sunt tot enumerate manual și vor rămâne din nou în urmă. Pasul de refresh descris mai sus este ce
|
||||
mai lipsește.
|
||||
Reference in New Issue
Block a user