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

 更新时间:2013年07月12日 10:04:21   作者:  
以下是对Oracle中dbms_metadata.get_ddl的用法进行了详细的分析介绍,需要的朋友参考下
dbms_metadata.get_ddl()用于获取对象的DDL,其具体用法如下。
注意:在sqlplus里,为了更好的展示DDL,需要设置如下参数:
复制代码 代码如下:

set line 200
set pagesize 0
set long 99999
set feedback off
set echo off

1)获得表、索引、视图、存储过程、函数的DDL
复制代码 代码如下:

select dbms_metadata.get_ddl('TABLE','TABLE_NAME','TABLE_OWNER') from dual;
select dbms_metadata.get_ddl('INDEX','INDEX_NAME','INDEX_OWNER') from dual;
select dbms_metadata.get_ddl('VIEW','VIEW_NAME','VIEW_OWNER') from dual;
select dbms_metadata.get_ddl('PROCEDURE','PROCEDURE_NAME','PROCEDURE_OWNER') from dual;
select dbms_metadata.get_ddl('FUNCTION','FUNCTION_NAME','FUNCTION_OWNER') from dual;

下面这个脚本用于获得某个schema下所有的表、索引、视图、存储过程、函数的DDL
复制代码 代码如下:

set pagesize 0
set long 90000
set feedback off
set echo off
spool schema_ddl.sql
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name,u.owner) FROM DBA_TABLES u;
SELECT DBMS_METADATA.GET_DDL('VIEW',u.view_name,u.owner) FROM DBA_VIEWS u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name,u.owner) FROM DBA_INDEXES u;
select dbms_metadata.get_ddl('PROCEDURE',u.object_name, u.owner,) from dba_objects u where u.object_type = 'PROCEDURE';
select dbms_metadata.get_ddl('FUNCTION',u.object_name, u.owner,) from dba_objects u where u.object_type = 'FUNCTION';
spool off;

2)获得表空间的DDL
获得单个表空间的DDL:
复制代码 代码如下:

select dbms_metadata.get_ddl('TABLESPACE','TBS_NAME') from dual;

获得所有表空间的DDL:
复制代码 代码如下:

SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name)
FROM DBA_TABLESPACES TS;

3)获得用户的DDL
获得单个用户的DDL:
复制代码 代码如下:

select dbms_metadata.get_ddl('USER','EPAY_USER') from dual;

获得所有用户的DDL:
复制代码 代码如下:

SELECT DBMS_METADATA.GET_DDL('USER',U.username)
FROM DBA_USERS U;

相关文章

  • navicat导入oracle导出的dmp文件

    navicat导入oracle导出的dmp文件

    现在工作中常用Oracle数据库,但是查询工具还是Navicat最好用,不论是数据导入导出,还是执行语句,都很清晰明了,下面这篇文章主要给大家介绍了关于navicat导入oracle导出的dmp文件的相关资料,需要的朋友可以参考下
    2023-05-05
  • 解决Oracle安装遇到Enterprise Manager配置失败问题

    解决Oracle安装遇到Enterprise Manager配置失败问题

    这篇文章主要介绍了Oracle安装遇到Enterprise Manager配置失败问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 11g Oracle导出表不导出数据默认为空表的解决方法

    11g Oracle导出表不导出数据默认为空表的解决方法

    11g Oracle导出表 默认不导出数据为空的表解决
    2014-07-07
  • oracle sql 去重复记录不用distinct如何实现

    oracle sql 去重复记录不用distinct如何实现

    本文将详细介绍oracle sql 去重复记录不用distinct如何实现,需要了解的朋友可以参考下
    2012-11-11
  • oracle中commit之后进行数据回滚的方法

    oracle中commit之后进行数据回滚的方法

    这篇文章主要介绍了oracle中commit之后如何进行数据回滚,本文给大家分享两种方法,每种方法都给大家介绍的比较详细,需要的朋友可以参考下
    2021-12-12
  • Oracle监听注册的实现

    Oracle监听注册的实现

    Oracle数据库的注册监听功能是Oracle数据库管理的一个重要组成部分,它允许数据库实例接收来自客户端请求,并且可以自动恢复数据库服务,感兴趣的可以了解一下
    2023-12-12
  • [Oracle] 常用工具集之SQL*Loader的用法

    [Oracle] 常用工具集之SQL*Loader的用法

    SQL*Loader是Oracle提供的用于数据加载的一种工具,它比较适合业务分析类型数据库(数据仓库),能处理多种格式的平面文件,批量数据装载比传统的数据插入效率更高
    2013-07-07
  • oracle数据库查询所有表名和注释等

    oracle数据库查询所有表名和注释等

    这篇文章主要给大家介绍了关于oracle数据库查询所有表名和注释等的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用oracle具有一定的参考学习价值,需要的朋友可以参考下
    2023-04-04
  • Oracle数据库

    Oracle数据库"记录被另一个用户锁住"解决方法(推荐)

    数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。这篇文章主要介绍了Oracle数据库"记录被另一个用户锁住"解决方法
    2018-03-03
  • sql查询给表起别名要点小结(涉及嵌套查询)

    sql查询给表起别名要点小结(涉及嵌套查询)

    通过使用 SQL,可以为表名称或列名称指定别名,下面这篇文章主要给大家介绍了关于sql查询给表起别名要点(涉及嵌套查询)的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09

最新评论