`
itspace
  • 浏览: 978501 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

浅谈DBMS_METADATA.GET_DDL使用

SQL 
阅读更多
我们可以通过DBMS_METADATA.GET_DDL函数取得对象的创建语法,这在很多性能调优的场合中需要用到。
引用
SQL> desc DBMS_METADATA
...
FUNCTION GET_DDL RETURNS CLOB
Argument Name                  Type                    In/Out Default?
------------------------------ ----------------------- ------ --------
OBJECT_TYPE                    VARCHAR2                IN
NAME                           VARCHAR2                IN
SCHEMA                         VARCHAR2                IN     DEFAULT
VERSION                        VARCHAR2                IN     DEFAULT
MODEL                          VARCHAR2                IN     DEFAULT
TRANSFORM                      VARCHAR2                IN     DEFAULT
...

OBJECT_TYPE:表示对象类型,可以是表格,索引,视图,物化视图,存储过程等,获得存储过程方法可以参考metalink doc [ID 468760.1]
NAME:对象名
SCHEMA:对象所在用户名

以下是取得索引创建语法例子
引用
set heading off
set echo off
set flush off
set pagesize 9999
set linesize 9999
set long 9999
spool rcindscr.sql
select 'select dbms_metadata.get_ddl("INDEX", "'||index_name||'", "'||owner||'") from dual;'
from dba_indexes where tablespace_name='EXAMPLE' and index_name like 'E%';
spool off

CREATE UNIQUE INDEX "HR"."EMP_EMAIL_UK" ON "HR"."EMPLOYEES" ("EMAIL")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "EXAMPLE"
/

如果不想在语法中出现STORAGE属性,可以在会话级别中设置
引用
SET LONG 2000000
SET PAGESIZE 0
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
FROM USER_INDEXES u ;
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'DEFAULT');

1
0
分享到:
评论

相关推荐

    [Oracle] dbms_metadata.get_ddl 的使用方法总结

    下面我们将深入探讨`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

    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) ...

    Oracle PL/SQL常用47个工具包

    38. **DBMS_METADATA.GET_DDL**: 获取数据库对象的DDL语句。 39. **DBMS_STATS.SET_TABLE_PREFS**: 设置表的统计收集偏好。 40. **DBMS_BACKUP_RESTORE**: 数据库备份和恢复工具。 41. **DBMS_CRYPTO.HASH**: ...

    从 Oracle数据库中导出SQL脚本.doc

    该语法使用 `dbms_metadata.get_ddl` 函数来获取指定表和索引的 DDL 定义,其中 `dbms_metadata.get_ddl` 函数的三个参数分别是对象类型、对象名和用户名。在上面的例子中,第一个参数是 `TABLE`,表示获取表的 DDL ...

    Oracle储存过程包加解密实现

    解密过程与之类似,先用`DBMS_METADATA.GET_DDL`获取加密后的源代码,然后解密并使用`DBMS_METADATA.SET_DDL_TEXT`更新储存过程。 需要注意的是,尽管加密储存过程能提高安全性,但也增加了管理复杂性和潜在的风险...

    Oracle内置包的使用方法.rar

    `DBMS_METADATA.GET_DDL`函数可以获取指定对象的创建语句。 5. **DBMS_ALERT**: 提供异步通知服务,当特定条件满足时,可以向指定的进程或用户发送警报。例如,`DBMS_ALERT.REGISTER`用于注册一个警报,`DBMS_ALERT...

    oracle sqlplus 中spool 的使用

    - `SELECT DBMS_METADATA.GET_DDL('PROCEDURE', u.object_name) FROM USER_OBJECTS u WHERE object_type = 'PROCEDURE'`:获取当前用户(brucelau)下所有存储过程的DDL语句。 #### 三、Spool命令注意事项 1. **...

    获取oracle表空间脚本

    2. **使用`DBMS_METADATA.GET_DDL`函数获取表空间的DDL脚本**:通过将表空间名称传递给`GET_DDL`函数,可以得到创建该表空间所需的DDL语句。 3. **转换为字符串**:由于`DBMS_METADATA.GET_DDL`返回的是LOB类型,...

    查询索引对应的表和列

    通过以上介绍的两种方法——查询系统视图 `user_indexes` 和 `user_ind_columns`,以及使用 `dbms_metadata.get_ddl` 函数,我们可以有效地获取这些信息。每种方法都有其适用场景,具体选择取决于具体需求和上下文...

    oracle数据库对象导出脚本

    每一类对象都通过`SELECT DBMS_METADATA.GET_DDL`命令来获取其定义的DDL(Data Definition Language)语句。 例如,对于表和视图: ```sql SELECT DBMS_METADATA.GET_DDL(u.object_type, u.object_name) FROM user...

    DM7系统包使用手册

    ddl := DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE', 'MY_SCHEMA'); DBMS_OUTPUT.PUT_LINE(ddl); END; ``` 以上是对DM7系统包使用手册中部分关键知识点的详细解读,希望能够帮助读者更好地理解和使用这些强大的...

    Oracle内置包的使用方法

    例如,你可以使用DBMS_METADATA.GET_DDL函数来获取表、索引或其他对象的创建语句,这对于备份、迁移或复制对象非常方便。 在性能优化方面,DBMS_PROFILER是一个强大的工具,它可以分析PL/SQL代码的执行性能。通过...

    oracle判断表名是否存在

    4. **使用`DBMS_METADATA.GET_DDL`包**: 这个包可以获取对象的DDL定义,如果尝试获取不存在的表,会引发异常。虽然不是直接检查,但可以作为间接判断的方式。 ```plsql DECLARE l_ddl CLOB; BEGIN DBMS_...

    oracle fyunwrap (oracle对象解密工具)

    2. **提取二进制数据**:使用`DBMS_METADATA.GET_DDL`或`DBMS_METADATA.GET_DEPENDENT_DDL`等系统包,获取加密对象的DDL,其中包含了对象的二进制编码。 3. **运行FYunwrap**:将二进制数据输入到FYunwrap工具中,...

    Oracle 20 道面试题及答案.docx

    DESCRIBE 命令可以显示表的结构信息,而 DBMS_METADATA.GET_DDL 方法可以获取表的 DDL 语句。 索引 索引可以快速访问表中的数据块。bitmap 索引是一种特殊的索引类型,适合用于 Fact Table。 约束 主键和外键是...

    Oracle轻松取得建表和索引的DDL语句

    使用dbms_metadata.get_ddl函数可以获取单个表或索引的DDL语句,该函数的参数包括对象类型、对象名称和schema名称。例如: ``` select dbms_metadata.get_ddl('TABLE','SZT_PQSO2','SHQSYS') from dual; select ...

    Oracle9i取得建表和索引的DDL语句

    要获取特定表或索引的DDL,可以使用`DBMS_METADATA.GET_DDL`过程。下面是一个简单的示例,展示了如何获取名为`my_table`的表和`my_index`的索引的DDL语句: ```sql SET LONG 100000 DECLARE l_ddl VARCHAR2...

Global site tag (gtag.js) - Google Analytics