oracle 自動匯出package/package body/procedure 等為sql檔案並且自動上傳到ftp伺服器上
阿新 • • 發佈:2018-12-07
有的時候對於研發或者其他非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/[email protected] <<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"
實現方式很簡單!!!