天天看點

oracle備份expdp腳本全庫,oracle用expdp方式備份腳本

1、oracle使用者建立備份腳本路徑:

#su - oracle

$ mkdir /u0/app/backup/bin

$ cd /u01/app/backup/bin

2、建立備份腳本:

$ vi /u01/app/backup/bin/bak.sh

#!/bin/sh

source /home/oracle/.bash_profile

timedate=$(date +%Y%m%d%H%M%S)

bakdbname=hb

bakdbpasswd=h1234

dumpbame=hd

bakdbhome=/u01/app/backup

expdp $bakdbname/$bakdbpasswd directory=backDir dumpfile=$dumpbame-$timedate.dmp logfile=$bakdbname-$timedate.log

zip -r $bakdbhome/$dumpbame-$timedate.zip $bakdbhome/$dumpbame-$timedate.dmp $bakdbhome/$bakdbname-$timedate.log #壓縮dmp檔案及日志檔案

find $bakdbhome/*.log -mtime +10 -exec rm -rf {} \;

find $bakdbhome/*.zip -mtime +10 -exec rm -rf {} \;

cd $bakdbhome #切換到備份檔案目錄下

ftp -v -n 192.168.6.9 << EOF #執行ftp指令

user test test2018 #使用者名和密碼

binary #切換傳輸模式為二進制模式,以位元組傳輸(除文字檔案外皆用此模式)

hash #切換#字号的出現,每一個#字号表示傳送了1024/8192BYTES

put $dumpbame-$timedate.zip $dumpbame-$timedate.zip

bye

EOF

#将日志檔案的GB2312轉為UTF-8編碼,這樣腳本執行的log日志檔案中文不會亂碼

iconv -f gb2312 -t utf8 $bakdbname-$timedate.log -o $bakdbname-$timedate.log

find $bakdbhome/*.dmp -exec rm -rf {} \; #前面壓縮後,删除原dmp檔案

FTP的指令行格式為:

ftp -v -d -i -n -g [主機名] ,其中

-v 顯示遠端伺服器的所有響應資訊;

-n 限制ftp的自動登入,即不使用;

hash:每傳輸1024位元組,顯示一個hash符号(#);

.n etrc檔案;

-d 使用調試方式;

-g 取消全局檔案名;

bye:退出ftp會話過程;

get下傳檔案;

mget批量下傳檔案,需配合萬用字元,例如:MGET*.GZ;

put上傳檔案;

mput批量上傳檔案,需配合萬用字元;

recv相當于GET(RECV為RECEIVE的簡寫):

send相當于PUT。

給bak.sh腳本執行權限,做計劃任務即可

$ crontab -l

10 0 * * * /bin/bash /u01/app/backup/bin/bak.sh

原文:http://blog.51cto.com/meiling/2135977