`
MyDicta
  • 浏览: 18816 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle spool 元数据(过程、函数、包、类型)导出

 
阅读更多

因版本控制不规范,项目中运营同事在部署前需手动备份数据库过程、函数代码,以支持失败时回滚; 这里写了个小程序,以简化备份操作:(只针对 Oracle)


一共分两个脚本:exp.bat  和 exp.conf(执行前,修改 数据库 连接信息和备份内容即可)

 

 

exp.bat

 

sqlplus dc_data/dc_data@crs116 @c:\exp\exp.conf
pause
 

其中  @c:\exp\exp.conf 表示 查找 exp.conf 配置文件

 

exp.conf

 

set trimspool on
set linesize 2000
set pagesize 0
set newpage 1
set heading off
set term off
set long 1000000
set longc 1000000

spool  .\P_GROUP_VARCHAR_APPEND.PRC
SELECT DBMS_METADATA.GET_DDL('PROCEDURE','P_GROUP_VARCHAR_APPEND', 'DC_DATA') AS TEXT  FROM DUAL;
spool off

spool  .\F_WORKDATE.FUN
SELECT DBMS_METADATA.GET_DDL('FUNCTION', 'F_WORKDATE', 'DC_DATA') AS TEXT  FROM DUAL;
spool off

spool  .\PKG_UNITY.PKG
SELECT DBMS_METADATA.GET_DDL('PACKAGE', 'PKG_UNITY', 'DC_ETL') AS TEXT FROM DUAL;
spool off

exit

 

  文中 分别将sql语句的结果生成到相应文件; 

   .\P_GROUP_VARCHAR_APPEND.PRC    表示生成的文件名和路径(这里是相对路径)


  set long 1000000      因 DBMS_METADATA.GET_DDL() 函数返回CLOB,默认只输出前80个字符,这里进行调大

  set longc 1000000   防止CLOB写到文件里时被截断而换行   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics