Files
comun/docs/oracle_export.md
2026-08-23 11:08:56 +03:00

2.6 KiB

Export surse Oracle (PACK_CONTAFIN & co.) - cum se face

PACK_CONTAFIN.pck din acest folder este exportul sursei pachetului PL/SQL PACK_CONTAFIN. Claude Code isi face singur exportul/reimprospatarea - nu mai e nevoie de export manual din PL/SQL Developer.

Conexiune

Conectare, alias TNS, schema (MARIUSM_AUTO pe ROA_CENTRAL) si capcana BOM la SQL prin pipe: vezi conventie_mediu_oracle.md sectiunea 4. Aici doar ce e specific exportului:

PACK_CONTAFIN exista in schemele MARIUSM_AUTO (dev) si ACN, plus sinonim PUBLIC. Exportul de referinta se face din MARIUSM_AUTO.

Inainte de a lua o sursa de acolo ca referinta pentru o modificare, verifica ca MARIUSM_AUTO are toate scripturile aplicate - procedura si regula "sursa de referinta pentru DDL e MARIUSM_AUTO, nu productia" sunt in scripturi-migrare-db.md, sectiunea "Sursa de referinta pentru DDL".

Comanda de export (re-generare .pck)

linesize prea mic corupe tacut sursa. SQL*Plus face wrap la coloana linesize, deci o linie de cod mai lunga e rupta in doua - inclusiv prin mijlocul unui identificator. Fisierul pare intreg, diff fata de el nu arata nimic, dar recompilarea lui da erori la linii care n-au nicio legatura cu ce ai modificat (ORA-00920, PLS-*). PACK_FACTURARE are linii de peste 1000 de caractere, iar un export la linesize 400 i-a rupt 8. Foloseste linesize 32767 si verifica dupa export ca nicio linie nu atinge exact valoarea linesize.

Exportul e bun pentru CITIT, nu ca baza pentru un script de migrare. Pentru un script de pachet, pleaca de la ultimul script aplicat din SCRIPTURI_CLAR (fisier real, care n-a trecut niciodata printr-un spool) si confirma ca e la zi comparandu-l cu exportul ignorand spatiul alb - asa wrap-ul nu mai conteaza: tr -d ' \t\r\n' < fisier | md5sum pe ambele.

-- export_pack.sql
set pagesize 0 linesize 32767 long 2000000 longchunksize 32767 trimspool on feedback off heading off termout off
spool D:\ROA\ROAGEST\COMUN\docs\PACK_CONTAFIN.pck
select text from all_source where owner='MARIUSM_AUTO' and name='PACK_CONTAFIN' and type='PACKAGE' order by line;
select '/' from dual;
select text from all_source where owner='MARIUSM_AUTO' and name='PACK_CONTAFIN' and type='PACKAGE BODY' order by line;
select '/' from dual;
spool off
exit
& 'D:\ROA\instantclient_19_18\sqlplus.exe' -L -S 'MARIUSM_AUTO/<parola>@ROA_CENTRAL' '@export_pack.sql'

Acelasi tipar merge pentru orice alt pachet/procedura (PACK_SESIUNE, PACK_PRETURI, ...) sau pentru DDL de tabele/view-uri (all_tab_columns, dbms_metadata.get_ddl).