日常工作中,经常有人通过工具去查看对象的定义,其实有时候这样去查看也很烦的。在工作中,也有同事问我怎么获取对象定义,今天我做个总结给大家,希望对大家有所帮助!
获取对象定义的包为:dbms_metadata,其中的get_ddl函数是获取对象的函数
GET_DDL函数返回创建对象的原数据的DDL语句,参数说明
1, object_type - - -需要返回原数据的DDL语句的对象类型
2的名字- - -对象名称
3,模式——对象所在的模式,默认为当前用户所在
所模式4版本——对象原数据的版本
5,模型- - - - - -原数据的类型默认为ORACLE
6,变换。——XSL-T变换。应用。返回:
7日对象的原数据默认以CLOB类型返回
其中,我们经常用到的是前三项。
dbms_metadata包中的get_ddl函数定义:
函数get_ddl (object_type VARCHAR2,
在VARCHAR2,
模式VARCHAR2默认为空,
版本VARCHAR2默认“兼容”,
模型VARCHAR2默认“甲骨文”,
变换。在VARCHAR2默认的DDL)返回CLOB;
注意:
1,如果使用sqlplus需要进行下列格式化,特别需要对长期进行设置,否则无法显示完整的SQL
2,参数要使用大写,否则会查不到
设置线宽180
999
设置长90000页
1,查看数据库表的定义写法:
选择dbms_metadata.get_ddl(“表”,“表”,“用户名”)从双重;
2,查看索引的SQL
选择dbms_metadata.get_ddl(“指数”,“INDEXNAME”,“用户名”)从双重;
3,查看创建主键的SQL
选择DBMS_METADATA.GET_DDL(“约束”,“CONSTRAINTNAME”,“用户名”)从双重;
4,查看创建外键的SQL
选择DBMS_METADATA.GET_DDL (“REF_CONSTRAINT”、“REF_CONSTRAINTNAME”、“用户名”)从双重;
5,查看创建视图的SQL
选择DBMS_METADATA.GET_DDL(“视图”,“VIEWNAME”,“用户名”)从双重;
6,查看用户的SQL
选择DBMS_METADATA.GET_DDL(“用户”、“用户名”)从双重;
7日查看角色的SQL
选择DBMS_METADATA.GET_DDL(“角色”、“ROLENAME”)从双重;
8日查看表空间的SQL
选择DBMS_METADATA.GET_DDL(“表”、“TABLESPACENAME”)从双重;
9日获取物化视图SQL
选择dbms_metadata。get_ddl(“物化视图”、“MVNAME”)从双重;
10,获取远程连接定义SQL
选择dbms_metadata.get_ddl (“DB_LINK”、“DBLINKNAME”、“用户名”)从双支撑
11日获取用户下的触发器SQL
选择DBMS_METADATA.GET_DDL(“触发”,“TRIGGERNAME”,“用户名)双重;
12日获取用户下的序列
选择DBMS_METADATA.GET_DDL(“序列”,“SEQUENCENAME”)从双重;
13日获取用户下的函数
选择DBMS_METADATA.GET_DDL(“函数”,“FUNCTIONNAME”,“用户名”)从双重
14日获取包的定义
选择DBMS_METADATA.GET_DDL(“包”、“PACKAGENAME”、“用户名”)从双重
15日获取存储过程
选择DBMS_METADATA.GET_DDL(“过程”、“PROCEDURENAME”,“用户名”)从双重
16日获取包体定义
选择DBMS_METADATA。GET_DDL(“包主体”、“PACKAGEBODYNAME”,“用户名”)从双重
17日获取远程数据库对象的定义
选择DBMS_LOB.SUBSTR@dblinkname (DBMS_METADATA。GET_DDL@dblinkname(“表”,“表”、“用户名”))从DUAL@dblinkname
18岁获取多个对象的定义
选择DBMS_METADATA.GET_DDL (O。OBJECT_TYPE、O.object_name O.OWNER)
从DBA_OBJECTS O
O。OBJECT_TYPE(“表”、“指数”,“过程”,“功能”)和标记成=癘NWERNAME”;
这个语句可以更改一下,就可以得到很多语句出来
19日常见错误
完成选择dbms_metadata.get_ddl(“表”,“表”,“用户名”)从双重;
错误:
ora - 19206:为查询或REF游标参数无效值
ora - 06512:在“SYS.DBMS_XMLGEN",第83行
ora - 06512:在“SYS.DBMS_METADATA",第345行
ora - 06512:在“SYS.DBMS_METADATA",第410行
ora - 06512:在“SYS.DBMS_METADATA",第449行
ora - 06512:在“SYS.DBMS_METADATA",第615行
ora - 06512:在“SYS.DBMS_METADATA",第1221行
ora - 06512: 1
行没有行选择
解决办法:运行$ ORACLE_HOME/rdbms/admin/catmeta.sql