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

前端技术 2023/09/09 Oracle
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;

本文地址:https://www.stayed.cn/item/25978

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。