Files
ROMFASTSQL/docs/refresh-scripturi-dupa-instalare.md
Marius e69fc07e46 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
2026-08-31 13:57:08 +03:00

93 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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