dbms_metadata包中的get_ddl函数
--GET_DDL: Return the metadata for a single object as DDL.
-- This interface is meant for casual browsing (e.g., from SQLPlus)
-- vs. the programmatic OPEN / FETCH / CLOSE interfaces above.
-- PARAMETERS:
-- object_type - The type of object to be retrieved.
-- name - Name of the object.
-- schema - Schema containing the object. Defaults to
-- the caller's schema.
-- version - The version of the objects' metadata.
-- model - The object model for the metadata.
-- transform. - XSL-T transform. to be applied.
-- RETURNS: Metadata for the object transformed to DDL as a CLOB.
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;
1.得到一个表或索引的ddl语句
SELECT DBMS_METADATA.GET_DDL('TABLE','DEPT','SCOTT') FROM DUAL;
select dbms_metadata.get_ddl('INDEX','PK_DEPT','SCOTT') from dual;
2.得到一个用户下的所有表,索引,存储过程的ddl
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
FROM USER_OBJECTS u
where U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE');
3.得到所有表空间的ddl语句
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)
FROM DBA_TABLESPACES TS;
4.得到所有创建用户的ddl
SELECT DBMS_METADATA.GET_DDL('USER',U.username)
FROM DBA_USERS U;
================================================================================
9i 中可以利用DBMS_METADATA.GET_DDL包得到数据库的对象的ddl脚本。如下(SQLPLUS中执行):
a. 获取单个的建表、视图和建索引的语法
set pagesize 0
set long 90000
set feedback off
set echo off
spool DEPT.sql
select dbms_metadata.get_ddl('TABLE','TAB_NAME','SCOTT') from dual;
select dbms_metadata.get_ddl('VIEW','VIEW_NAME','SCOTT') from dual;
select dbms_metadata.get_ddl('INDEX','IDX_NAME','SCOTT') from dual;
spool off;
b.获取一个SCHEMA下的所有建表、视图和建索引的语法,以scott为例:
set pagesize 0
set long 90000
set feedback off
set echo off
spool schema.sql
connect scott/tiger;
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('VIEW',u.VIEW_name) FROM USER_VIEWS u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
spool off;
c. 获取某个SCHEMA的建全部存储过程的语法
set pagesize 0
set long 90000
set feedback off
set echo off
spool procedures.sql
select DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name) from user_objects u where object_type = 'PROCEDURE';
spool off;
d. 获取某个SCHEMA的建全部函数的语法
set pagesize 0
set long 90000
set feedback off
set echo off
spool function.sql
select DBMS_METADATA.GET_DDL('FUNCTION',u.object_name) from user_objects u where object_type = 'FUNCTION';
spool off;
(转自:http://www.cnblogs.com/wuyisky/archive/2010/05/20/1739801.html)
相关推荐
下面我们将深入探讨`dbms_metadata.get_ddl`的使用方法。 1. 获取对象的DDL `dbms_metadata.get_ddl`的基本语法如下: ```sql DBMS_METADATA.GET_DDL(object_type, object_name, schema) ``` - `object_type`:...
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_TABLE/DDLS('USER_TABLES', 'TABLE_NAME'); END; ``` 这条语句将返回当前用户所有表的结构信息,包括表名、表空间名、最后分析时间等信息。 查看表字段信息 查看表字段信息可以使用`SELECT`...
解密过程与之类似,先用`DBMS_METADATA.GET_DDL`获取加密后的源代码,然后解密并使用`DBMS_METADATA.SET_DDL_TEXT`更新储存过程。 需要注意的是,尽管加密储存过程能提高安全性,但也增加了管理复杂性和潜在的风险...
该语法使用 `dbms_metadata.get_ddl` 函数来获取指定表和索引的 DDL 定义,其中 `dbms_metadata.get_ddl` 函数的三个参数分别是对象类型、对象名和用户名。在上面的例子中,第一个参数是 `TABLE`,表示获取表的 DDL ...
本文将详细介绍Oracle内置包的使用方法,包括它们的功能、调用方式以及示例应用。 1. **DBMS_UTILITY**: 这个包主要用于数据库的实用功能,如格式化SQL语句(UTL_FMT),获取数据库版本信息,以及执行PL/SQL块等。...
- `SELECT DBMS_METADATA.GET_DDL('PROCEDURE', u.object_name) FROM USER_OBJECTS u WHERE object_type = 'PROCEDURE'`:获取当前用户(brucelau)下所有存储过程的DDL语句。 #### 三、Spool命令注意事项 1. **...
2. **使用`DBMS_METADATA.GET_DDL`函数获取表空间的DDL脚本**:通过将表空间名称传递给`GET_DDL`函数,可以得到创建该表空间所需的DDL语句。 3. **转换为字符串**:由于`DBMS_METADATA.GET_DDL`返回的是LOB类型,...
ddl := DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE', 'MY_SCHEMA'); DBMS_OUTPUT.PUT_LINE(ddl); END; ``` 以上是对DM7系统包使用手册中部分关键知识点的详细解读,希望能够帮助读者更好地理解和使用这些强大的...
通过以上介绍的两种方法——查询系统视图 `user_indexes` 和 `user_ind_columns`,以及使用 `dbms_metadata.get_ddl` 函数,我们可以有效地获取这些信息。每种方法都有其适用场景,具体选择取决于具体需求和上下文...
每一类对象都通过`SELECT DBMS_METADATA.GET_DDL`命令来获取其定义的DDL(Data Definition Language)语句。 例如,对于表和视图: ```sql SELECT DBMS_METADATA.GET_DDL(u.object_type, u.object_name) FROM user...
例如,你可以使用DBMS_METADATA.GET_DDL函数来获取表、索引或其他对象的创建语句,这对于备份、迁移或复制对象非常方便。 在性能优化方面,DBMS_PROFILER是一个强大的工具,它可以分析PL/SQL代码的执行性能。通过...
4. **使用`DBMS_METADATA.GET_DDL`包**: 这个包可以获取对象的DDL定义,如果尝试获取不存在的表,会引发异常。虽然不是直接检查,但可以作为间接判断的方式。 ```plsql DECLARE l_ddl CLOB; BEGIN DBMS_...
DESCRIBE 命令可以显示表的结构信息,而 DBMS_METADATA.GET_DDL 方法可以获取表的 DDL 语句。 索引 索引可以快速访问表中的数据块。bitmap 索引是一种特殊的索引类型,适合用于 Fact Table。 约束 主键和外键是...
2. **提取二进制数据**:使用`DBMS_METADATA.GET_DDL`或`DBMS_METADATA.GET_DEPENDENT_DDL`等系统包,获取加密对象的DDL,其中包含了对象的二进制编码。 3. **运行FYunwrap**:将二进制数据输入到FYunwrap工具中,...
2. 使用DBMS_METADATA.GET_DDL包 6. 查看数据库引擎报错的方法: 查看alert log。 7. truncate和delete命令的区别: truncate是DDL操作,它移动HWK,不需要rollback segment。delete是DML操作,需要rollback ...
例如,要获取单个表和索引的DDL,可以编写SQL脚本调用DBMS_METADATA.GET_DDL函数。对于整个Schema的所有表和索引,或者所有存储过程,都可以通过调整函数参数和查询来实现。这种方式灵活性高,能自定义获取的对象...