數據是應用的核心部分,程序壞了換臺機器從新發布就能夠,但數據一旦丟失,形成的損失將不可挽回,程序發佈到生產後,數據的備份便顯得尤其重要,因爲不必定全部的服務均有資金完成高級的備份如RAC和DG,在咱們只有一臺數據庫服務器的,暫時採起最簡單的備份策略,export出dmp進行保存。web
1、備份腳本數據庫
一、初始化變量,記錄開始日誌服務器
#變量 sysname=填寫本身的系統名稱 syspath=/home/oracle/databak/$sysname v_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}
二、進入oracle目錄,設置oracle的參數oracle
#進入oracle目錄,設置oracle變量 cd /home/11g/app/oracle/product/11.2.0 export ORACLE_HOME=/home/11g/app/oracle/product/11.2.0/db_1 export PATH=$PATH:/home/11g/app/oracle/product/11.2.0/db_1/bin export ORACLE_SID=SID名稱
三、導出數據app
echo $syspath v_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}
四、壓縮dump包ssh
gzip ${filename}
五、使用scp,將壓縮後的包傳遞到備份服務器,注意備份服務器上目錄須要預先建立加密
scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/備份目錄
2、設定腳本執行時間spa
咱們設定規則爲天天凌晨2點執行一次,採用crontab來進行處理日誌
執行crontab -e,設定以下規則code
0 2 * * * sh /home/oracle/db.sh
3、關於scp命令密碼處理
執行scp命令時候,會提示輸入遠程主機的密碼
scp ${filename}.gz remot_name@remot_ip:/home/weblogic/databak/備份目錄
此時有兩種處理辦法進行解決:
一、使用加密文件進行認證
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指令時,採用本地私鑰進行簽名,遠程主機使用公鑰驗籤後,判斷問主機能夠信賴,開放通信服務。
二、使用expect命令完成密碼交互
expect命令主要用於腳本中出現必須人工干預的狀況下,預先輸入指令,模擬的場景爲使用expect命令捕捉到提示輸入指令的文字,一旦文字出現,自動使用send命令輸入須要交互的命令。
此處使用爲:
expect "*password:"#此處填寫系統提示文字 send "your password\r"#此處填寫咱們輸入的交互命令 expect eof