ftp設置二進制上傳


一個不重要的數據庫,備份是用expdp導出,然后上傳到ftp服務器上面。上周這個主機宕機了,要在別的數據庫恢復,發現報如下錯誤:

ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31619: invalid dump file "/xxx/xxx/xxx.dmp"

然后查了一下資料,出現這種情況,一般是導出數據庫的版本和導入數據庫的版本不一致導致的,然后查看導出文件的版本

strings xxxxx.dmp|head -n 10
#xxxx.dmp為導出文件
"SYS"."SYS_EXPORT_FULL_01"
x86_64/Linux 2.4.xx
tsurbob
AL32UTF8
11.02.00.04.00
001:001:000001:000001

根據上面的信息,可以看到導出文件是11204的,也沒有問題。

在查資料,有寫到ftp上傳的時候可以使用ascll和binary兩種方式。使用ascll可能會導致文件變化

這時候機器也修好了,測試了一個文件的上傳,發現上傳到主機的文件的md5值和本地的md5值完全不一樣,測試使用二進制上傳后,md5相同,可以確定是上傳方式導致的

修改后的腳本:

#!/bin/bash 
source ~/.bash_profile

######################################################### 
echo 'Start Time ------------>' `date` 
day=`date +%Y%m%d%H%M` 
flag=0
for db in {DB01,DB02,DB03}
 do
   export ORACLE_SID=$db
   echo "#################${ORACLE_SID} is expdpping###############"
   expdp "'/ as sysdba'" directory=EXP_SCHEMABAK_TOFTP dumpfile="$db"_schemabak_"$day".dmp logfile="$db"_schemabak_"$day"
.log full=y content=metadata_only
   echo "#################${ORACLE_SID} have done##################"
   let flag+=1
done
echo "#################expdp total:${flag}######################"
######################################################## 
echo '------ftp and delete-------'`date`

cd /oradata01/expdata/schema_bak
find ./ -name "*.dmp" -mtime +6 -exec rm -rf {} \;
find ./ -name "*.log" -mtime +6 -exec rm -rf {} \;
ftp -niv <<EOF
open XXX.XXX.XXX.XXX
user USERNAME PASSWORD
binary
cd /Data/zz_dmp/backfor89/
mput *_schemabak_$day.dmp
quit
EOF
echo 'End Time ---------------->'`date`

在ftp上傳塊中加入binary,顯示制定上傳方式為二進制。mput可以上傳多個文件,put只能上傳單個文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM