早期僅能用 EXP ROWS=N 或撰寫複雜字典查詢腳本取得 DDL,格式難直接執行,且對 IOT、嵌套表等複雜物件無效。
內建套件可從字典精確還原單一物件或整個 Schema 的 DDL,使用簡單。
SET HEADING OFF ECHO OFF PAGES 999 LONG 90000
SPOOL get_single.sql
SELECT DBMS_METADATA.GET_DDL('TABLE','SZT_PQSO2','SHQSYS') FROM DUAL;
SELECT DBMS_METADATA.GET_DDL('INDEX','INDXX_PQZJYW','SHQSYS') FROM DUAL;
SPOOL OFF;
輸出結果為標準 CREATE TABLE/CREATE INDEX 陳述式,加上分號即可直接執行。
SET PAGESIZE 0 LONG 90000 FEEDBACK OFF ECHO OFF
SPOOL get_schema.sql
CONNECT shqsys/shqsys@hawk1;
SELECT DBMS_METADATA.GET_DDL('TABLE', u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX', u.index_name) FROM USER_INDEXES u;
SPOOL OFF;
若表含外鍵參考約束,重建時需依參考順序(父表先於子表)。可查詢 DBA_CONSTRAINTS 與 DBA_CONS_COLUMNS 判斷相依順序。