linux自動備份oracle數據庫


#此腳本只備份數據表,而且為了方便恢復數據是做的單表逐個備份
#在寫腳本過程中遇到的報錯均加入了解決方案的鏈接(雖然錯誤代碼沒有貼出來)
#最終將在腳本所在目錄生成年月日-時分的目錄,目錄下為表名.dmp文件+表名.log文件
#例:/home/oracle/bak為腳本所在目錄,將生成20170523-1723目錄,下面有 remit_bank_hds.dmp和remit_bank_hds.log文件

#以下為expdp_cms_prod.sh腳本內容 #此腳本需要用oracle用戶運行
#-------------------------------------------------------------------------------- #!/bin/bash #多行注釋http://www.jb51.net/article/58236.htm #后台執行,並重定向日志 #nohup /home/oracle/bak/expdp_cms_prod.sh command > /home/oracle/bak/expdp_cms_prod.out 2>&1 & #加載系統環境變量,避免用crontab定時器執行時失敗,如果這樣也無效,則需要使用絕對路徑 #查看crontab的執行日志:vi /var/log/cron source /home/oracle/.bash_profile #給腳本目錄授權 chmod 777 /home/oracle/bak #目錄跳轉,避免在根目錄跑腳本 cd /home/oracle/bak #獲取當前日期做為數據文件備份的目錄 rq=`date '+%Y%m%d-%H%M'` #獲取當前所在路徑http://www.cnblogs.com/FlyFive/p/3640267.html#commentform basepath=$(cd `dirname $0`; pwd) #數據庫連接變量配置 db_name=cms db_pass=cms123 db_osid=orcl #執行sql文件,暫時不用 #@$basepath/create_directory.sql #在當前目錄下創建目錄 mkdir $rq #連接數據庫 #EOF含義http://blog.csdn.net/sprita1/article/details/42676307 sqlplus $db_name/$db_pass@localhost:1521/$db_osid << EOF #sqlplus /nolog <<EOF #conn /as sysdba #執行sql語句 #變量拼接http://blog.itpub.net/9240380/viewspace-764728/ create or replace directory expdir as '${basepath}/${rq}'; #查看directory是否存在,路徑是否正確 select * from dba_directories where DIRECTORY_NAME='EXPDIR'; #如果derictory不屬於當前oracle用戶,則需要授權,不能授權給自己 #grant read,write on directory expdir to cms_prod; exit; EOF #單表導出語句 expdp $db_name/$db_pass@$db_osid tables= REMIT_BANK_HDS dumpfile=REMIT_BANK_HDS directory=expdir logfile=remit_bank_hds.log; #su - oracle -c "expdp jmt/jmt@ORCL owner=jmt dumpfile=backupdb$rq.dmp DIRECTORY=dpdata1"
#-----------------------------------------------------------------

#配置定時器
crontab -e
#每天凌晨2點執行
00 02 * * * nohup /home/oracle/bak/expdp_cms_prod.sh command > /home/oracle/bak/expdp_cms_prod.out 2>&1 &
crontab -l

 

 
       


免責聲明!

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



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