DBMS_METADATA.GET_DDL

■検証内容
表定義やビュー定義などの定義文が確認できたら便利な場面があると思います。ORACLEではDBMS_METADATA.GET_DDLパッケージを使って様々なオブジェクトの定義文を確認する事が可能です。
検証して確認した内容をまとめましたので記録として残します。

以下の方法は全てDBMS_METADATA.GET_DDLパッケージを使った方法となりますが、このパッケージの実行はDBに対して一定の負荷がかかります。また、内容については個人の趣味の範囲で記載させて頂いております。実行する場合は全て実行責任でお願い致します。


■検証環境
Oracle Database Enterprise Edition 11.1.0.7
Asianux Server 3.0 (64-bit)

★表定義を確認する定義
SQL*PLUSよりSYSユーザにて以下の様に実行する事で表定義の確認が可能です。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('TABLE','<表名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL> SET PAGESIZE 0
SQL> SET LONG 1000000
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE','DEPT','SCOTT') FROM dual;

 CREATE TABLE "SCOTT"."DEPT"
  (    "DEPTNO" NUMBER(2,0),
       "DNAME" VARCHAR2(14),
       "LOC" VARCHAR2(13),
        CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO")
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENT
S 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 B
UFFER_POOL DEFAULT)
 TABLESPACE "USERS"  ENABLE
  ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
 STORAGE(INITIAL 65536 NEXT 1048576 MINE
XTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUF
FER_POOL DEFAULT)
 TABLESPACE "USERS"  ENABLE ROW MOVEMENT

★インデックス定義を確認する場合
インデックスの定義を確認する場合は、SQL*PLUSより以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('INDEX','<インデックス名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('INDEX','PK_EMP','SCOTT') FROM dual;

CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMPNO")
 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS"

★ビュー定義を確認する場合
ビューの定義を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('VIEW','<ビュー名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('VIEW','DEPTVIEW','SCOTT') FROM dual;

 CREATE OR REPLACE FORCE VIEW "SCOTT"."DEPTVIEW" ("DEPTNO", "DNAME", "LOC") AS
 SELECT "DEPTNO","DNAME","LOC" FROM SCOTT.DEPT

★トリガーの定義文を確認する場合
トリガーの定義文を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('TRIGGER','<トリガー名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL> SET PAGESIZE 0
SQL> SET LONG 1000000
SQL> SELECT DBMS_METADATA.GET_DDL('TRIGGER','TESTTRIGGER','SCOTT') FROM dual;

CREATE OR REPLACE TRIGGER "SCOTT"."TESTTRIGGER"
BEFORE INSERT OR UPDATE OR DELETE ON SCOTT.DEPT
FOR EACH ROW
BEGIN
 CASE
   WHEN INSERTING THEN
   WHEN UPDATING THEN
   WHEN DELETING THEN
 END CASE;
END;
ALTER TRIGGER "SCOTT"."TESTTRIGGER" ENABLE  

★表領域の定義文を確認する場合
表領域の定義を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。注意して欲しいのは表領域の定義を確認する場合はスキーマ名の入力が不要となる点です。これは表領域はすべてSYSの所有物となるためです。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('TABLESPACE','<表領域名>') FROM dual;

以下、ご参考までに実行例です。
SQL> SET PAGESIZE 0
SQL> SET LONG 1000000
SQL> SELECT DBMS_METADATA.GET_DDL('TABLESPACE','USERS') FROM dual;

 CREATE TABLESPACE "USERS" DATAFILE
 '/opt/app/oracle/oradata/o11107/users01.dbf' SIZE 5242880
 AUTOEXTEND ON NEXT 1310720 MAXSIZE 32767M
 LOGGING ONLINE PERMANENT BLOCKSIZE 8192
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO

★マテリアライズドビュー定義を確認する場合
マテリアライズドビューの定義を確認する場合は、SYSユーザにてSQL*PLUSより以下の様に実行します。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW','<マテリアライズドビュー名>','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('MATERIALIZED_VIEW','MV1','SCOTT') FROM dual;

 CREATE MATERIALIZED VIEW "SCOTT"."MV1"
 ORGANIZATION HEAP 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)
 TABLESPACE "USERS"
 BUILD IMMEDIATE
 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)
 TABLESPACE "USERS"
 REFRESH FORCE ON DEMAND
 WITH PRIMARY KEY USING DEFAULT LOCAL ROLLBACK SEGMENT
 USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
 AS SELECT "DEPT"."DEPTNO" "DEPTNO","DEPT"."DNAME" "DNAME","DEPT"."LOC" "LOC" FROM "SCOTT"."DEPT" "DEPT"

★ユーザ定義を確認する場合
ユーザの定義文を確認する場合は、SQL*PLUSよりSYSユーザにて以下の様に実行します。尚、実行結果でパスワードについてはマスキングされております。

SET PAGESIZE 0
SET LONG 1000000
SELECT DBMS_METADATA.GET_DDL('USER','<スキーマ名>') FROM dual;

以下、ご参考までに実行例です。
SQL>SET PAGESIZE 0
SQL>SET LONG 1000000
SQL>SELECT DBMS_METADATA.GET_DDL('USER','SCOTT') FROM dual;
  CREATE USER "SCOTT" IDENTIFIED BY VALUES 'S:106A6D27B1BDD0310FACE2AFB22AA7943E92F0AE7A865473610984BD890F;F894844C34402B67'
     DEFAULT TABLESPACE "USERS"
     TEMPORARY TABLESPACE "TEMP"

以上となります。