Oracle資料庫的備份方法 )

來源:互聯網
上載者:User

1、引言
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"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.