1. 程式人生 > >oracle 自動匯出package/package body/procedure 等為sql檔案並且自動上傳到ftp伺服器上

oracle 自動匯出package/package body/procedure 等為sql檔案並且自動上傳到ftp伺服器上

有的時候對於研發或者其他非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"

實現方式很簡單!!!