ORACLE命令行获取对象的DDL

ORACLE命令行获取对象的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

以TEST用户为例:

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,'TEST') FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('VIEW',u.view_name,'TEST') FROM USER_VIEWS u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name,'TEST') FROM USER_INDEXES u;
select dbms_metadata.get_ddl('PROCEDURE',u.object_name, 'TEST',) from USER_objects u where u.object_type = 'PROCEDURE';
select dbms_metadata.get_ddl('FUNCTION',u.object_name, 'TEST',) from USER_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','TEST') from dual;

获得所有用户的DDL:

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

————————————————
版权声明:本文为CSDN博主「六月闻君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39065491/article/details/121392639

posted @ 2022-11-03 10:39  Libra_bai  阅读(203)  评论(0编辑  收藏  举报