4、熱備份方案的實施
4.1 熱備份數(shù)據(jù)庫的前提條件:數(shù)據(jù)庫運(yùn)行在歸檔模式
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ù)運(yùn)行。通常,background_dump_destination將產(chǎn)生一個跟蹤文件來顯示歸檔方面的問題。
Oracle數(shù)據(jù)庫安裝默認(rèn)運(yù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上運(yùn)行以下命令
sqlplus>connect sys/qazwsx as sysdba
sqlplus>shutdown immediate;
sqlplus>startup mount exclusive;
sqlplus>alter database archivelog;
sqlplus>alter database open;
sqlplus>shutdown immediate;
(3)執(zhí)行數(shù)據(jù)庫冷備份
當(dāng)數(shù)據(jù)庫運(yùn)行在歸檔模式下,數(shù)據(jù)庫恢復(fù)過程要求使用冷備份時,歸檔日志是必需的。
(4)正常啟動數(shù)據(jù)庫,并確認(rèn)數(shù)據(jù)庫運(yùn)行在歸檔模式
sqlplus > startup;
sqlplus > select * from v$database; 其log_mode會顯示數(shù)據(jù)庫是否歸檔模式
sqlplus > archive log list; 也會顯示數(shù)據(jù)庫是否歸檔模式
如果Oracle數(shù)據(jù)庫運(yùn)行在歸檔模式,當(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)機(jī)的數(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)機(jī)redo日志應(yīng)該是熱備份的一部分。
(6)在sqlplus上執(zhí)行alter system switch logfile;命令來強(qiáng)迫日志切換,以便所有的日志都被歸檔。
(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
4.1 熱備份數(shù)據(jù)庫的前提條件:數(shù)據(jù)庫運(yùn)行在歸檔模式
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ù)運(yùn)行。通常,background_dump_destination將產(chǎn)生一個跟蹤文件來顯示歸檔方面的問題。
Oracle數(shù)據(jù)庫安裝默認(rèn)運(yù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上運(yùn)行以下命令
sqlplus>connect sys/qazwsx as sysdba
sqlplus>shutdown immediate;
sqlplus>startup mount exclusive;
sqlplus>alter database archivelog;
sqlplus>alter database open;
sqlplus>shutdown immediate;
(3)執(zhí)行數(shù)據(jù)庫冷備份
當(dāng)數(shù)據(jù)庫運(yùn)行在歸檔模式下,數(shù)據(jù)庫恢復(fù)過程要求使用冷備份時,歸檔日志是必需的。
(4)正常啟動數(shù)據(jù)庫,并確認(rèn)數(shù)據(jù)庫運(yùn)行在歸檔模式
sqlplus > startup;
sqlplus > select * from v$database; 其log_mode會顯示數(shù)據(jù)庫是否歸檔模式
sqlplus > archive log list; 也會顯示數(shù)據(jù)庫是否歸檔模式
如果Oracle數(shù)據(jù)庫運(yùn)行在歸檔模式,當(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)機(jī)的數(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)機(jī)redo日志應(yīng)該是熱備份的一部分。
(6)在sqlplus上執(zhí)行alter system switch logfile;命令來強(qiáng)迫日志切換,以便所有的日志都被歸檔。
(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
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
