Oracle中一把梭获取对象DDL创建语句

本文详细介绍Oracle DBMS_METADATA包的使用,包括获取各种数据库对象的DDL语句、设置输出参数,以及如何查看表结构和列信息。适用于数据库管理员和开发人员快速了解和操作Oracle数据库元数据。


吐个槽:Oracle数据库有很多地方设计的不人性化,比如,sqlplus中不能像mysql中一样翻历史记录。不能像mysql一样show table就可以看到表创建语句以及索引情况。所以,还要自己去写脚本,希望有脚本能一把梭,像plsql那样展示出表结构以及索引信息。

1、DBMS_METADATA.GET_DDL包详解以及使用案例

1.1、官方文档参考

Database PL/SQL Packages and Types Reference -> 87 DBMS_METADATA

官方文档中详细的说明了包的定义,get_ddl函数等具体用法,信息量比较大,平时常用的不多,本文主要讲查询表结构相关信息。

1.2、常用获取ddl信息案例

1.2.1、查看表以及对应索引创建语句

EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',false);
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'PRETTY', TRUE);
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'SQLTERMINATOR', TRUE);
select DBMS_METADATA.GET_DDL('TABLE', OBJECT_NAME, OWNER)
  FROM Dba_objects
 where owner = '&&t_owner'
   and object_name = '&&t_name'
   and object_type = 'TABLE'
union all
select dbms_metadata.GET_DEPENDENT_DDL('COMMENT', TABLE_NAME, OWNER)
  FROM (select table_name, owner
          from Dba_col_comments
         where owner = '&&t_owner'
           and table_name = '&&t_name'
           and comments is not null
        union
        select table_name, owner
          from sys.Dba_TAB_comments
         where owner = '&&t_owner'
           and table_name = '&&t_name'
           and comments is not null)
union all
select DBMS_METADATA.GET_DDL('INDEX', INDEX_NAME, OWNER)
  FROM (select index_name, owner
          from sys.Dba_indexes
         where table_owner = '&&am
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值