日常工作中,经常有人通过工具去查看对象的定义,其实有时候这样去查看也很烦的。在工作中,也有同事问我怎么获取对象定义,今天我做个总结给大家,希望对大家有所帮助!

获取对象定义的包为:dbms_metadata,其中的get_ddl函数是获取对象的函数

GET_DDL函数返回创建对象的原数据的DDL语句,参数说明

1、object_type ---需要返回原数据的DDL语句的对象类型
2、name --- 对象名称
3、schema ---对象所在的Schema,默认为当前用户所在所Schema
4、version ---对象原数据的版本
5、model ---原数据的类型默认为ORACLE
6、transform. - XSL-T transform. to be applied.
7、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;

注意:

1、如果使用sqlplus需要进行下列格式化,特别需要对long进行设置,否则无法显示完整的SQL
2、参数要使用大写,否则会查不到

set linesize 180
set pages 999
set long 90000

1、查看数据库表的定义写法:

select dbms_metadata.get_ddl('TABLE','TABLENAME','USERNAME') from dual;

2、查看索引的SQL

select dbms_metadata.get_ddl('INDEX','INDEXNAME','USERNAME') from dual;

3、查看创建主键的SQL

SELECT DBMS_METADATA.GET_DDL('CONSTRAINT','CONSTRAINTNAME','USERNAME') FROM DUAL;

4、查看创建外键的SQL

SELECT DBMS_METADATA.GET_DDL('REF_CONSTRAINT','REF_CONSTRAINTNAME','USERNAME') FROM DUAL;

5、查看创建视图的SQL

SELECT DBMS_METADATA.GET_DDL('VIEW','VIEWNAME','USERNAME') FROM DUAL;

6、查看用户的SQL

SELECT DBMS_METADATA.GET_DDL('USER','USERNAME') FROM DUAL;

7、查看角色的SQL

SELECT DBMS_METADATA.GET_DDL('ROLE','ROLENAME') FROM DUAL;

8、查看表空间的SQL

SELECT DBMS_METADATA.GET_DDL('TABLESPACE','TABLESPACENAME') FROM DUAL;

9、获取物化视图SQL

select dbms_metadata.get_ddl('MATERIALIZED VIEW','MVNAME') FROM DUAL;

10、获取远程连接定义SQL

SELECT dbms_metadata.get_ddl('DB_LINK','DBLINKNAME','USERNAME') stmt FROM dual

11、获取用户下的触发器SQL

select DBMS_METADATA.GET_DDL('TRIGGER','TRIGGERNAME','USERNAME) FROM DUAL;

12、获取用户下的序列

select DBMS_METADATA.GET_DDL('SEQUENCE','SEQUENCENAME') from DUAL;

13、获取用户下的函数

select DBMS_METADATA.GET_DDL('FUNCTION','FUNCTIONNAME','USERNAME') from DUAL

14、获取包的定义

select DBMS_METADATA.GET_DDL('PACKAGE','PACKAGENAME','USERNAME') from dual

15、获取存储过程

select DBMS_METADATA.GET_DDL('PROCEDURE','PROCEDURENAME','USERNAME') from dual

16、获取包体定义

select DBMS_METADATA.GET_DDL('PACKAGE BODY','PACKAGEBODYNAME','USERNAME') from dual

17、获取远程数据库对象的定义

SELECT DBMS_LOB.SUBSTR@dblinkname(DBMS_METADATA.GET_DDL@dblinkname('TABLE', 'TABLENAME', 'USERNAME')) FROM DUAL@dblinkname

18、获取多个对象的定义

SELECT DBMS_METADATA.GET_DDL(O.OBJECT_TYPE, O.object_name,O.OWNER)
FROM DBA_OBJECTS O
where O.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE','FUNCTION') and ONWER = 'ONWERNAME';

这个语句可以更改一下,就可以得到很多语句出来

19、常见错误
SQL> select dbms_metadata.get_ddl('TABLE','TABLENAME','USERNAME') from dual;
ERROR:
ORA-19206: Invalid value for query or REF CURSOR pa

rameter

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

本文转自whshurk 51CTO博客,原文链接:http://blog.51cto.com/shurk/2057030,如需转载请自行联系原作者

dbms_metadata.get_ddl的使用总结相关推荐

  1. ORACLE如何使用DBMS_METADATA.GET_DDL获取DDL语句

    DBMS_METADATA.GET_DDL包可以得到数据库的对象的ddl脚本.如下(SQLPLUS中执行): 1.得到一个表的ddl语句: SET SERVEROUTPUT ON SET LINESI ...

  2. oracle元数据存储在表空间,[Oracle] dbms_metadata.get_ddl 的使用方法总结

    dbms_metadata.get_ddl()用于获取对象的DDL,其具体用法如下. 注意:在sqlplus里,为了更好的展示DDL,需要设置如下参数: set line 200 set pagesi ...

  3. 利用dbms_metadata.get_ddl查看DDL语句(原创)

    当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数  GET_DDL函数返回创 ...

  4. 利用dbms_metadata.get_ddl查看DDL语句

    2019独角兽企业重金招聘Python工程师标准>>> 当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_m ...

  5. 执行DBMS_METADATA.get_ddl报ORA-39212的解决方法

    环境:     数据库:oracle 10.2.0.4 --64位     操作系统:红旗dc 5.0  --64位 以sys登陆,执行DBMS_METADATA.get_ddl得到某个表空间的元数据 ...

  6. dbms_metadata.get_ddl( )方法查询建表语句及查询结果解析

    dbms_metadata.get_ddl( )方法查询建表语句及查询结果解析 当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbm ...

  7. Oracle View及dbms_metadata.get_ddl看对象生成的代码

    View SQL> create view abc31 as select * from employees where salary>10000; View created. 创建视图 ...

  8. oracle使用dbms_metadata包取得所有对象DDL语句

    当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ...

  9. schema get_ddl

    select dbms_metadata.get_ddl('INDEX','INDEX_CC_TAXID','CACS9DBSIT1') from dual; select dbms_metadata ...

最新文章

  1. python RE库的基本使用!基本定义详细讲解!来源于MOOCpython,课程链接文章末尾有!
  2. Ubuntu 14.04+cuda 7.5+caffe安装配置
  3. Github上删除fork的仓库
  4. Adobe Premiere Pro CC 2018下载安装方法讲解
  5. 使用ssh config配置文件来管理ssh连接
  6. c:forEach 取 map的值
  7. RandomStringUtils的使用
  8. icem网格划分如何给内部面网格_icem结构化网格划分 ICEM里面设置一下就可以自动划分网格,为什么要用块?...
  9. day28 java的集合(6)Properties和TreeSet
  10. mac以管理员身份运行文件_使用windows升级ios/iPadOS 13 beta版本,无需Mac和开发者账户...
  11. xampp 中 mysql的相关配置
  12. ip电话系统设计和实现
  13. expect的安装与使用
  14. 洛谷P2486 [SDOI2011]染色
  15. 大规模均衡分割与层次聚类
  16. 使用VNC远程连接windows2003操作系统
  17. 凸二次规划解法(旋转法)——补充代码
  18. 苹果cmsV10简约白色风格自适应模板
  19. ASROCK X399 PROFESSIONAL GAMING R1.02(70-MXB5Q0-A01)华擎点位图
  20. 乐队设备--反馈抑制器学习笔记

热门文章

  1. android实现类似于支付宝余额快速闪动的效果
  2. 获取指定个数指定范围的随机数
  3. Asp.net禁用site.Mobile.Master
  4. 公司6:JrVue重用布局
  5. WPF 中的 Uri 地址的不同写法
  6. JavaScript 事件机制
  7. Rusty String
  8. 有关 iOS 的开发证书、应用标识、设备标识、配置文件以及密钥 #DF...
  9. 在ASP.NET页面中动态添加控件
  10. 外部引用CSS中 link与@import的区别