Oracle Database:表・索引のDDL文の生成方法(DBMS_METADATA.GET_DDL)

作成されたデータベース・オブジェクトの再作成の必要性から、作成した際の定義分を取っておきたいということは良くあるかと思います。

DBMS_METADATAパッケージにGET_DDLファンクションが有ります。
このファンクションを使用して定義情報のDDL文を生成することができます。
SQL Developerを利用するとより簡単に、生成することも可能です。後半部分もあわせてご覧ください。)

DBMS_METADATA.GET_DDLの引数は、
・第1引数:オブジェクトのタイプ(TABLE、INDEX、TABLESPACEなど)
・第2引数:オブジェクト名
・第3引数:スキーマ名(オプション)
以降の引数もオプションです。

以下、SCOTTユーザが自分の表(EMP)の定義DDLを抽出する手順です。
SQL*Plusを使用しています。

(例)
SQL> set pages 0
SQL> set longchunksize 3000
SQL> set long 2000000000
SQL>
SQL> select dbms_metadata.get_ddl('TABLE','EMP') from dual;

  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0),
         CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE

FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE,
         CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
          REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
   ) SEGMENT CREATION IMMEDIATE
  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 FLASH_CACHE DE

FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"

SQL Developerを利用した例>

手順1)SCOTTユーザでデータベースへ接続したうえで、左のメニューから
・接続先「例ではSCOTT」
・オブジェクト・タイプ「例では表」
・表の名前(例ではEMP)
を順にクリックします。

手順2)右に、EMP表の情報が表示されますので、上部のタブから「SQL」をクリック。

SQL Developer
(クリックで拡大表示します)
Comments:

Post a Comment:
Comments are closed for this entry.
About

Oracleエンジニアの方がスキルアップしていただくために、厳選した情報をお届けしています

Search

Archives
« 4月 2014
  
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today
Bookmarks
関連サイト
ランキング:カテゴリ
ランキング:技術資料
ランキング:技術コラム