oracle数据库对象导出脚本

ORACLE数据库是常用的企业级数据库类型,在windows操作系统下有很好的数据库管理工具,但在ubuntu(linux、aix、unix)环境下,最好的管理方式就是脚本化管理,下面是oracle数据库用户对象导出脚本,在此留印,以备不时之需:

注:在此,主要用到了oracle数据库的一个函数包DBMS_METADATA,这可以说是oracle管理上的超强函数包,如果想更好的管理数据库,那么请积极了解它吧。


set pagesize 0
set long 90000
set feedback off
set echo off
--数据库登录
conn test/test@orcl
--导出文件名称
spool oracleObj.sql
--输出信息采用缩排或换行格式化
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'PRETTY', TRUE);
--确保每个语句都带分号
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'SQLTERMINATOR', TRUE);
--关闭表索引、外键等关联(后面单独生成)
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'CONSTRAINTS', FALSE);
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'REF_CONSTRAINTS', FALSE);
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'CONSTRAINTS_AS_ALTER', FALSE);
--关闭存储、表空间属性
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'STORAGE', FALSE);
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'TABLESPACE', FALSE);
--关闭创建表的PCTFREE、NOCOMPRESS等属性
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'SEGMENT_ATTRIBUTES', FALSE);
--创建用户对象
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
FROM USER_OBJECTS u
where U.OBJECT_TYPE IN ('TABLE','VIEW','SYNONYM','SEQUENCE')
;
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
FROM USER_OBJECTS u
where U.OBJECT_TYPE IN ('INDEX','TRIGGER')
;
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
FROM USER_OBJECTS u
where U.OBJECT_TYPE IN ('FUNCTION')
;
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name)
FROM USER_OBJECTS u
where U.OBJECT_TYPE IN ('PROCEDURE')
;
--获取表注释
SELECT DBMS_LOB.substr(DBMS_METADATA.get_dependent_ddl ('COMMENT', table_name))
FROM (SELECT distinct table_name
FROM user_col_comments
WHERE comments IS NOT NULL
)
;
spool off;

你可能感兴趣的:(Oracle)