oracle自動備份以及遠程傳輸

在生產(chǎn)過程中,進行數(shù)據(jù)庫定時備份是很有必要的,以避免數(shù)據(jù)出現(xiàn)極端情況時進行數(shù)據(jù)恢復。接下來為大家介紹三個場景的數(shù)據(jù)備份方法:

windows下使用exp備份遠程oracle數(shù)據(jù)庫
linux下使用expdp備份遠程oracle數(shù)據(jù)庫
linux下使用exp備份遠程oracle數(shù)據(jù)庫

1.windows下使用exp備份遠程oracle數(shù)據(jù)庫

在windows下進行數(shù)據(jù)庫備份是非常簡單的,安裝完oracle客戶端(本文不詳述)后使用exp命令即可。

注:使用exp命令導出數(shù)據(jù)庫有個問題就是,它不會導出空表,有兩種辦法來解決這個問題(不文不詳述)。

a.導出一份表結(jié)構(gòu),恢復數(shù)據(jù)后進行執(zhí)行
b.執(zhí)行exp前為空表創(chuàng)建sgement

1)編寫腳本

auto_data.bat
rem 配置基礎(chǔ)參數(shù)
set BACKUP_DIR=D:\backup
set ORACLE_USERNAME=NMGQ
set ORACLE_PASSWORD=NMGQ
set ORACLE_IP=172.168.63.111
set ORACLE_DB=orcl
set BACK_OPTION=NMGQ
set RAR_CMD="C:\Program Files (x86)\WinRAR\Rar.exe"

rem 備份名稱設(shè)置
set BACK_NAME=%ORACLE_USERNAME%_%date:0,4%%date:5,2%%date:8,2%%time:0,2%%time:3,2%%time:6,2%
set BACK_FULL_NAME=%BACKUP_DIR%%BACK_NAME%

rem 備份過程
exp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_IP%/%ORACLE_DB% file=%BACK_FULL_NAME%.dmp owner=%BACK_OPTION% log=%BACK_FULL_NAME%exp.log

rem 壓縮過程
%RAR_CMD% a -df "%BACK_FULL_NAME%back.rar" "%BACK_FULL_NAME%.dmp" "%BACK_FULL_NAME%exp.log"

rem 刪除old備份
forfiles /m *.rar -d -7 /c "cmd /c del /f @path"

編寫完后進行運行測試,會生成一個壓縮包包含.dmp和.log文件。

2)在windows配置一個定時計劃即可

不會的話可以網(wǎng)上找一個教程,本文不詳述
定時計劃教程

2、linux使用expdp備份遠程oracle

expdp命令比exp好用,運行在服務端,速度快,適合大數(shù)據(jù)量的導出,導出命令參數(shù)豐富,能導出空表。
由于expdp只能在服務端使用,所以使用expdp備份數(shù)據(jù)庫的流程如下:


expdp備份流程圖.png
1)測試在環(huán)境下能不能執(zhí)行expdp命令

expdp
1、創(chuàng)建DIRECTORY

create directory dir_dp as '/home/oracle/test'; 
create directory dir as '/tmp'; 

2、授權(quán)

Grant read,write on directory dir_dp to zftang;
--查看目錄及權(quán)限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
 WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;

3、執(zhí)行導出

     expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dpdumpfile =expdp_test1.dmp logfile=expdp_test1.log; 
2)測試sftp能不能正常傳輸文件

命令:sftp 你的遠程機器的用戶名@ip
輸出:密碼 輸入你的機器密碼
命令:put 本地文件位置 遠程機器位置

傳輸成功!

以上兩個測試如果都通過,就證明環(huán)境工具都可以使用,接下來要解決sftp登錄時要輸入密碼的情況,這樣使用腳本事很不方便。

3)fstp免密登錄

大多對密級要求較高的企業(yè)單位都使用SFTP方式傳輸,但是SFTP傳輸必須輸入密碼,對于通過腳本定時傳輸文件非常不方便。

信任公鑰(對稱公鑰)方法解決了每次都輸入密碼的問題:使用客戶端生成密鑰鑰對,將公鑰添加到服務器的信任公鑰表中,即完成了服務器對客戶端信任的添加,再次使用SCP或者SFTP則不需要密碼。

SCP和SFTP不用輸入密碼的信任公鑰方法攻略
參照:http://jingyan.baidu.com/article/e5c39bf56245ae39d7603331.html
已測試,完全可用,注意目錄權(quán)限問題。

4)編寫自動備份腳本

#!/bin/bash
source ~/.bash_profile  #刷新配置文件
FTPIP=172.168.8.120
DIR=/usr/databackup/
find /home/oracle/ -mtime +5 -name "NMG_all*.dmp" | xargs rm -f  #刪除老備份
dmpfile=NMG_all_expdp`date +_%Y%m%d`.dmp 
dumplog=NMG_all_expdp`date +_%Y%m%d`.log
#備份過程
expdp NMGQ/NMGQ schemas=\(NMGQ\) DIRECTORY=dir_dp CONTENT=all compression=ALL DUMPFILE=${dmpfile} logfile=${dumplog}
#遠程傳輸
sftp ftpuser@${FTPIP}<<!
-put /home/oracle/gdkt/${dmpfile} ${DIR}${dmpfile}
-put /home/oracle/gdkt/${dumplog} ${DIR}${dumplog}
bye #退出登錄

配置定時corntab:

查看定時任務配置情況:corntab -l
定時任務配置(修改):
命令 :corntab -e
進入編輯文件,輸入:0 0 12 * * (每天12點運行) 你的sh腳本的位置
例: 0 0 12 * * /usr/gdkt/expdp_auto.sh
保存退出(馬上生效)

查看定時任務配置情況:corntab -l
此時應該會有你配置的計劃了。

執(zhí)行賦權(quán)用戶執(zhí)行*.sh的命名,要不然有可能會出現(xiàn)拒絕訪問的錯誤。
     chmod 777 *.sh 
crontab計劃執(zhí)行情況使用下面的命令查看:
      cat /var/spool/mail/root

3、linux下使用exp備份遠程oracle

這種情況與在windows下使用exp備份是差不多的,主要步驟見下:

a.想要在linux下單獨使用exp命令的話,需要安裝oracle客戶端,并配置exp/imp命令.參考我的另外一篇文章

b.編寫sh腳本

c.使用crontab配置定時計劃,上面有說明

主要說下腳本的編寫,例子見下

#!/bin/bash
source ~/.bashrc #刷新環(huán)境變量
DIR=/usr/gdkt/databackup/data #設(shè)置存放路徑
find ${DIR} -mtime +30 -name "NMG_all_exp*.dmp" | xargs rm -f #刪除多備份,刪除30天以外的備份

#設(shè)置變量
zipfile=NMG_all_exp`date +_%Y%m%d%H%M%S`.zip
dmpfile=NMG_all_exp`date +_%Y%m%d%H%M%S`.dmp
dumplog=NMG_all_exp`date +_%Y%m%d%H%M%S`.log

#備份過程
exp NMGQ/NMGQ@172.168.63.111/orcl file=${DIR}/${dmpfile} owner=NMGQ,NMG_GXSJK,NMG_SPGT,SDE log=${DIR}/${dumplog}
#壓縮過程
zip -r ${zipfile} ${DIR}/${dmpfile} ${DIR}/${dumplog}
#刪除壓縮后的文件
rm -f ${DIR}/${dmpfile} ${DIR}/${dumplog}

至此大功告成,趕緊試試?。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容