본문 바로가기

IT관련

오라클 Object 생성 SQL 보기, DDL 스크립트 추출 - 테이블, 인덱스, 뷰, 함수, 프로시져, 시퀀스

Oracle DB에서 Table, Index, Function, Procedure, View, Sequence 등의 Create SQL 문장을 확인하고자 할 때,

보통은 Orange, Toad, SQL Developer 같은 툴들을 이용하면 메뉴에 있는 기능으로 쉽게 Create DDL문을 추출할 수 있습니다.

하지만, 이런 툴이 없을 때 간단하게 SQL*Plus 상에서 이용할 수 있는 커맨드가 있습니다.

 

dbms_metadata 패키지의 get_ddl( ) 함수를 이용하면 쉽게 오브젝트들의 생성 스크립트를 추출할 수 있습니다.

이 기능은 Oracle 9i 이상 지원됩니다.

 


SQL> set pagesize 0
SQL> set long 40000
SQL> select dbms_metadata.get_ddl('TABLE','SALES') from dual;

 

위 샘플은 SALES 테이블의 스크립트를 추출하는 예입니다.

 

set pagesize 0 은 화면에서 출력하는 단위(라인수)가 있는데 이걸 없애는 것입니다.

set long 40000 은 화면에서 출력되는 글자수를 40000 으로 지정하는 것입니다. 만약 소스가 더 길다면 더 크게 잡아주면 됩니다.

 

첫번째 인자로 조회할 Object Type 을 지정합니다.

'TABLE' 대신 'INDEX', 'VIEW', 'PROCEDURE', 'FUNCTION' 등을 지정할 수 있습니다.

 

두번째 인자는 조회할 Object 명을 지정합니다.

위에서는 'SALES' 테이블을 지정했습니다.

 

 

만약 SALES 테이블이 여러 DB유저에 있다면, 유저를 아래처럼 지정할 수 있습니다.

아래는 'SCOTT' 유저에 있는 'SALES' 테이블을 찾습니다. 유저를 명시하지 않으면 Default로 현재 유저(스키마) 내에서 오브젝트를 찾습니다.

 


SQL> select dbms_metadata.get_ddl('TABLE','SALES', 'SCOTT') from dual;

 

 

아래는 실행 샘플들~~

 

 

Index 추출~

 

Procedure 추출~

 

View 추출~

 

Sequence 추출~

 

 

Oracle DB 내의 모든 오브젝트들에 대한 Create SQL 문을 추출할 수 있네요.