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

5.7 KiB
Raw Blame History

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.