文章目录
吐个槽: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

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

被折叠的 条评论
为什么被折叠?



