1、引言
Oracle數(shù)據(jù)庫的備份方法很多,無論使用那種備份方法,備份的目的都是為了在出現(xiàn)故障后能夠以盡可能小的
時間和代價恢復(fù)
系統(tǒng)。比如使用export實用程序?qū)С鰯?shù)據(jù)庫對象、使用Oracle備份數(shù)據(jù)庫、使用Oracle對稱復(fù)制、使用Oracle并行
服務(wù)器、使用Oracle冷備份、使用Oracle熱備份等各種備份方法都有其優(yōu)缺點、適用的場合和相應(yīng)的軟硬件要求。本文主要就用export實用程序?qū)С鰯?shù)據(jù)庫對象、Oracle冷備份、Oracle熱備份這三種最基本的備份方法進(jìn)行詳細(xì)的探討,分析各自的優(yōu)缺點和適用的場合,并給出自動執(zhí)行這些備份方案的腳本
文件。
2、三種備份方案的比較
冷備份
冷備份是Oracle最簡單的一種備份;執(zhí)行冷備份前必須關(guān)閉數(shù)據(jù)庫;然后使用
操作系統(tǒng)實用工具或者第三方工具備份所有相關(guān)的數(shù)據(jù)庫文件。
優(yōu)點:能簡單快速地備份。能簡單快速地恢復(fù)。執(zhí)行簡單。
缺點:必須關(guān)閉數(shù)據(jù)庫,不能進(jìn)行點恢復(fù)。
熱備份
熱備份是當(dāng)數(shù)據(jù)庫正在運行時進(jìn)行數(shù)據(jù)備份的過程。執(zhí)行熱備份的前提是:數(shù)據(jù)庫運行在可歸檔日志模式。適用于24X7不間斷運行的關(guān)鍵
應(yīng)用系統(tǒng)。
優(yōu)點:備份時數(shù)據(jù)庫可以是打開的。熱備份可以用來進(jìn)行點恢復(fù)。初始化參數(shù)文件、歸檔日志在數(shù)據(jù)庫正常運行時是關(guān)閉的,可用操作系統(tǒng)命令拷貝。
缺點:執(zhí)行過程復(fù)雜。由于數(shù)據(jù)庫不間斷運行,測試比較困難。不能用操作系統(tǒng)實用工具拷貝打開的文件。必須使用Oracle提供的ocopy工具來拷貝打開的文件。熱備份可能造成CPU、I/O過載,應(yīng)在數(shù)據(jù)庫不太忙時進(jìn)行。
Export導(dǎo)出數(shù)據(jù)庫對象
冷備份和熱備份都備份物理數(shù)據(jù)庫文件,因而被稱為物理備份。而export備份的是數(shù)據(jù)庫對象,因此被稱為邏輯備份。
優(yōu)點:能執(zhí)行對象或者行恢復(fù)。備份和恢復(fù)速度更快。能夠跨操作系統(tǒng)
平臺遷移數(shù)據(jù)庫。數(shù)據(jù)庫可一直運行。
缺點:export并不是冷備份和熱備份的替代工具。冷、熱備份可保護(hù)介質(zhì)失效。export備份可保護(hù)
用戶或應(yīng)用錯誤。
3、冷備份方案的實施
3.1 冷備份數(shù)據(jù)庫的步驟
(1)關(guān)閉數(shù)據(jù)庫;
(2)備份所有相關(guān)的數(shù)據(jù)庫文件:初始化參數(shù)文件、控制文件(可用select name from v$controlfile;列出所有
控制文件)、數(shù)據(jù)文件(可用select name from v$datafile;列出所有數(shù)據(jù)文件)、Redo日志(可用select member from v$logfile;列出所有redo日志文件)、歸檔的Redo日志(可用select sequence#,first_time from v$loghist;列出所有歸檔redo日志文件的順序號和產(chǎn)生時間)。
3.2 冷備份數(shù)據(jù)庫的腳本文件coldbackup.bat
4、熱備份方案的實施
4.1 熱備份數(shù)據(jù)庫的前提條件:數(shù)據(jù)庫運行在歸檔模式
Oracle數(shù)據(jù)庫的redo日志記錄在數(shù)據(jù)庫上進(jìn)行的所有活動。LGWR后臺進(jìn)程以一種循環(huán)方式寫這些日志文件,從第一個redo日志到下一個,直到該組的最后一個,然后由從第一個日志寫起。
在非歸檔模式下,當(dāng)循環(huán)寫到最后一個日志文件后,就重寫第一個日志。因此,非歸檔模式下唯一的數(shù)據(jù)庫恢復(fù)辦法就是使用冷備份。
在歸檔模式下,當(dāng)redo日志滿時,一個ARCH后臺進(jìn)程就讀取全部redo日志,然后將其寫到歸檔日志。因此,可以使用熱備份和點恢復(fù)。在歸檔日志模式下,如果歸檔日志目的空間已滿,數(shù)據(jù)庫活動將暫時停止,只有釋放一些空間后,數(shù)據(jù)庫才能繼續(xù)運行。通常,background_dump_destination將產(chǎn)生一個跟蹤文件來顯示歸檔方面的問題。
Oracle數(shù)據(jù)庫安裝默認(rèn)運行在非歸檔模式,通過以下步驟可以從非歸檔模式轉(zhuǎn)換為歸檔模式:
(1)編輯參數(shù)文件init.ora,設(shè)置以下參數(shù)
# 設(shè)置數(shù)據(jù)庫自動歸檔
log_archive_start = true
# 設(shè)置歸檔日志文件的目錄,該目錄必須事先已建立,并有大量可利用的空間
log_archive_dest_1="location=%oracle_base%\ oradata\%oracle_sid%\archive"
# 設(shè)置歸檔日志文件名的格式。%s表示順序號,%t表示線程號。
log_archive_format = "%oracle_sid%%T%S.ARC"
(2)在sqlplus上運行以下命令
sqlplus>;connect sys/qazwsx as sysdba
sqlplus>;shutdown im
mediate;
sqlplus>;startup mount exclusive;
sqlplus>;alter database archivelog;
sqlplus>;alter database open;
sqlplus>;shutdown immediate;
(3)執(zhí)行數(shù)據(jù)庫冷備份
當(dāng)數(shù)據(jù)庫運行在歸檔模式下,數(shù)據(jù)庫恢復(fù)過程要求使用冷備份時,歸檔日志是必需的。
(4)正常啟動數(shù)據(jù)庫,并確認(rèn)數(shù)據(jù)庫運行在歸檔模式
sqlplus >; startup;
sqlplus >; select * from v$database; 其log_mode會顯示數(shù)據(jù)庫是否歸檔模式
sqlplus >; archive log list; 也會顯示數(shù)據(jù)庫是否歸檔模式
如果Oracle數(shù)據(jù)庫運行在歸檔模式,當(dāng)進(jìn)行數(shù)據(jù)庫維護(hù)時,可能需要暫停數(shù)據(jù)庫的歸檔,在完成維護(hù)后,再重新啟動歸檔模式。通過以下步驟可以從歸檔模式轉(zhuǎn)換為非歸檔模式:
sqlplus>;connect sys/qazwsx as sysdba
sqlplus>;shutdown immediate;
sqlplus>;startup mount exclusive;
sqlplus>;alter database noarchivelog;
sqlplus>;alter database open;
sqlplus >; select * from v$database; 其log_mode會顯示數(shù)據(jù)庫是否歸檔模式
sqlplus >; archive log list; 也會顯示數(shù)據(jù)庫是否歸檔模式
4.2 熱備份數(shù)據(jù)庫的步驟
(1)拷貝init.ora文件到備份目錄(參數(shù)文件在數(shù)據(jù)庫啟動后處于關(guān)閉狀態(tài))。
(2)將需要備份的某個表空間置于開始備份模式。
(3)使用ocopy.exe拷貝表空間,然后將該表空間置于結(jié)束備份模式中(ocopy.exe不能用于直接拷貝聯(lián)機的數(shù)據(jù)庫文件)。
(4)對數(shù)據(jù)庫中的每個表空間執(zhí)行步驟2和3(可以通過視圖dba_tablespaces和v$datafile查看數(shù)據(jù)庫中有哪些表空間和數(shù)據(jù)文件)。
(5)通過在sqlplus上執(zhí)行archive log list命令獲取當(dāng)前的日志順序號,從oldest online log sequence開始到current log sequence的聯(lián)機redo日志應(yīng)該是熱備份的一部分。
(6)在sqlplus上執(zhí)行alter system switch logfile;命令來強迫日志切換,以便所有的日志都被歸檔。
(7)使用alter database backup controlfile to trace;命令獲得控制文件的一個備份,可以到%oracle_base%\admin\%oracle_sid%\udump目錄中尋找最新的跟蹤文件,其中有重建控制文件的全部命令。
(8)使用windows nt的命令從%log_archive_dest%中拷貝歸檔的日志文件到備份目錄。
4.3 熱備份數(shù)據(jù)庫的腳本文件hotbackup.bat
5、使用export作為備份策略
5.1 export的命令選項說明
Oracle數(shù)據(jù)庫的exp工具提供tables、users、full database、tablespace四種級別的導(dǎo)出方式,把指定的數(shù)據(jù)庫內(nèi)容導(dǎo)出到一個或者多個oracle二進(jìn)制文件中,該文件只允許用imp工具來讀取,imp的命令選項可用imp help=y來查閱。
您可以通過輸入 EXP 命令以及各種自變量來控制“導(dǎo)出”的運行方式。要指定參數(shù),您可以使用關(guān)鍵字:
格式:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
實例:EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1
1,T1
2),如果 T1 是分區(qū)表
USERID 必須是命令行中的第一個參數(shù)。
下列關(guān)鍵字僅用于可傳輸?shù)谋砜臻g
TRANSPORT_TABLESPACE 導(dǎo)出可傳輸?shù)谋砜臻g元數(shù)據(jù) (N)
TABLESPACES 將傳輸?shù)谋砜臻g列表
5.2 export備份數(shù)據(jù)庫的腳本文件expbackup.bat
6、各種備份策略的自動執(zhí)行方法
不管是冷備份、熱備份,還是export備份;不管是
unix平臺,還是windows平臺,都可以利用at命令來定時、自動執(zhí)行上述備份策略。AT 命令安排在特定日期和時間運行命令和程序,在windows nt平臺上必須首先運行調(diào)度服務(wù)(schedule),才能使用at命令。
AT命令用法如下:
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername 指定遠(yuǎn)程
計算機。 如果省略這個參數(shù),會計劃在本地計算機上運行命令。
id 指定給已計劃命令的識別號。
/delete 刪除某個已計劃的命令。如果省略 id,計算機上所有已計劃的命令都會被刪除。
/yes 不需要進(jìn)一步確認(rèn)時,跟刪除所有作業(yè)的命令一起使用。
time 指定運行命令的時間。
/interactive 允許作業(yè)在運行時,與當(dāng)時登錄的用戶桌面進(jìn)行交互。
/every:date[,...] 每個月或每個星期在指定的日期運行命令。如果省略日期,則默認(rèn)為在每月的本日運行。
/next:date[,...] 指定在下一個指定日期(如下周四)運行命令。如果省略日期,則默認(rèn)為在每月的本日運行。
"command" 準(zhǔn)備運行的
Windows NT 命令或批處理程序。
舉例如下:
(1) 每周五19:00執(zhí)行冷備份
at 19:00 /every:F "coldbak.cmd"
(2) 每周二20:00執(zhí)行熱備份
at 20:00 /every:T "coldbak.cmd"
(3) 每周一、二、三、四、五21:00執(zhí)行export備份
at 20:00 /every:M,T,W,Th,F "expbak.cmd"