Oracle利用dbms_metadata.get_ddl查看DDL语句
当我们想要查看某个表或者是表空间的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://www.linuxidc.com/Linux/2012-12/76113.htm
Oracle利用dbms_metadata.get_ddl查看DDL语句的更多相关文章
- 利用dbms_metadata.get_ddl查看DDL语句
		http://www.cnblogs.com/aocle/archive/2011/10/13/2209790.html 当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metada ... 
- oracle之 获取建表ddl语句
		第一种方法是使用工具,如:pl/sql developer,在[工具]--[导出用户对象]出现就可以得到建表脚本. 第二种方法是,sql语句. DBMS_METADATA.GET_DDL包可以得到数据 ... 
- Oracle利用external table 查看trace文件
		1. 用下面的语句找到trace文件的路径 select * from v$diag_info where name='Default Trace File'; 2. 创建一个directory用来加 ... 
- oracle利用触发器实现将ddl操作存入数据表中
		先创建DDL数据库事件操作表: create table ddl_event( sys_time date primary key, event_name ), ), obj_type ), obj_ ... 
- Oracle与SQLSERVER 批处理执行 DDL 语句
		1. 公司里面的 很多同名的数据库 的一个表都错误的多了一个列 要是每个都用数据库连接工具打开 感觉太废时间了. 比如写个sql命令来执行. 具体方法: Oracle 使用 sqlplus sqlpl ... 
- Oracle SQL Lesson (10) - 使用DDL语句创建和管理表
		数据库对象TableViewSequenceIndexSynonym 对象名称最长30个字符,不能与当前用户下其他对象重名.create table "select" as sel ... 
- oracle使用dbms_metadata包取得所有对象DDL语句
		当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ... 
- Oracle中的dbms_metadata.get_ddl的用法
		当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metadata.get_ddl这个包来查看. dbms_metadata包中的get_ddl函数详细参数 GET_DDL函数返回创建 ... 
- dbms_metadata.get_ddl的用法(DDL)
		dbms_metadata包中的get_ddl函数 --GET_DDL: Return the metadata for a single object as DDL. -- This interfa ... 
随机推荐
- Nginx 代理 jira 和 confluence
			原文出处:http://blog.chenlb.com/2012/01/nginx-proxy-jira-and-confluence.html jira 和 confluence 想部署到同一台机器 ... 
- Delphi 调试WEBService程序(ISAPI或CGI) 把Web App Debugger executable转换成 ISAPI/NSAPI
			1.新建一个web工程,请选中最下面一项:Web App Debugger executable,Coclass name我们设为demo1: 2.在弹出的WebModule2中右击,在弹出的Ac ... 
- page-object使用(2)---elements
			elements就是html元素下所有的标签.用page-object你可以找到并定位html页面下绝大多数的元素,这个文章列出了可定位的这些元素,生成的方法,和依据什么关键字来找到这些元素. BUT ... 
- 项目升级,为了热更新使用lua。
			现在发行商的要求越来越变态,必须要求程序热更新,以应对上线后的bug及时调整,我们目标锁定在 ulua, slua,(也对L#感兴趣过),一开始对 ulua 很困惑,unity 的 assetstor ... 
- maya绝招(21--40)
			第21招 将Outliner分成两个 在该视图中如果元素很多的时候,会觉得Outliner不够用,这个时候拖动下侧的底框,就可以分成两栏,这样选择就省事多了. 第22招 运用选择区域,快速选择物体 在 ... 
- [MIREX] MIREX评测介绍
			MIREX作为国际最权威音频检索评测大赛,竟然在百度上找不到任何介绍,只有几个与什么搜狗.腾讯获得什么成绩相关的检索内容,相比而言,TRECVID的内容收到重视多了...由于研究生阶段主要研究音频领域 ... 
- [Java] HashMap 导致的高 CPU 使用率
			今天在生产环境遇到一个问题,Java 应用程序的 cpu 使用比例很高,导致整台机器的 cpu 使用率高达 90% ,正常情况下是 20% 左右. 把 Thread dump 导出来,利用 IBM T ... 
- [Hibernate] 注解映射例子
			Hibernate 注解(Hibernate Annotation) 是一种比较新的方式,通过在 java 简单类增加注解,来声明 java 类和数据库表的映射,作用和 xml 文件相似.hibern ... 
- lightoj 1018 dp
			题目链接:http://lightoj.com/volume_showproblem.php?problem=1018 #include <cstdio> #include <cst ... 
- C/C++基础(二)
			(1)运算符优先级 #include <cstdio> using namespace std; int main() { unsigned char a = 0xA5; un ... 
