[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;

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐