- 浏览: 140371 次
- 性别:
- 来自: 上海
文章分类
最新评论
来源:http://www.cnblogs.com/aocle/archive/2011/10/13/2209790.html
当我们想要查看某个表或者是表空间的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
发表评论
-
(转)《阿里巴巴数据库标准操作手册》目录
2012-04-18 14:59 1914转自:http://www.alidba.net/ ... -
(转)Oracle数据库的自动导出备份脚本(windows环境)
2011-12-30 13:53 1425转自Oracle数据库的自动导出备份脚本(windows环境 ... -
Oracle中的 UPDATE FROM 解决方法
2011-12-19 05:13 982在表的更新操作 ... -
oracle 10g 修改SGA,PGA大小
2011-11-12 11:42 1163一、概念SGA指系统全局区域(System Global ... -
(转)alter system 中SCOPE的含义
2011-11-12 11:41 1175■哪些参数可以用Alter System修改alter ... -
(转)详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
2011-11-07 16:08 624数据库名、实例名、数据库域名、全局数据库名、服务名 ,这是 ... -
ORACLE EM的删除与创建(转)
2011-09-08 13:11 3340手动删除ORACLE 10G EM 使用emca可以手动配 ... -
Oracle10g SCHEDULE job
2011-09-06 17:10 1273BEGIN SYS.DBMS_SCHEDULER.CRE ... -
oracle orion用法(IO压力测试)
2011-09-06 13:46 3788orion--oracle公司提供的IO存储测试软件 o ... -
oracle SQL性能优化(转)
2011-09-06 09:33 663(1) 选择最有效率的表名顺序(只在基于规则的 ... -
Oracle客户端精简绿色版
2011-08-31 17:19 923大型项目开发中,常 ... -
(转)Oracle的RAC环境下SYS密码修改
2011-08-31 02:31 6462sys是数据库库中权限最高的用户,在登录时,我们可以用os认证 ... -
oracle中imp命令详解(转)
2011-08-30 10:09 1049Oracle的导入实用程序(Import utili ... -
ORACLE日期问题
2011-08-30 02:09 8541、转换函数 与date操作关系最大的 ... -
OEM乱码解决方法
2011-08-29 21:35 1155方法1:(推荐使用这个方法)打开IE浏览器, 选择'工具&qu ... -
RAC启动dbconsole报错
2011-08-29 21:24 1044RAC启动dbconsole 抛出一个错误 [ora ...
相关推荐
以下是对Oracle中dbms_metadata.get_ddl的用法进行了详细的分析介绍,需要的朋友参考下
GBase 8t/8s/informix获取DDL函数DBMS_METADATA.GET_DDL CREATE FUNCTION DBMS_METADATA.GET_DDL( object_type varchar(16) , name varchar(128), schema varchar(32) default null, v_version varchar(32) ...
4. 利用dbms_metadata.get_ddl查看DDL语句 6 5. 数据库备份和恢复 9 6. user_objects 表 9 7. DBLink的使用 10 8. 查看表是否被截断过 13 9. ORA-01654 索引无法通过128(在表空间中XXX)扩张 14 10. SID和...
DBMS_METADATA.GET_DDL 包 6. 怎样查看数据库引擎的报错 解答:alert log. 7. 比较truncate和delete 命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不...
我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的...在 Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句。使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA 的DDL语句。
通过PL/SQL 自己手动生成DDL,不过目前我只写了 表、主键、注释、索引。其他的分区、约束还没写。后期加上 缺陷:每个字段后面都有","需要手动剔除,修改过后的已上传,csdn中不知道怎么修改,只好重新上传
正在看的ORACLE教程是:Oracle9i取得建表和索引的DDL语句。...在Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句。使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA的DDL语句
在Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句。使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA的DDL语句。最好不过的是因为它使用起来很简单。 1、获得单个表和索引DDL...
正在看的ORACLE教程是:Oracle 9i轻松取得建表和索引的DDL语句。...在Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句。使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA的DDL
从对象中提取DDL命令的普通方法涉及到的操作包括从这些对象中提取元数据,并把这些数据存储在内存中。文中介绍了Oracle 9.2提供了一个实现这样的功能的API:DBMS_METADATA程序包。
select dbms_metadata.get_ddl('TABLE',table_name , user ) from user_tables; You need to reload $ORACLE_HOME/rdbms/admin/catmeta.sql 2.3 If Snippets are not accessible You may have not done a clean ...
对于同类Oracle迁移,将迁移DBMS_METADATA支持的所有架构对象。 对于同类Postgres,MySQL和SQL Server迁移或异构迁移,当前将DDL操作限制为表布局。 当前不支持索引和其他架构对象的迁移。 支持的数据库: Oracle ...
授权 授予不同的⽤户以不同的访问权限 DDL的输出存放在数据字典(data dictionary)中,其中包含了元数据(metadata). 元数据是数据的数据. 1.5 关系数据库 关系数据库 关系数据库基于关系模型,使⽤⼀系列表来表达数据...