조회를 원하는 계정으로 sqlplus 실행 후 아래처럼 쿼리 수행하여 DDL 추출. table의 owner가 로그인 하는 계정인 것만 조회하므로 로그인하는 계정은 조회원하는 table의 onwer인 계정으로 로그인 할 것.
-- 1. 파일 저장 위치와 이름을 지정. SPOOL D:\TABLE_DDL.txt
-- 2. DDL 출력을 위한 환경 설정. SET HEADING OFF; -- 컬럼 제목을 출력하지 않습니다. SET FEEDBACK OFF; -- 결과 건수를 출력하지 않습니다. SET ECHO OFF; -- 실행되는 SQL 문을 화면에 출력하지 않습니다. SET PAGESIZE 0; -- 페이지 나누기를 하지 않습니다. SET LONG 999999; -- DDL이 잘리지 않도록 LONG 데이터 타입을 충분히 길게 설정합니다. SET LINESIZE 200; -- 한 라인의 길이를 설정합니다. SET TRIMSPOOL ON; -- 스풀된 파일의 각 라인에서 후행 공백을 제거합니다.
-- 3. DBMS_METADATA 패키지를 사용하여 DDL 조회. -- 'GEOINFO' 부분을 원하는 스키마 이름으로 변경하세요. SELECT DBMS_METADATA.GET_DDL('TABLE', TABLE_NAME) || CHR(10) || '/' || CHR(10) FROM ALL_TABLES WHERE OWNER = '계정아이디';
-- 4. 파일 저장 종료. SPOOL OFF;
-- 5. 설정을 원래대로 복원. SET HEADING ON; SET FEEDBACK ON; SET ECHO ON; SET PAGESIZE 14; SET LONG 80; SET LINESIZE 80; SET TRIMSPOOL OFF;
Stored Procedure DDL 가져오기
SPOOL D:\PROCEDURE_DDL.txt
SELECT DBMS_METADATA.GET_DDL('PROCEDURE', OBJECT_NAME) || CHR(10) || '/' || CHR(10) FROM ALL_OBJECTS WHERE OWNER = ' 계정아이디' AND OBJECT_TYPE = 'PROCEDURE';
SPOOL OFF;
Function DDL 가져오기
SPOOL D:\FUNCTION_DDL.txt
SELECT DBMS_METADATA.GET_DDL('FUNCTION', OBJECT_NAME) || CHR(10) || '/' || CHR(10) FROM ALL_OBJECTS WHERE OWNER = ' 계정아이디' AND OBJECT_TYPE = 'FUNCTION';
SPOOL OFF;
SPOOL D:\TYPE_DDL.txt
SELECT DBMS_METADATA.GET_DDL('TYPE', TYPE_NAME) || CHR(10) || '/' || CHR(10) FROM ALL_TYPES WHERE OWNER = ' 계정아이디';
SPOOL OFF;
-- 설정을 원래대로 복원. SET HEADING ON; SET FEEDBACK ON; SET ECHO ON; SET PAGESIZE 14; SET LONG 80; SET LINESIZE 80; SET TRIMSPOOL OFF;