ORACLE DBMS_METADATA.GET_DDL
1.
ORACLE
DBMS_METADATA.GET_DDL
A. DDL 의 METADATA 를 호출하기 위해 사용하는 PL/SQL ( FUNCTION ) 이다.
2.
ORACLE
DBMS_METADATA.GET_DDL 용법
A. $ORACLE_HOME/rdbms/admin 의 dbmsmeta.sql 의 내용
FUNCTION get_ddl (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;
위의 입력으로 받는 부분을 보면 object_typ 과 name을 제외하고 다른 부분은
default 값을 가진다.
B. 실행예제
1 create table sample(
2 id number primary key,
3 name varchar2(10) default 'what?'
4* )
( 실행에 앞서 테이블을 간단히 생성하였다. )
SQL> /
1 select dbms_metadata.get_ddl('TABLE', table_name)
2 from user_tables
3* where table_name = 'SAMPLE'
(방금 만든 테이블을 user_tables 에서 dbms_metadata 패키지를 이용해
조회해 보았다. )
SQL> /
DBMS_METADATA.GET_DDL('TABLE',TABLE_NAME)
-------------------------------------------------------------------------------
CREATE TABLE "SCOTT"."SAMPLE"
( "ID" NUMBER,
"NAME" VARCHAR2(10) DEFAULT 'what?'
,
PRIMARY KEY ("ID")
( 위까지는 간단히 테이블을 생성할 때 정의한 내용들이다. )
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
(extent 할당에 대한 구문이다. initial 로 할당되어 있는 값은 64Kb 에 해당한다.)
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE
( scott schema를 생성할 때 default tablespace를 users로 설정하였다. 때문에
table 생성시 이 구문이 생략되면 이를 따르게 된다. )
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
( PCTINCREASE 는 EXTENT 의 성장과 관련된 값으로 % 값이다. DEFAULT 값은
0 이다. )
TABLESPACE "USERS"
3. 효용성
A. dbms_metadata.get_ddl 을 통해 해당 객체의 생성 정보를 조회할 수 있으며 이 정보 안에는 사용자가 직접 지시하지 않은 암시적인 내용을 확인 할 수 있다.