TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-08-29 |
제목 | ddl 뽑기 | ||
---|---|---|---|
생성된 OBJECT 들의 DDL 문 GENERATE 방법(DBMS_METADATA)
================================================== PURPOSE ------- 다음은 생성된 Object 들의 DDL 문을 Generate 하는 방법에 대해 소개한다. Explanation ----------- 이는 9i 의 새로운 기능으로 DBMS_METADATA package 를 이용한다. 먼저 view 를 생성하기 위해 $ORACLE_HOME/rdbms/admin/catmeta.sql script 를 sys user 로 실행한다. DBMS_METADATA pacakge 는 schema object 의 완전한 definition 을 얻기 위한 강력한 tool 로서 한번에 object 의 모든 attributes 를 얻을 수 있다. Example ------- 예1. Table 에 대한 script 를 generate 한다. 예로 먼저 Table 을 생성해 보자. SQL> create table idx3_tab ( name varchar2(30), id number, addr varchar2(100), phone varchar2(30)) tablespace users; Table created. 위의 Table 생성 Script 를 원한다면 다음의 문을 실행한다. SQL> select dbms_metadata.get_ddl('TABLE','IDX3_TAB') from dual; DBMS_METADATA.GET_DDL('TABLE','IDX3_TAB') --------------------------------------------------------- CREATE TABLE "SCOTT"."IDX3_TAB" ( "NAME" VARCHAR2(30), "ID" NUMBER, "ADDR" VARCHAR2(100), "PHONE" VARCHAR2(30) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" 단, 위는 long type 을 return 하므로 위의 script 가 잘린다면 SQL> set long [n] n: 1 through 2000000000 을 먼저 실행한다. 그리고 위의 script 에서 storage 절을 없이 원한다면 다음의 procedure 를 먼저 실행한다. SQL> EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM, 'STORAGE',false); PL/SQL procedure successfully completed. 이제 다시 처음의 구문을 실행한다. SQL> select dbms_metadata.get_ddl('TABLE','IDX3_TAB') from dual; DBMS_METADATA.GET_DDL('TABLE','IDX3_TAB') --------------------------------------------------------------- CREATE TABLE "SCOTT"."IDX3_TAB" ( "NAME" VARCHAR2(30), "ID" NUMBER, "ADDR" VARCHAR2(100), "PHONE" VARCHAR2(30) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING TABLESPACE "USERS" 예2. Object type 을 가진 table 의 script. SQL> create type person as object ( name varchar2(20), age number); / Type created. SQL> create type v0 as varray(5) of person; / Type created. SQL> create type n1 as table of v0; / Type created. SQL> create type n2 as object (n2_c1 n1); / Type created. SQL> create table tab11 ( c1 n2) nested table c1.n2_c1 store as tab11_c1_n1 ( varray column_value store as lob tab11_c1_v1) RETURN AS LOCATOR; Table created. SQL> create table tab11 ( c1 n2) nested table c1.n2_c1 store as tab11_c1_n1 ( varray column_value store as lob tab11_c1_v1) RETURN AS LOCATOR; Table created. SQL> select dbms_metadata.get_ddl('TABLE','TAB11') from dual; CREATE TABLE "SCOTT"."TAB11" ( "C1" "SCOTT"."N2" ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 16384 NEXT 16384 MINEXTENTS 1 MAXEXTENTS 505 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" NESTED TABLE "C1"."N2_C1" STORE AS "TAB11_C1_N1" (PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 16384 NEXT 16384 MINEXTENTS 1 MAXEXTENTS 505 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) VARRAY "COLUMN_VALUE" STORE AS LOB "TAB11_C1_V1" (ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 CACHE STORAGE(INITIAL 16384 NEXT 16384 MINEXTENTS 1 MAXEXTENTS 505 PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT))) RETURN AS LOCATOR 출처 : otn.oracle.com |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |