본문 바로가기
프로그래밍/데이터베이스

Oracle 테이블 및 프로시저 생성 스크립트 추출하기

by pentode 2018. 4. 20.

데이터베이스를 다루는데 있어서 가끔 GUI 툴을 쓸 수 없는 경우가 있습니다. 또한 프로시저 같은 경우 아주 큰 용량의 경우 exp 를 통해서 덤프를 받은 파일로 복구를 할 때 제대로 생성이 안되는 경우도 있습니다. 이렇게 좋지 않은 환경이 겹칠 경우 부득이하게 SQL*Plus를 사용해서 필요한 곳을 부분적으로 덤프 하게 됩니다.


테이블이나 프로시저의 생성 스크립트를 추출하기 위해서 DBMS_METADATA 패키지의  GET_DDL 함수를 사용할 수 있습니다.



1. 생성 스크립트 확인


- 테이블명이 'TB_BOARD' 인 테이블의 생성 스크립트를 확인합니다.


SELECT DBMS_METADATA.GET_DDL('TABLE','TB_BOARD') FROM DUAL;


- 인덱스의 이름이 'IX_BOARD' 인 인덱스의 생성 스크립트를 확인합니다.


SELECT DBMS_METADATA.GET_DDL('INDEX','IX_BOARD') FROM DUAL;


- 프로시져의 이름이 'P_BOARD' 인 프로시저의 생성 스크립트를 확인합니다.


SELECT DBMS_METADATA.GET_DDL('PROCEDURE','P_BOARD') FROM DUAL;


- 시퀀스의 이름이 'SEQ_BOARD' 인 시퀀스의 생성 스크립트를 확인합니다.


SELECT DBMS_METADATA.GET_DDL('SEQUENCE','SEQ_BOARD') FROM DUAL;



2. 생성스크립트 파일로 저장하기


- 테이블, 인덱스, 시퀀스, 프로시저 생성 스크립트를 파일로 저장합니다.


set pagesize 0

set long 90000

set feedback off

set echo off 


spool board.sql 


SELECT DBMS_METADATA.GET_DDL('TABLE', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='TABLE';


SELECT DBMS_METADATA.GET_DDL('INDEX', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='INDEX';


SELECT DBMS_METADATA.GET_DDL('SEQUENCE', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='SEQUENCE';


SELECT DBMS_METADATA.GET_DDL('PROCEDURE', U.OBJECT_NAME) FROM USER_OBJECTS U WHERE OBJECT_TYPE='PROCEDURE';


spool off

반응형