Oracle資料的異地自動備份

2021-04-26 13:26:25 字數 3052 閱讀 3296

在大型商業應用中,資料的異地容災備份十分重要,也必不可少。筆者根據自己的實踐經驗,設計了一套簡潔地實現 異地資料自動備份的方法,可供資料庫管理人員參考。文中所有的程式都經過測試,執行良好。這裡模擬的異地執行環境為一主一備兩套sun solaris系統,所採用的備份方法為oracle資料庫提供的標準備份:export。

相關命令

文中主要用到三個命令,這裡先單獨介紹一下:

export: 將資料庫中資料備份成乙個二進位制系統檔案,它有三種模式: 使用者模式、表模式、整個資料庫模式。還可分為三種備份型別:完全型、積累型、增量型。本文以整個資料庫模式下的完全型為例說明。export使用格式為:

exp userid file

其中:userid的用法為username/userpassword,即oracle中的使用者名稱/口令。userid必須為exp的第乙個引數,file指備份檔案所放位置及名稱。

ftp: 一般情況下可通過互動方式實現兩台主機間的資料傳輸,即需要手工輸入目標主機的ip位址、使用者名稱、口令等。但是當使用者使用ftp命令時,系統將會先在該用 戶的註冊目錄中尋找.netrc檔案,並首先執行該檔案。這樣,我們可以通過編寫乙個.netrc的檔案來達到自動備份的目的。要注意該檔案必須命名 為.netrc,且必須存放在啟動ftp命令主機上的使用者註冊目錄裡。ftp常用選項:

-i:進行多檔案傳送時關閉互動提示;

-n:在連線之後不進行自動登入。

本文使用「-i」選項,以關閉互動提示。

crontab: cron是乙個永久程序,它由/etc/rc.local啟動執行。cron檢查/var/spool/cron/crontabs/目錄中的檔案,找到 所要執行的任務和執行任務的時間,並自動完成。該目錄中檔案由crontab命令建立。使用者所建立的crontab檔案存於/var/spool /cron/crontabs中,其檔名與使用者名稱一致,本文使用crontab的使用者為oracle,所建立的檔名也為oracle。

cron使用者的許可權記載在下列兩個檔案中: /usr/var/adm/cron/cron.deny和/usr/var/adm/cron/cron.allow。前面的檔案中所列的使用者不允許使 用crontab命令;後一檔案中所列的使用者允許使用crontab命令。crontab命令的常用格式為:

crontab -l:顯示使用者的crontab檔案的內容;

crontab -r:從crontabs目錄中刪除使用者的crontab檔案;

crontab -e:編輯使用者的crontab檔案。

crontab檔案每行中有6個字段,前5個為時間設定段,第6個為所要執行的命令。時間段分別為: minutes、hours、day of month、month、day of week,字段之間用空格或tab分開。字段如果為「*」,表示該字段在所有可能的取值範圍內取值; 如果乙個欄位是由連字元隔開的兩個數字,表明命令可以在兩個數字之間的範圍內執行。

備份資料庫

設定資料庫的擁有者為oracle,使用者名為mistest,其口令為test,新建備份目錄為/export/home/oracle/backup。建立乙個命名為testbackup的備份檔案,檔案內容如下:

oracle-home=/export/home/oracle/815;export oracle-home

oracle-sid=ora815;export oracle-sid

rm /export/home/oracle/backup/*

rq=丶date +「%m%d」丶

/export/home/oracle/815/bin/exp mistest/test file=/export/home/oracle

/backup/exp$rq.dmp log=/exoport/home/oracle/backup/exp$rq.log

說明:前兩句對oracle資料庫初始化,第3條語句清空備份目錄,第4條語句建立乙個取當前日期的變數,以便在最後一條語句的備份檔案名裡含有當前日期資訊。

testbackup編寫完成後,用「chmod +x testbackup」命令授予它可執行許可權。

異地傳輸

在備份主機裡建立乙個備份目錄:/data/oradata/newbackup, 在本地主機oracle使用者的註冊目錄/export/home/oracle裡建立乙個.netrc檔案。設定好備份主機的ip位址,備份主機上的使用者 為oraclebk, 口令為testbk2。.netrc檔案內容為:

machine x.x.x..x

login oraclebk

password testbk2

macdef init

bin

lcd /export/home/oracle/backup

cd /data/oradata/backup

mput *

bye

說明: 前3條語句完成在備份主機上的登入,第4條語句定義乙個名為init的巨集,第5條語句表示以二進位制傳輸,第6條語句表示進入本地工作目錄,第7條語句表示 進入備份主機目錄,第8條語句完成將本地主機/export/home/oracle/backup目錄下的所有檔案傳輸至備份主機/data /oradata/backup目錄下,最後一條語句退出ftp會話程序。

.netrc檔案編寫完成後,用命令「chmod 600

.netrc」使該檔案只能被該使用者所訪問。

自動執行

我們以oracle使用者登入本地主機,用「crontab -e」編寫crontab檔案用以啟動自動備份程序。oracle檔案內容如下:

10 23 * * * /export/home/oracle/testbackup

30 23 * * * ftp -i x.x.x.x

oracle檔案只能在oracle使用者名稱下用「crontab -e」命令來編輯。編輯完成後,可以在用「crontab-l」命令來檢視crontab檔案內容,同時在/var/spool/cron /crontabs目錄下檢視是否增加了乙個oracle檔案。

至此,本地主機可以每天定時備份資料庫,並定時把備份資料傳到備份主機。這樣,較好地實現了oracle資料異地自動備份,本地主機如果有什麼故障,資料有了可靠備份,同時,在一定程度上也減輕了系統管理人員煩瑣、重複的備份工作。

Oracle資料的異地自動備份

在大型商業應用中,資料的異地容災備份十分重要,也必不可少。筆者根據自己的實踐經驗,設計了一套簡潔地實現異地資料自動備份的方法,可供資料庫管理人員參考。文中所有的程式都經過測試,執行良好。這裡模擬的異地執行環境為一主一備兩套sun solaris系統,所採用的備份方法為oracle資料庫提供的標準備份...

實現Oracle異地資料自動備份方案

相關命令 文中主要用到三個命令,這裡先單獨介紹一下 export 將資料庫中資料備份成乙個二進位制系統檔案,它有三種模式 使用者模式 表模式 整個資料庫模式。還可分為三種備份型別 完全型 積累型 增量型。本文以整個資料庫模式下的完全型為例說明。export使用格式為 exp userid file。...

實現Oracle異地資料自動備份方案

相關命令 文中主要用到三個命令,這裡先單獨介紹一下 export 將資料庫中資料備份成乙個二進位制系統檔案,它有三種模式 使用者模式 表模式 整個資料庫模式。還可分為三種備份型別 完全型 積累型 增量型。本文以整個資料庫模式下的完全型為例說明。export使用格式為 exp userid file。...