签到成功

知道了

CNDBA社区CNDBA社区

oracle使用dbms_metadata.get_ddl()获取对象的定义

2023-04-12 13:45 766 0 原创 oracle
作者: hbhe0316

dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下。http://www.cndba.cn/hbhe0316/article/116543

注意:在sqlplus里,为了更好的展示DDL,需要设置如下参数:

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

1)获得表、索引、视图、存储过程、函数的DDL

http://www.cndba.cn/hbhe0316/article/116543
http://www.cndba.cn/hbhe0316/article/116543

代码如下:

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:http://www.cndba.cn/hbhe0316/article/116543

http://www.cndba.cn/hbhe0316/article/116543
http://www.cndba.cn/hbhe0316/article/116543

代码如下:

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

获得所有表空间的DDL:

http://www.cndba.cn/hbhe0316/article/116543

代码如下:

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

3)获得用户的DDL
获得单个用户的DDL:

代码如下:http://www.cndba.cn/hbhe0316/article/116543

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

4)获得所有用户的DDLhttp://www.cndba.cn/hbhe0316/article/116543

http://www.cndba.cn/hbhe0316/article/116543

代码如下:

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

例如:

su - oracle
sqlplus / as sysdba
set line 200
set pagesize 0
set long 99999
set feedback off
set echo off
select dbms_metadata.get_ddl('PROCEDURE','db1','check') from dual;

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1038373次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ