4、熱備份方案的實施
4.1 熱備份數據庫的前提條件:數據庫運行在歸檔模式
Oracle數據庫的redo日志記錄在數據庫上進行的所有活動。LGWR后臺進程以一種循環方式寫這些日志文件,從第一個redo日志到下一個,直到該組的最后一個,然后由從第一個日志寫起。
在非歸檔模式下,當循環寫到最后一個日志文件后,就重寫第一個日志。因此,非歸檔模式下唯一的數據庫恢復辦法就是使用冷備份。
在歸檔模式下,當redo日志滿時,一個ARCH后臺進程就讀取全部redo日志,然后將其寫到歸檔日志。因此,可以使用熱備份和點恢復。在歸檔日志模式下,如果歸檔日志目的空間已滿,數據庫活動將暫時停止,只有釋放一些空間后,數據庫才能繼續運行。通常,background_dump_destination將產生一個跟蹤文件來顯示歸檔方面的問題。
Oracle數據庫安裝默認運行在非歸檔模式,通過以下步驟可以從非歸檔模式轉換為歸檔模式:
(1)編輯參數文件init.ora,設置以下參數
# 設置數據庫自動歸檔
log_archive_start = true
# 設置歸檔日志文件的目錄,該目錄必須事先已建立,并有大量可利用的空間
log_archive_dest_1="location=%oracle_base%\ oradata\%oracle_sid%\archive"
# 設置歸檔日志文件名的格式。%s表示順序號,%t表示線程號。
log_archive_format = "%oracle_sid%%T%S.ARC"
(2)在sqlplus上運行以下命令
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)執行數據庫冷備份
當數據庫運行在歸檔模式下,數據庫恢復過程要求使用冷備份時,歸檔日志是必需的。
(4)正常啟動數據庫,并確認數據庫運行在歸檔模式
sqlplus > startup;
sqlplus > select * from v$database; 其log_mode會顯示數據庫是否歸檔模式
sqlplus > archive log list; 也會顯示數據庫是否歸檔模式
如果Oracle數據庫運行在歸檔模式,當進行數據庫維護時,可能需要暫停數據庫的歸檔,在完成維護后,再重新啟動歸檔模式。通過以下步驟可以從歸檔模式轉換為非歸檔模式:
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會顯示數據庫是否歸檔模式
sqlplus > archive log list; 也會顯示數據庫是否歸檔模式
4.2 熱備份數據庫的步驟
(1)拷貝init.ora文件到備份目錄(參數文件在數據庫啟動后處于關閉狀態)。
(2)將需要備份的某個表空間置于開始備份模式。
(3)使用ocopy.exe拷貝表空間,然后將該表空間置于結束備份模式中(ocopy.exe不能用于直接拷貝聯機的數據庫文件)。
(4)對數據庫中的每個表空間執行步驟2和3(可以通過視圖dba_tablespaces和v$datafile查看數據庫中有哪些表空間和數據文件)。
(5)通過在sqlplus上執行archive log list命令獲取當前的日志順序號,從oldest online log sequence開始到current log sequence的聯機redo日志應該是熱備份的一部分。
(6)在sqlplus上執行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 熱備份數據庫的腳本文件hotbackup.bat
4.1 熱備份數據庫的前提條件:數據庫運行在歸檔模式
Oracle數據庫的redo日志記錄在數據庫上進行的所有活動。LGWR后臺進程以一種循環方式寫這些日志文件,從第一個redo日志到下一個,直到該組的最后一個,然后由從第一個日志寫起。
在非歸檔模式下,當循環寫到最后一個日志文件后,就重寫第一個日志。因此,非歸檔模式下唯一的數據庫恢復辦法就是使用冷備份。
在歸檔模式下,當redo日志滿時,一個ARCH后臺進程就讀取全部redo日志,然后將其寫到歸檔日志。因此,可以使用熱備份和點恢復。在歸檔日志模式下,如果歸檔日志目的空間已滿,數據庫活動將暫時停止,只有釋放一些空間后,數據庫才能繼續運行。通常,background_dump_destination將產生一個跟蹤文件來顯示歸檔方面的問題。
Oracle數據庫安裝默認運行在非歸檔模式,通過以下步驟可以從非歸檔模式轉換為歸檔模式:
(1)編輯參數文件init.ora,設置以下參數
# 設置數據庫自動歸檔
log_archive_start = true
# 設置歸檔日志文件的目錄,該目錄必須事先已建立,并有大量可利用的空間
log_archive_dest_1="location=%oracle_base%\ oradata\%oracle_sid%\archive"
# 設置歸檔日志文件名的格式。%s表示順序號,%t表示線程號。
log_archive_format = "%oracle_sid%%T%S.ARC"
(2)在sqlplus上運行以下命令
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)執行數據庫冷備份
當數據庫運行在歸檔模式下,數據庫恢復過程要求使用冷備份時,歸檔日志是必需的。
(4)正常啟動數據庫,并確認數據庫運行在歸檔模式
sqlplus > startup;
sqlplus > select * from v$database; 其log_mode會顯示數據庫是否歸檔模式
sqlplus > archive log list; 也會顯示數據庫是否歸檔模式
如果Oracle數據庫運行在歸檔模式,當進行數據庫維護時,可能需要暫停數據庫的歸檔,在完成維護后,再重新啟動歸檔模式。通過以下步驟可以從歸檔模式轉換為非歸檔模式:
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會顯示數據庫是否歸檔模式
sqlplus > archive log list; 也會顯示數據庫是否歸檔模式
4.2 熱備份數據庫的步驟
(1)拷貝init.ora文件到備份目錄(參數文件在數據庫啟動后處于關閉狀態)。
(2)將需要備份的某個表空間置于開始備份模式。
(3)使用ocopy.exe拷貝表空間,然后將該表空間置于結束備份模式中(ocopy.exe不能用于直接拷貝聯機的數據庫文件)。
(4)對數據庫中的每個表空間執行步驟2和3(可以通過視圖dba_tablespaces和v$datafile查看數據庫中有哪些表空間和數據文件)。
(5)通過在sqlplus上執行archive log list命令獲取當前的日志順序號,從oldest online log sequence開始到current log sequence的聯機redo日志應該是熱備份的一部分。
(6)在sqlplus上執行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 熱備份數據庫的腳本文件hotbackup.bat
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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