当我们想要查看某个表或者是表空间的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语句的更多相关文章

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

    http://www.cnblogs.com/aocle/archive/2011/10/13/2209790.html 当我们想要查看某个表或者是表空间的DDL的时候,可以利用dbms_metada ...

  2. oracle之 获取建表ddl语句

    第一种方法是使用工具,如:pl/sql developer,在[工具]--[导出用户对象]出现就可以得到建表脚本. 第二种方法是,sql语句. DBMS_METADATA.GET_DDL包可以得到数据 ...

  3. Oracle利用external table 查看trace文件

    1. 用下面的语句找到trace文件的路径 select * from v$diag_info where name='Default Trace File'; 2. 创建一个directory用来加 ...

  4. oracle利用触发器实现将ddl操作存入数据表中

    先创建DDL数据库事件操作表: create table ddl_event( sys_time date primary key, event_name ), ), obj_type ), obj_ ...

  5. Oracle与SQLSERVER 批处理执行 DDL 语句

    1. 公司里面的 很多同名的数据库 的一个表都错误的多了一个列 要是每个都用数据库连接工具打开 感觉太废时间了. 比如写个sql命令来执行. 具体方法: Oracle 使用 sqlplus sqlpl ...

  6. Oracle SQL Lesson (10) - 使用DDL语句创建和管理表

    数据库对象TableViewSequenceIndexSynonym 对象名称最长30个字符,不能与当前用户下其他对象重名.create table "select" as sel ...

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

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

  8. Oracle中的dbms_metadata.get_ddl的用法

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

  9. dbms_metadata.get_ddl的用法(DDL)

    dbms_metadata包中的get_ddl函数 --GET_DDL: Return the metadata for a single object as DDL. -- This interfa ...

随机推荐

  1. CABAC

    CABAC(Context-based Adaptive Binary Arithmetic Coding),基于上下文的自适应二进制算术编码.CABAC是H.264/AVC标准中两种熵编码中的一种, ...

  2. Sitemesh 3 的使用及配置

    1 . Sitemesh 3 简介 Sitemesh 是一个网页布局和修饰的框架,基于 Servlet 中的 Filter,类似于 ASP.NET 中的‘母版页’技术.参考:百度百科,相关类似技术:A ...

  3. Java中static作用及用法详解(转)

    1.1概述: static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存 ...

  4. 【POJ】2503 Babelfish

    字典树简单题. #include <cstdio> #include <cstring> #include <cstdlib> typedef struct Tri ...

  5. 【HDOJ】1556 Color the ball

    简单线段树. #include <stdio.h> #define MAXN 100005 #define lson l, mid, rt<<1 #define rson mi ...

  6. [LeetCode#253] Meeting Rooms II

    Problem: Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2] ...

  7. BZOJ3715: [PA2014]Lustra

    3715: [PA2014]Lustra Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 237  Solved: 149[Submit][Status ...

  8. haproxy实现mysql slave负载均衡

    简单画一个图: 一.服务器规划 192.168.116.132 (master)  -->写操作 192.168.116.129 (slave1)  -->读操作 192.168.116. ...

  9. 【转】linux(Ubuntu)配置svn仓库,搭建svn服务器

    原文网址:http://blog.1v2d.com/322.html 在家里搞了好久,终于搞出来,并且在线上已经成功搭建成功,在这感谢一个博主的文章,本篇文章也主要是转载他的内容,写的非常好,而且非常 ...

  10. ResponseHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using Cemetery_ ...