From a07b89e5e1d4ca0305f645ae94dca27fe596fd4c Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Mon, 3 Aug 2026 10:05:33 +0300 Subject: [PATCH] docs: capcane Oracle 10g la scripturile de migrare Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01TM9Cxpzrn9wBSkyBNr22Qc --- docs/scripturi-migrare-db.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/scripturi-migrare-db.md b/docs/scripturi-migrare-db.md index 4c275bd..44a58c5 100644 --- a/docs/scripturi-migrare-db.md +++ b/docs/scripturi-migrare-db.md @@ -24,6 +24,35 @@ Reguli confirmate de Marius (24.07.2026): Verificarile se fac inainte, separat, pe schema de lucru. - **Idempotent**: rulat de doua ori nu mai schimba nimic (`merge`, `where is null`). +## Compatibilitate cu serverele clientilor + +Serverul de dezvoltare e mai nou decat serverele clientilor, deci un script care trece local poate +pica la client si opri actualizarea. **ROMCONSTRUCT e singurul client ramas pe Oracle 10.2** — el da +masura pentru orice se pune in comune. + +Constructii care merg pe dev si pica pe 10g: + +| Constructie | Ce iese pe 10g | +|---|---| +| identificator peste 30 de caractere (tabela, index, constrangere, coloana) | `ORA-00972` (12.2+ accepta 128) | +| `REGEXP_COUNT` (functie din 11g) | `ORA-00904` in SQL / `PLS-00201` in PL/SQL | +| `CONTINUE` (instructiune PL/SQL din 11g) | `PLS-00201: identificatorul 'CONTINUE' trebuie declarat` | +| `FORALL` cu campuri de record din colectie (`S(i).camp`) | `PLS-00436` / `PLS-00382` | + +Plus, independent de versiune: **un obiect nu se poate referi la ceva creat de un script ulterior.** +Pe dev obiectul exista deja, deci pachetul compileaza; la client scriptele se aplica in ordine si +iese `ORA-00942` / corp invalid. Cand un script creeaza o tabela si altul un pachet care o foloseste, +tabela trebuie sa fie prima in ordinea `YYYY_MM_DD_NN`. + +Un pachet care nu are echivalent 10g se livreaza ca varianta separata pentru serverul acela +(ex. `ff_..._PACK_CONTAFIN_10G_ROMCONSTRUCT.pck`). La aplicarea manuala a unei astfel de variante se +compileaza **doar PACKAGE BODY-ul**: recrearea specificatiei invalideaza dependentele si da +`ORA-04068` utilizatorilor conectati. Inainte, verifica ca specificatia din fisier e identica cu cea +de pe server. + +Verificarea erorii se face in `C:\DMPDIR\script_master.log` de pe serverul clientului +(`depanare-pack-update.md`) — nu apare in `UPD_LOG`. + ## Numerotare si versiune_db.txt Numele scriptului: `_YYYY_MM_DD_NN_.sql`. Prefixe in uz: `ff` (schema fiecarei