Oracle9i新特性-使用DBMS_METADATA包获得对象DDL语句
2020-03-09 22:53:17
供稿:网友
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的例子进行测试。