# Conventii - mediul Oracle de dev/test Regula lui Marius, 20.08.2026. Se aplica **de fiecare data**, si sesiunii principale, si subagentilor. Nu e context, e conventie de lucru. ## 1. Nu se spune "baza" Termenul e vag si a produs deja o intrebare care n-ar fi trebuit sa existe: *"ce este baza? care schema?"*. Se scrie intotdeauna **schema + instanta**, explicit: > "se ruleaza pe schema `MARIUSM_AUTO` de pe `ROA_CENTRAL`" nu "se ruleaza pe baza". Acelasi lucru in rapoarte, in handoff-uri, in propuneri si in mesaje. ## 2. Pe dev/test se lucreaza NUMAI cu ROA_CENTRAL Instanta: **`ROA_CENTRAL`**. Schemele permise, singurele doua: | Schema | Ce este | |---|---| | **`MARIUSM_AUTO`** | schema **de firma** - datele si pachetele de business (`VANZARI`, `VANZARI_DETALII`, `JTVA_COLOANE`, `PACK_FACTURARE`...). Aici se lucreaza pe functionalitate. | | **`CONTAFIN_ORACLE`** | schema **comuna tuturor schemelor de firma**: pachete comune, actualizarea bazei de date, utilizatori, drepturi de utilizator, nomenclatorul de firme. Se creeaza **pe fiecare server**. | Nimic altceva. Daca o sarcina pare sa ceara altceva, se intreaba intai. Modelul de retinut: fiecare firma are schema ei (in dev/test, `MARIUSM_AUTO`), iar `CONTAFIN_ORACLE` sta alaturi, o singura data per server, si deserveste toate schemele de firma. Deci o modificare in `CONTAFIN_ORACLE` e **transversala peste toate firmele de pe acel server** - se trateaza cu grija corespunzatoare, nu ca o schimbare locala. ## 3. Schema `ACN` nu se foloseste si nu se citeaza Nu se interogheaza, nu se ia ca sursa de adevar, nu se pomeneste in rapoarte ca element de comparatie. Daca apare in rezultatul unei interogari pe `ALL_OBJECTS`/`ALL_SOURCE`, se **filtreaza din start**, nu se comenteaza. Consecinta practica pentru interogarile de dictionar: se pune **intotdeauna** filtrul de `owner`. Fara el, randurile mai multor scheme se intercaleaza si output-ul devine ilizibil - capcana deja platita o data la citirea unui corp de pachet din `ALL_SOURCE`. ```sql select text from all_source where owner = 'MARIUSM_AUTO' -- niciodata fara aceasta linie and name = 'PACK_FACTURARE' and type = 'PACKAGE BODY' order by line; ``` ## 4. Conectare Client: `D:\ROA\instantclient_19_18\sqlplus.exe` (`TNS_ADMIN` deja setat spre acelasi folder). Alias TNS: `ROA_CENTRAL` -> `10.0.20.121:1521`, `SERVICE_NAME=ROA` (`tnsnames.ora` din acelasi folder). ``` & 'D:\ROA\instantclient_19_18\sqlplus.exe' -L -S 'MARIUSM_AUTO/ROMFASTSOFT@ROA_CENTRAL' '@fisier.sql' ``` Fisierul `.sql` se scrie in **ASCII**. SQL trimis prin pipe din PowerShell e spart de BOM (`SP2-0734: unknown command beginning "...select..."` - BOM UTF-16 sparge parserul). Parola nu e versionata in git - in `COMUN\docs\local\oracle.md` (ignorat de git, exista in SVN). ## 5. Ce inseamna "se ruleaza un script de pachet" Scripturile din `D:\ROA\DATABASE\SCRIPTURI_CLAR\` **nu modifica date** - inlocuiesc **cod stocat in Oracle** (`CREATE OR REPLACE PACKAGE` + `PACKAGE BODY`). De retinut: - Efectul e **imediat si pentru toti cei conectati**. Nu seamana cu VFP, unde fiecare statie ruleaza propriul `.exe`. - Se recreeaza si **specificatia**, nu doar corpul - asta invalideaza obiectele dependente, care se recompileaza la prima folosire. - **Nu exista "undo".** Revenirea inseamna rularea unei versiuni anterioare a pachetului. - Scripturile sunt scrise **necalificat** (`CREATE OR REPLACE PACKAGE "PACK_FACTURARE"`, fara `CONNECT`, fara prefix de schema). Deci **se aplica schemei cu care esti conectat**, nu au tinta proprie. Schema tinta o decide exclusiv sirul de conectare. - Rularea unui script pe orice schema **se face doar la cererea explicita a lui Marius**. Un agent scrie scriptul; nu il aplica. ## 6. Stare constatata pe `ROA_CENTRAL`, 20.08.2026 Reper istoric, constatat din ROAFACTURARE; de reconfirmat daca a trecut timp. Punctele 1-5 sunt conventia propriu-zisa si se aplica in toate produsele ROA. ``` DB_NAME: ROA server: 4e73d257c791 alias TNS: ROA_CENTRAL ``` - `MARIUSM_AUTO` isi detine **propriile tabele** (`VANZARI_DETALII`, `JTVA_COLOANE` sunt TABLE in schema, nu sinonime catre alta schema). Deci cifrele obtinute conectat ca `MARIUSM_AUTO` sunt ale datelor din `MARIUSM_AUTO`. - `CONTAFIN_ORACLE` are 393 de obiecte si **nu** detine `VANZARI_DETALII`/`JTVA_COLOANE` - coerent cu rolul ei: infrastructura comuna (utilizatori, drepturi, firme, actualizare), nu date de firma. - `MARIUSM_AUTO.PACK_FACTURARE`: PACKAGE si PACKAGE BODY **VALID**, corpul modificat ultima data **20.08.2026 08:43** (aplicarea scriptului `ff_2026_08_20_01`, garda `FACT-025`).