본문 바로가기

카테고리 없음

ORACLE 9i DBMS_METADATA.GET_DDL v1.0

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 을 통해 해당 객체의 생성 정보를 조회할 수 있으며 이 정보 안에는 사용자가 직접 지시하지 않은 암시적인 내용을 확인 할 수 있다.