oracle backup

oracle backup
Oracle數據庫的備份方法很多,無論使用那種備份方法,備份的目的都是爲了在出現故障後能夠以儘可能小的時間和代價恢復系統。比如使用export實用程序導出數據庫對象、使用Oracle備份數據庫、使用Oracle對稱複製、使用Oracle並行服務器、使用Oracle冷備份、使用Oracle熱備份等各種備份方法都有其優缺點、適用的場合和相應的軟硬件要求。本文主要就用export實用程序導出數據庫對象、Oracle冷備份、Oracle熱備份這三種最基本的備份方法進行詳細的探討,分析各自的優缺點和適用的場合,並給出自動執行這些備份方案的腳本文件。


2、三種備份方案的比較
 

冷備份

冷備份是Oracle最簡單的一種備份;執行冷備份前必須關閉數據庫;然後使用操作系統實用工具或者第三方工具備份所有相關的數據庫文件。


優點:能簡單快速地備份。能簡單快速地恢復。執行簡單。
缺點:必須關閉數據庫,不能進行點恢復。

熱備份
熱備份是當數據庫正在運行時進行數據備份的過程。執行熱備份的前提是:數據庫運行在可歸檔日誌模式。適用於24X7不間斷運行的關鍵應用系統。


優點:備份時數據庫可以是打開的。熱備份可以用來進行點恢復。初始化參數文件、歸檔日誌在數據庫正常運行時是關閉的,可用操作系統命令拷貝。
缺點:執行過程複雜。由於數據庫不間斷運行,測試比較困難。不能用操作系統實用工具拷貝打開的文件。必須使用Oracle提供的ocopy工具來拷貝打開的文件。熱備份可能造成CPU、I/O過載,應在數據庫不太忙時進行。

Export導出數據庫對象
冷備份和熱備份都備份物理數據庫文件,因而被稱爲物理備份。而export備份的是數據庫對象,因此被稱爲邏輯備份。


優點:能執行對象或者行恢復。備份和恢復速度更快。能夠跨操作系統平臺遷移數據庫。數據庫可一直運行。
缺點:export並不是冷備份和熱備份的替代工具。冷、熱備份可保護介質失效。export備份可保護用戶或應用錯誤。

3、冷備份方案的實施


3.1 冷備份數據庫的步驟
(1)關閉數據庫;
(2)備份所有相關的數據庫文件:初始化參數文件、控制文件(可用select name from v$controlfile;列出所有

控制文件)、數據文件(可用select name from v$datafile;列出所有數據文件)、Redo日誌(可用select member from v$logfile;列出所有redo日誌文件)、歸檔的Redo日誌(可用select sequence#,first_time from v$loghist;列出所有歸檔redo日誌文件的順序號和產生時間)。
 

3.2 冷備份數據庫的腳本文件coldbackup.bat
 

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
 

5、使用export作爲備份策略


5.1 export的命令選項說明
Oracle數據庫的exp工具提供tables、users、full database、tablespace四種級別的導出方式,把指定的數據庫內容導出到一個或者多個oracle二進制文件中,該文件只允許用imp工具來讀取,imp的命令選項可用imp help=y來查閱。
您可以通過輸入 EXP 命令以及各種自變量來控制“導出”的運行方式。要指定參數,您可以使用關鍵字:
格式:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
實例:EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T11,T12),如果 T1 是分區表
USERID 必須是命令行中的第一個參數。

下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TABLESPACES 將傳輸的表空間列表
5.2 export備份數據庫的腳本文件expbackup.bat

6、各種備份策略的自動執行方法


不管是冷備份、熱備份,還是export備份;不管是unix平臺,還是windows平臺,都可以利用at命令來定時、自動執行上述備份策略。AT 命令安排在特定日期和時間運行命令和程序,在windows nt平臺上必須首先運行調度服務(schedule),才能使用at命令。
AT命令用法如下:
AT [//computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [//computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
//computername 指定遠程計算機。 如果省略這個參數,會計劃在本地計算機上運行命令。
id 指定給已計劃命令的識別號。
/delete 刪除某個已計劃的命令。如果省略 id,計算機上所有已計劃的命令都會被刪除。
/yes 不需要進一步確認時,跟刪除所有作業的命令一起使用。
time 指定運行命令的時間。
/interactive 允許作業在運行時,與當時登錄的用戶桌面進行交互。
/every:date[,...] 每個月或每個星期在指定的日期運行命令。如果省略日期,則默認爲在每月的本日運行。
/next:date[,...] 指定在下一個指定日期(如下週四)運行命令。如果省略日期,則默認爲在每月的本日運行。
"command" 準備運行的 Windows NT 命令或批處理程序。
舉例如下:
(1) 每週五19:00執行冷備份
at 19:00 /every:F "coldbak.cmd"
(2) 每週二20:00執行熱備份
at 20:00 /every:T "coldbak.cmd"
(3) 每週一、二、三、四、五21:00執行export備份
at 20:00 /every:M,T,W,Th,F "expbak.cmd"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章