標籤:
資料是應用的核心部分,程式壞了換台機器重新發布就可以,但資料一旦丟失,造成的損失將不可挽回,程式發布到生產後,資料的備份便顯得尤為重要,由於不一定所有的服務均有資金完成進階的備份如RAC和DG,在我們只有一台資料庫伺服器的,暫時採取最簡單的備份策略,export出dmp進行儲存。
一、備份指令碼
1、初始設定變數,記錄開始日誌
#變數sysname=填寫自己的系統名稱syspath=/home/oracle/databak/$sysnamev_date=$(date ‘+%Y%m%d%H%M%S‘)#日誌目錄logfile=${syspath}/backup.${v_date}.log#列印開始時間echo backup_time>>${logfile}date ‘+%Y-%m-%d %H:%M:%S‘ >> ${logfile}echo "backup jcd">>${logfile}echo "start_time">>${logfile}date ‘+%Y-%m-%d %H:%M:%S‘ >> ${logfile}
2、進入oracle目錄,設定oracle的參數
#進入oracle目錄,設定oracle變數cd /home/11g/app/oracle/product/11.2.0export ORACLE_HOME=/home/11g/app/oracle/product/11.2.0/db_1export PATH=$PATH:/home/11g/app/oracle/product/11.2.0/db_1/binexport ORACLE_SID=SID名稱
3、匯出資料
echo $syspathv_date=$(date ‘+%Y%m%d%H%M%S‘)filename=$syspath/jcd${v_date}.dmp#匯出命令exp username/password file=${filename} compress=n >> ${logfile}echo "end_time">>${logfile}date ‘+%Y-%m-%d %H:%M:%S‘>>${logfile}
4、壓縮dump包
gzip ${filename}
5、使用scp,將壓縮後的包傳遞到備份伺服器,注意備份伺服器上目錄需要預先建立
scp ${filename}.gz [email protected]remot_ip:/home/weblogic/databak/備份目錄
二、設定指令碼執行時間
我們設定規則為每天淩晨2點執行一次,採用crontab來進行處理
執行crontab -e,設定如下規則
0 2 * * * sh /home/oracle/db.sh
三、關於scp命令密碼處理
執行scp命令時候,會提示輸入遠程主機的密碼
scp ${filename}.gz [email protected]_ip:/home/weblogic/databak/備份目錄
此時有兩種處理辦法進行解決:
1、使用加密檔案進行認證
1)進入本地主機的~/.ssh目錄下
2)運行ssh-keygen -t [rsa|dsa],將會產生密鑰檔案和私密金鑰檔案 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub,此處我們使用rsa方式進行
3)將產生的id_rsa和id_rsa.pub許可權修改為700
4)將.pub檔案複製到遠程主機的~/.ssh目錄,執行cat id_rsa.pub >> ~/.ssh/authorized_keys,將內容拷入authorized_keys檔案
5)修改authorized許可權為700
完成以上修改之後,從本地主機scp到遠程主機便無須密碼,簡單理解應該是通訊時候,本地主機發送scp指令時,採用本地私密金鑰進行簽名,遠程主機使用公開金鑰驗簽後,判斷問主機可以信賴,開放通訊服務。
2、使用expect命令完成密碼互動
expect命令主要用於指令碼中出現必須人工幹預的情況下,預先輸入指令,類比的情境為使用expect命令捕捉到提示輸入指令的文字,一旦文字出現,自動使用send命令輸入需要互動的命令。
此處使用為:
expect "*password:"#此處填寫系統提示文字 send "your password\r"#此處填寫我們輸入的互動命令 expect eof
[自動營運]oracle自動備份