기술 정보
home
채널 소개
home

tbexport로 DDL 추출 시 wrapped 된 package DDL 미추출 문제

문서 유형
장애 해결
분야
관리/환경설정
키워드
DDL
tbexport
적용 제품 버전
5SP1FS06
1 more property

현상

tbexport로 추출한 object ddl script에서 wrapped 된 package ddl이 unwapped 되어 추출 되지 않고 skip 처리되는 문제 현상에 대해 설명합니다.
아래와 같은 package DDL 미추출 현상이 발생합니다.
$ tbexport username=sys password=tibero sid=tibero port=8629 file=export.dat log=export_ddl.log script=y rows=n full=y the entire database: Fri May 09 15:40:46 KST 2025 Export character set: UTF-8 Export national character set: UTF-16 exporting tablespaces exporting roles exporting directories exporting sys privileges exporting public synonyms Packing the file... Export completed successfully : Fri May 09 15:40:48 KST 2025 $ cat export_ddl.log ... BEGIN -- skipping wrapped PSM object : "TIBERO".WRAPPED_PACKAGE null; END; ...
SQL
복사

원인

Tibero 5 버전에서는 sys.tool_utility.get_unwrapped_src(object_id) 함수를 통해 wrapped된 package DDL을 unwrapped할 수 있습니다.
그러나 해당 함수의 반환값이 최대 4000 BYTE(varchar2)로 제한되어 있어, unwrapped된 DDL이 4000 byte를 초과하는 경우에는 unwrapped에 실패하게 됩니다.
이로 인해 tbexport 실행 시 해당 DDL은 skip으로 표기되며, unwrapped된 package DDL을 확인할 수 없습니다.
즉, Tibero 5에서는 tbexport를 통해 wrapped package의 DDL이 unwrapped되어 추출되어야 하나, unwrapped 과정에서 반환 길이 제한으로 인해 오류가 발생하고, 이로 인해 unwrapped 된 package ddl을 확인 하지 못하는 문제가 발생합니다.

해결

tool_utility.get_unwrapped_src 수행 시 반환값의 크기 제한으로 인해 발생하는 문제를 해결하기 위해, 적당한 크기의 변수에 담아 출력될 수 있도록 우회하여 unwapped 된 ddl을 직접 추출 진행하여 해결합니다.
SQL> set serveroutput on; SQL> declare a varchar2(32767); begin a := tool_utility.get_unwrapped_src(skip 된 object id); dbms_output.put_line(a); end; / CREATE OR REPLACE PACKAGE BODY WRAPPED_PACKAGE WRAPPING AS PROCEDURE w(p_text IN VARCHAR2 )IS v_file UTL_FILE.FILE_TYPE; BEGIN v_file := UTL_FILE.FOPEN('DB_LOG','DBLOG_'||TO_CHAR(SYSDATE,'YYYYMMDD')||'.log','A',32767); UTL_FILE.PUT_LINE(v_file, TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS')|| ' I: '|| p_text); UTL_FILE.FCLOSE(v_file); END; PROCEDURE d(p_text IN VARCHAR2 )IS ...추출 성공
SQL
복사