oracle 自动导出package/package body/procedure 等为sql文件并且自动上传到ftp服务器上

版权声明:欢迎加入Oracle 技术分享群:425614362 如果有不对的地方还请指正! https://blog.csdn.net/shiyu1157758655/article/details/84064953

有的时候对于研发或者其他非DBA的人员来说是没有权限登陆到数据库上的,但有的时候研发需要调试一些存储过程或者包等,又常常需要登陆到服务器上去查看,那么再这种情况下,可以通过dba_source或者all_source 将需要的procedure 、pakckage、body等导出成文本形式并且上传到ftp服务器上供相关人员查看。下面就是实现这个功能的脚本:

-rw-r--r-- 1 oracle dba       439 Nov 14 11:25 dump_package_body.sh
drwxr-xr-x 2 oracle oinstall 4096 Nov 14 13:06 package_body
-rw-r--r-- 1 oracle dba        25 Nov 14 11:14 package_body_info.sql
-rw-r--r-- 1 oracle oinstall  316 Nov 14 13:16 unload_to_ftp.sh

上面就是用到的几个脚本,其中

package_body_info.sql存放的是需要导出的procedue,body等

unload_to_ftp.sh 是将导出的文件放到ftp上面去

cat  unload_to_ftp.sh 

#!/bin/bash

#read package body information
package_body_info=($(awk '{print $1}' package_body_info.sql))
for var in  ${package_body_info[@]};
do
sqlplus -S xxxx/xxxx@xxxx<<EOF
set heading off;
spool  /opt/scripts/package_body/$var.sql
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select  text  from dba_source where owner='xxxx' and type='PACKAGE BODY' and name='$var' order by line;
spool off;
exit;
EOF
done

./unload_to_ftp.sh
cat unload_to_ftp.sh 


#!/bin/bash
updir=/opt/scripts/package_body

ftp -v -n ftpip <<EOF
user ftpuser ftppasswod
binary
cd /opt/xxx/ftp/dump_package_body/  
lcd /opt/scripts/package_body
prompt
put  *
bye
EOF
echo "commit to ftp successfully"

实现方式很简单!!!

猜你喜欢

转载自blog.csdn.net/shiyu1157758655/article/details/84064953