您好,欢迎访问一九零五行业门户网

Oracle利用dbms_metadata.get_ddl查看DDL语句

当我们想要查看某个表或者是表空间的ddl的时候,可以利用dbms_metadata.get_ddl这个包来查看。
当我们想要查看某个表或者是表空间的ddl的时候,可以利用dbms_metadata.get_ddl这个包来查看。
dbms_metadata包中的get_ddl函数详细参数
get_ddl函数返回创建对象的原数据的ddl语句,详细参数如下
 -- object_type ---需要返回原数据的ddl语句的对象类型
 -- name --- 对象名称
 -- schema ---对象所在的schema,默认为当前用户所在所schema
 -- version ---对象原数据的版本
 -- model ---原数据的类型默认为oracle
 -- transform. - xsl-t transform. to be applied.
 -- returns: 对象的原数据默认以clob类型返回
dbms_metadata包中的get_ddl函数定义
function get_ddl ( object_type in varchar2,
 name in varchar2,
 schema in varchar2 default null,
 version in varchar2 default 'compatible',
 model in varchar2 default 'oracle',
 transform. in varchar2 default 'ddl') return clob;
注意如果使用sqlplus需要进行下列格式化,特别需要对long进行设置,否则无法显示完整的sql
set linesize 180   
set pages 999
 set long 90000   
查看创建用户表的sql
查看当前用户表的sql
select dbms_metadata.get_ddl('table','employees') from dual;
查看其他用表或索引的sql
select dbms_metadata.get_ddl('table','dept','scott') from dual;
查看创建用户索引的sql
查看所需表的索引
 sql> select index_name, index_type, table_name from user_indexes where table_name='emp';
 查看当前用户索引的sql
 select dbms_metadata.get_ddl('index','pk_dept') from dual;
查看其他用户索引的sql
  select dbms_metadata.get_ddl('index','pk_dept','scott‘) from dual;
查看创建主键的sql
查看所需表的约束
 sql> select owner, table_name, constraint_name, constraint_type from user_constraints where table_name='emp';
 查看创建主键的sql
 select dbms_metadata.get_ddl('constraint','emp_pk') from dual;
查看创建外键的sql
 sql> select dbms_metadata.get_ddl('ref_constraint','emp_fk_dept') from dual;
查看创建view的语句
查看当前用户视图的sql
 sql> select dbms_metadata.get_ddl('view', 'my_tables')
查看其他用户视图的sql
 sql> select dbms_metadata.get_ddl('view', 'my_tables','scott‘) from dual;
查看创建视图的sql也可以
 sql> select text from user_views where view_name=upper('&view_name');
dbms_metadata.get_ddl的一些使用技巧
1、得到一个用户下的所有表,索引,存储过程,,函数的ddl
select dbms_metadata.get_ddl(u.object_type, u.object_name)
 from user_objects u
 where u.object_type in ('table','index','procedure','function‘);
2、得到所有表空间的ddl语句
select dbms_metadata.get_ddl('tablespace', ts.tablespace_name)
 from dba_tablespaces ts;
3、得到所有创建用户的ddl
select dbms_metadata.get_ddl('user',u.username)
 from dba_users u;
4、去除storage等多余参数
execute dbms_metadata.set_transform_param(dbms_metadata.session_transform,'storage',false);
常见错误
sql> select dbms_metadata.get_ddl('table','pc','scott') from dual;
 error:
 ora-19206: invalid value for query or ref cursor parameter
 ora-06512: at sys.dbms_xmlgen, line 83
 ora-06512: at sys.dbms_metadata, line 345
 ora-06512: at sys.dbms_metadata, line 410
 ora-06512: at sys.dbms_metadata, line 449
 ora-06512: at sys.dbms_metadata, line 615
 ora-06512: at sys.dbms_metadata, line 1221
 ora-06512: at line 1
no rows selected
解决办法:运行 $oracle_home/rdbms/admin/catmeta.sql
其它类似信息

推荐信息