- 浏览: 4407000 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
当我们想要查看某个表或者是表空间的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
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
发表评论
-
Oracle 11g、12c大量错误登陆尝试带来的数据库异常
2018-07-16 09:21 1530APPLIES TO: Oracle Database - ... -
如何定位那些SQL产生了大量的redo日志
2018-05-15 14:38 1768在ORACLE数据库的管理、 ... -
When Memory_target Is Set and Swap Size Is Not Big (Doc ID 2356025.1)
2018-03-16 18:13 1188Kkjcre1p: unable to sp ... -
Transparent Hugepage is not getting disabled (Doc ID 2279458.1)
2018-03-16 18:10 820Transparent Hugepage is ... -
Troubleshooting: "log file sync" Waits (文档 ID 1376916.1)
2017-03-09 14:32 1364What is a 'log file sync' wai ... -
log file sync总结
2017-03-09 14:36 3253log file sync等待时间发生在redo log从 ... -
Oracle Log File Sync Wait Event
2017-03-08 18:46 1168The Oracle “log file sync” wai ... -
Tuning ‘log file sync’ Event Waits
2017-03-08 18:41 855Tuning ‘log file sync’ Event ... -
Diagnosing buffer busy waits with the ash_wait_chains.sql script (v0.2)
2017-03-08 16:56 851Diagnosing buffer busy waits w ... -
Advanced Oracle Troubleshooting Guide – Part 11: Complex Wait Chain Signature An
2017-03-08 16:05 1093Here’s a treat for the hard-co ... -
Oracle 10046 SQL TRACE
2017-03-08 15:19 941为什么我们要使用10046 trace? 10046 ... -
Automatic Storage Management
2016-11-03 15:33 863SYSASM Role When Automatic ... -
ASM FAQ
2016-11-03 15:29 729ASM FAQ Oracle Automatic ... -
Oracle ALTER PROFILE语法
2016-10-10 11:36 3406ALTER PROFILE Purpose Use th ... -
Oracle FGA审计
2016-09-20 09:42 1389大家对trigger可能比较熟悉,但Oracle还有一个叫 ... -
Secret.txt
2016-09-14 17:20 0考试登录账号:YAMAC0043865 Chen1988协会网 ... -
Oracle Data Pump Internals
2016-09-13 16:38 776IntroductionOracle Data Pump w ... -
UDEV SCSI Rules Configuration for ASM in Oracle Linux 5, 6 and 7
2016-09-12 16:32 843UDEV SCSI Rules Configuration ... -
Cannot Allocate New Log
2016-02-21 12:28 5446故障报错 Thread 1 cannot allocat ... -
Oracle flashback dropped tablespace(原创)
2015-11-15 22:21 2014Oracle官方并不推荐在数据库物理结构发生改变的情况下进行 ...
相关推荐
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`包的核心在于能够生成符合当前数据库版本...