Oracle9i新特性-使用DBMS_METADATA包獲得對象DDL語句
2024-08-29 13:29:05
供稿:網友
 
oracle9i新特性-使用dbms_metadata包獲得對象ddl語句作者:eygle出處:http://blog.eygle.com日期:december 22, 2004
« oracle整合仁科的困難 | blog首頁 
從oracle9i開始oracle提供了一個新的系統包dbms_metadata,可以用于提取對象創建的ddl語句。
這個package功能極其強大,我們來看看它的使用方法.
1.獲得表的創建語句.
sql> desc dbms_metadatafunction add_transform returns number...function get_ddl returns clob argument name type in/out default? ------------------------------ ----------------------- ------ -------- object_type varchar2 in name varchar2 in schema varchar2 in default version varchar2 in default model varchar2 in default transform varchar2 in default....
sql> set long 2000
sql> select dbms_metadata.get_ddl('table','test') from dual;
dbms_metadata.get_ddl('table','test')
--------------------------------------------------------------------------------
 create table "sys"."test"
 ( "owner" varchar2(30),
 "object_name" varchar2(128),
 "subobject_name" varchar2(30),
 "object_id" number,
 "data_object_id" number,
 "object_type" varchar2(18),
 "created" date,
 "last_ddl_time" date,
 "timestamp" varchar2(19),
 "status" varchar2(7),
 "temporary" varchar2(1),
 "generated" varchar2(1),
 "secondary" varchar2(1)
 ) 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 "system"
sql> 
2.進一步的,可以通過dbms_metadata獲得更全面的ddl語句
oracle提供一個全面的范例:
$oracle_home/rdbms/demo/mddemo.sql
包括索引、授權、觸發器等所有ddl語句都可以被提取。
有興趣的可以參考該文件,按照demo的例子進行測試。