- 浏览: 141852 次
- 性别:
- 来自: 上海
文章分类
最新评论
来源: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 1939转自:http://www.alidba.net/ ... -
(转)Oracle数据库的自动导出备份脚本(windows环境)
2011-12-30 13:53 1456转自Oracle数据库的自动导出备份脚本(windows环境 ... -
Oracle中的 UPDATE FROM 解决方法
2011-12-19 05:13 1011在表的更新操作 ... -
oracle 10g 修改SGA,PGA大小
2011-11-12 11:42 1188一、概念SGA指系统全局区域(System Global ... -
(转)alter system 中SCOPE的含义
2011-11-12 11:41 1207■哪些参数可以用Alter System修改alter ... -
(转)详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
2011-11-07 16:08 645数据库名、实例名、数据库域名、全局数据库名、服务名 ,这是 ... -
ORACLE EM的删除与创建(转)
2011-09-08 13:11 3379手动删除ORACLE 10G EM 使用emca可以手动配 ... -
Oracle10g SCHEDULE job
2011-09-06 17:10 1292BEGIN SYS.DBMS_SCHEDULER.CRE ... -
oracle orion用法(IO压力测试)
2011-09-06 13:46 3813orion--oracle公司提供的IO存储测试软件 o ... -
oracle SQL性能优化(转)
2011-09-06 09:33 688(1) 选择最有效率的表名顺序(只在基于规则的 ... -
Oracle客户端精简绿色版
2011-08-31 17:19 963大型项目开发中,常 ... -
(转)Oracle的RAC环境下SYS密码修改
2011-08-31 02:31 6506sys是数据库库中权限最高的用户,在登录时,我们可以用os认证 ... -
oracle中imp命令详解(转)
2011-08-30 10:09 1089Oracle的导入实用程序(Import utili ... -
ORACLE日期问题
2011-08-30 02:09 8751、转换函数 与date操作关系最大的 ... -
OEM乱码解决方法
2011-08-29 21:35 1188方法1:(推荐使用这个方法)打开IE浏览器, 选择'工具&qu ... -
RAC启动dbconsole报错
2011-08-29 21:24 1088RAC启动dbconsole 抛出一个错误 [ora ...
相关推荐
Oracle数据库中的`dbms_metadata.get_ddl`是一个非常实用的包,它允许开发人员和管理员获取数据库对象的创建语句(DDL),这对于备份和恢复、迁移或者理解对象定义非常有帮助。下面我们将深入探讨`dbms_metadata.get...
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) ...
38. **DBMS_METADATA.GET_DDL**: 获取数据库对象的DDL语句。 39. **DBMS_STATS.SET_TABLE_PREFS**: 设置表的统计收集偏好。 40. **DBMS_BACKUP_RESTORE**: 数据库备份和恢复工具。 41. **DBMS_CRYPTO.HASH**: ...
该语法使用 `dbms_metadata.get_ddl` 函数来获取指定表和索引的 DDL 定义,其中 `dbms_metadata.get_ddl` 函数的三个参数分别是对象类型、对象名和用户名。在上面的例子中,第一个参数是 `TABLE`,表示获取表的 DDL ...
- `select dbms_metadata.get_ddl('TABLE', 'DEPT', 'SCOTT') from dual`:获取SCOTT模式下DEPT表的DDL语句。 - `select dbms_metadata.get_ddl('INDEX', 'DEPT_IDX', 'SCOTT') from dual`:获取SCOTT模式下DEPT_...
每一类对象都通过`SELECT DBMS_METADATA.GET_DDL`命令来获取其定义的DDL(Data Definition Language)语句。 例如,对于表和视图: ```sql SELECT DBMS_METADATA.GET_DDL(u.object_type, u.object_name) FROM user...
除了直接查询系统视图外,还可以利用Oracle的 `dbms_metadata.get_ddl` 包中的函数来获取索引的DDL(数据定义语言)语句,从而间接获取索引及其关联列的信息。这通常用于更复杂或自动化的需求,例如,当需要生成索引...
2. **使用`DBMS_METADATA.GET_DDL`函数获取表空间的DDL脚本**:通过将表空间名称传递给`GET_DDL`函数,可以得到创建该表空间所需的DDL语句。 3. **转换为字符串**:由于`DBMS_METADATA.GET_DDL`返回的是LOB类型,...
`DBMS_METADATA.GET_DDL`函数可以获取指定对象的创建语句。 5. **DBMS_ALERT**: 提供异步通知服务,当特定条件满足时,可以向指定的进程或用户发送警报。例如,`DBMS_ALERT.REGISTER`用于注册一个警报,`DBMS_ALERT...
解密过程与之类似,先用`DBMS_METADATA.GET_DDL`获取加密后的源代码,然后解密并使用`DBMS_METADATA.SET_DDL_TEXT`更新储存过程。 需要注意的是,尽管加密储存过程能提高安全性,但也增加了管理复杂性和潜在的风险...
ddl := DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE', 'MY_SCHEMA'); DBMS_OUTPUT.PUT_LINE(ddl); END; ``` 以上是对DM7系统包使用手册中部分关键知识点的详细解读,希望能够帮助读者更好地理解和使用这些强大的...
10. **DBMS_METADATA** - 用于获取和操作数据库元数据,如DDL(数据定义语言)语句,用于生成表、索引等对象的定义。 这些内置包只是Oracle庞大功能库的一小部分,它们极大地扩展了数据库的能力,简化了许多复杂的...
在Oracle 9i及更高版本中,可以利用DBMS_METADATA包来直接从数据字典中提取这些语句,这大大简化了过去通过Export工具或者编写复杂查询脚本的方式来获取DDL的过程。 DBMS_METADATA是一个强大的PL/SQL包,它可以生成...
例如,你可以使用DBMS_METADATA.GET_DDL函数来获取表、索引或其他对象的创建语句,这对于备份、迁移或复制对象非常方便。 在性能优化方面,DBMS_PROFILER是一个强大的工具,它可以分析PL/SQL代码的执行性能。通过...
DBMS_METADATA.GET_DDL('TABLE', 'YOUR_TABLE_NAME', 'YOUR_SCHEMA', l_ddl); DBMS_OUTPUT.PUT_LINE('Table exists.'); EXCEPTION WHEN OTHERS THEN IF SQLCODE = -942 THEN DBMS_OUTPUT.PUT_LINE('Table does...
要获取特定表或索引的DDL,可以使用`DBMS_METADATA.GET_DDL`过程。下面是一个简单的示例,展示了如何获取名为`my_table`的表和`my_index`的索引的DDL语句: ```sql SET LONG 100000 DECLARE l_ddl VARCHAR2...
Oracle 9i引入了`DBMS_METADATA`包,这是一个非常强大的工具,它允许用户直接从数据字典中提取DDL语句,无论是针对单一对象还是整个SCHEMA,使用都非常简便。`DBMS_METADATA`包的核心在于能够生成符合当前数据库版本...