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

52 lines
2.6 KiB
Markdown

# 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.
```sql
-- 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
```
```powershell
& '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`).