当我们想要查看某个表或者是表空间的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

参考至:http://blog.csdn.net/wh62592855/archive/2009/10/19/4697840.aspx

http://hi.baidu.com/suofang/blog/item/fac7cffdaad7a942d6887d80.html

转自: http://czmmiao.iteye.com/blog/1004873

最新文章

  1. Android性能优化之利用LeakCanary检测内存泄漏及解决办法
  2. Docker 学习笔记(CentOS 7.1)
  3. 搞定迅雷固件在TP-LINK WR720N,127.0.0.1 9000 获取不到激活码
  4. 《ImageNet Classification with Deep Convolutional Neural Networks》 剖析
  5. scanf()读取带空格的字符串
  6. mac下eclipse的svn(即svn插件)怎么切换账号?
  7. Nodejs路由之间的数据传递
  8. Android星星评分控件RatingBar的使用
  9. Linux添加快捷启动方式 (Ubuntu Debian CentOS)
  10. iOS开发者如何提高自己的水平(转)
  11. VC的UNICODE 编程
  12. JUnit4中的测试套件
  13. 解析DBR操作系统引导记录数据
  14. SqlSession 同步为注册,因为同步未激活
  15. Dynamics CRM项目实例之六:积分管理,汇总字段,计算字段,快速查看视图
  16. bzoj3277-串
  17. SQL Server 复制表结构以及数据,去除表中重复字段
  18. C++类有继承时,析构函数必须为虚函数
  19. JavaSE之概述
  20. IronPython 的几个问题

热门文章

  1. Xcode9 新功能
  2. linux另一种安装方式
  3. Linux服务器运行环境搭建(二)——Redis数据库安装
  4. HDU2181 哈密顿绕行世界问题
  5. C函数说明
  6. python(一):python语言基础
  7. 查找大文件 & 索引节点(inode)爆满 解决办法
  8. js写的体彩足球预测分析
  9. Apache Kafka 0.9消费者客户端
  10. 谈谈JS中的高级函数