2014-07-27 Created By BaoXinjianhtml
1、摘要sql
Oracle 的備份與恢復有三種標準的模式,大體分爲兩大類,備份恢復(物理上的)以及導入導出(邏輯上的),數據庫
而備份恢復又能夠根據數據庫的工做模式分爲非歸檔模式 (Nonarchivelog-style)和歸檔模式(Archivelog-style),安全
一般,咱們把非歸檔模式稱爲冷備份,而相應的把歸檔模式稱 爲熱備份。oracle
1. 邏輯備份 - 冷備份性能
利用Export可將數據從數據庫中提取出來,利用Import則可將提取出來的數據送回到Oracle數據庫中去。spa
2. 物理備份 - 冷備份操作系統
冷備份數據庫是將數據庫關閉以後備份全部的關鍵性文件包括數據文件、控制文件、聯機REDO LOG文件,將其拷貝到另外的位置。日誌
此外冷備份也能夠包含對參數文件和口令文件的備份,可是這兩種備份是能夠根據須要進行選擇的。orm
冷備份實際也是一種物理備份,是一個備份數據庫物理文件的過程。
由於冷備份要備份除了重作日誌之外的全部數據庫文件,所以也被成爲徹底的數據庫備份。
3. 物理備份 - 熱備份
熱備份是在數據庫運行的狀況下,採用archive log mode方式備份數據庫的方法。
熱備份要求數據庫處於archive log模式下操做,並須要大量的檔案空間。
一旦數據庫處於archive log模式,就能夠進行備份了,當執行備份時,只能在數據文件級或表空間進行。
4. 備份方式分類
2、邏輯備份
如今先來介紹一下邏輯備份方式的方法,利用Export可將數據從數據庫中提取出來,利用Import則可將提取出來的數據送回到Oracle數據庫中去。
1. 理論基礎:Oracle提供的Export和Import具備三種不一樣的操做方式(就是備份的數據輸出(入)類型):
(1). 表方式(T) 能夠將指定的表導出備份;
(2). 全庫方式(Full) 將數據庫中的全部對象導出;
(3). 用戶方式(U) 能夠將指定的用戶相應的全部數據對象導出;
2. 在導入導出備份方式中,提供了很強大的一種方法,就是增量導出/導入,可是它必須做爲System來完成增量的導入導出,並且只能是對整個數據庫進行實施。
增量導出又能夠分爲三種類別:
(1). 徹底增量導出(Complete Export) 這種方式將把整個數據庫文件導出備份;
exp system/manager inctype=complete file=20041125.dmp(爲了方便檢索和過後的查詢,一般咱們將備份文件以日期或者其餘有明確含義的字符命名)
(2). 增量型增量導出(Incremental Export) 這種方式將只會備份上一次備份後改變的結果;
exp system/manager inctype=incremental file=20041125.dmp
(3). 累積型增量導出(Cumulate Export) 這種方式的話,是導出自上次徹底增量導出後數據庫變化的信息;
exp system/manager inctype=cumulative file=20041125.dmp
3. 一般狀況下,DBA們所要作的,就是按照企業指定或者是本身習慣的標準(若是是本身指定的標準,建議寫好計劃說明),
通常,咱們採用廣泛承認的下面的方式進行天天的增量備份:
4. 這樣,咱們能夠保證每週數據的完整性,以及恢復時的快捷和最大限度的數據損失。
恢復的時候,假設事故發生在週末,DBA可按這樣的步驟來恢復數據庫:
第一步:用命令CREATE DATABASE從新生成數據庫結構;
第二步:建立一個足夠大的附加回滾。
第三步:徹底增量導入A:
imp system/manager inctype=RESTORE FULL=Y FILE=A
第四步:累計增量導入E:
imp system/manager inctype=RESTORE FULL=Y FILE=E
第五步:最近增量導入F:
imp system/manager inctype=RESTORE FULL=Y FILE=F
一般狀況下,DBA所要作的導入導出備份就算完成,只要科學的按照規律做出備份,就能夠將數據的損失下降到最小,提供更可靠的服務。
另外,DBA最好對每次的備份作一個比較詳細的說明文檔,使得數據庫的恢復更加可靠。
3、冷備份
冷備份在數據庫出現問題是 只會恢復到備份時的那一時間點,備份完成到數據庫出現問題須要恢復時的這一時間段內的全部新數據、修改記錄都沒法恢復。
熱備份只能在歸檔模式下進行,冷備份不須要歸檔模式,歸檔模式會對系統性能尤爲是磁盤I/O形成必定的影響,可是相對於歸檔的好處和安全性,相信大多數DBA都會選擇歸檔模式。
一、優勢:
二、缺點:
3. 案例以下
另文詳細介紹 < http://www.cnblogs.com/eastsea/p/3898070.html >
4. 基本流程
當數據庫能夠暫時處於關閉狀態時,咱們須要將它在這一穩定時刻的數據相關文件轉移到安全的區域,
當數據庫遭到破壞,再從安全區域將備份的數據庫相關文件拷貝回原來的位置,
這樣,就完成了一次快捷安全等數據轉移。
因爲是在數據庫不提供服務的關閉狀態,因此稱爲冷備份。
冷備份具備不少優良特性,好比上面圖中咱們提到的,快速,方便,以及高效。一次完整的冷備份步驟應該是:
Step1. 首先關閉數據庫(shutdown normal)
Step2. 拷貝相關文件到安全區域(利用操做系統命令拷貝數據庫的全部的數據文件、日誌文件、控制文件、參數文件、口令文件等(包括路徑))
Step3. 從新啓動數據庫(startup),以上的步驟咱們能夠用一個腳原本完成操做:
su – oracle < sqlplus /nolog
connect / as sysdba
shutdown immediate;
!cp 文件備份位置(全部的日誌、數據、控制及參數文件);
startup;
exit;
Step4. 這樣,咱們就完成了一次冷備份,請肯定你對這些相應的目錄(包括寫入的目標文件夾)有相應的權限。
Step5. 恢復的時候,相對比較簡單了,咱們停掉數據庫,將文件拷貝回相應位置,重啓數據庫就能夠了,固然也能夠用腳原本完成。
4、熱備份
熱備份支持在數據庫不停機的狀況下進行備份,冷備份是必須在數據庫shutdown之後使用操做系統的命令對錶空間進行拷貝進行的備份。
熱備份適用於重要的數據庫,好比7x24不能中斷的生產系統,同時能夠保證數據庫在出現崩潰時結合歸檔日誌能夠恢復到任意一個時間點,不會形成數據丟失。
一、優勢:
二、缺點:
3. 案例以下
另文詳細介紹 < http://www.cnblogs.com/eastsea/p/3898091.html >
4. 基本流程
當咱們須要作一個精度比較高的備份,並且咱們的數據庫不可能停掉(少量訪問量)時,
這個狀況下,咱們就須要歸檔方式下的備份,就是下面討論的熱備份。
熱備份能夠很是精確的備份表空間級和用戶級的數據,因爲它是根據歸檔日誌的時間軸來備份恢復的,理論上能夠恢復到前一個操做,甚至就是前一秒的操做。具體步驟以下:
Step1. 經過視圖v$database,查看數據庫是否在Archive模式下: SQL> select log_mode from v$database;
若是不是Archive模式
則設定數據庫運行於歸檔模式下:SQL>shutdown immediate
SQL>startup mount
SQL> alter database archivelog;
SQL> alter database open;
若是Automaticarchival顯示爲「Enabled」,則數據庫歸檔方式爲自動歸檔。不然須要手工歸檔,或者將歸檔方式修改成自動歸檔,如:
正常shutdown數據庫,在參數文件中init.ora中加入以下參數
SQL>shutdown immediate
修改init.ora:
LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(歸檔日值存放位置能夠本身定義)
SQL>startup
而後,從新啓動數據庫,此時Oracle數據庫將以自動歸檔的方式工做在Archive模式下。
其中參數LOG_ARCHIVE_DEST1是指定的歸檔日誌文件的路徑,建議與Oracle數據庫文件存在不一樣的硬盤,一方面減小磁盤I/O競爭,另一方面也能夠避免數據庫文件所在硬盤毀壞以後的文件丟失。
歸檔路徑也能夠直接指定爲磁帶等其它物理存儲設備,但可能要考慮讀寫速度、可寫條件和性能等因素。
注意:當數據庫處在ARCHIVE模式下時,必定要保證指定的歸檔路徑可寫,不然數據庫就會掛起,直到可以歸檔全部歸檔信息後纔可使用。
另外,爲建立一個有效的備份,當數據庫在建立時,必須履行一個全數據庫的冷備份,就是說數據庫須要運行在歸檔方式,而後正常關閉數據庫,備份全部的數據庫組成文件。
這一備份是整個備份的基礎,由於該備份提供了一個全部數據庫文件的拷貝。(體現了冷備份與熱備份的合做關係,以及強大的能力)
Step2. 備份表空間文件:
(1). 首先,修改表空間文件爲備份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;
(2).而後,拷貝表空間文件到安全區域 !CP tablespace_name D_PATH;
(3).最後,將表空間的備份模式關閉 ALTER TABLESPACE tablespace_name END BACKUP;
Step3. 對歸檔日誌文件的備份:
中止歸檔進程-->備份歸檔日誌文件-->啓動歸檔進程
若是日誌文檔比較多,咱們將它們寫入一個文件成爲一個恢復的參考:$ files `ls <歸檔文件路徑>/arch*.dbf`;export files
Step4. 備份控制文件:
SQL> alter database backup controlfile to 'controlfile_back_name(通常用2004-11-20的方式)' reuse;
固然,咱們也能夠將上面的東東寫爲一個腳本,在須要的時候執行就能夠了:
腳本範例:
su – oracle < sqlplus /nolog
connect / as sysdba
ALTER TABLESPACE tablespace_name BEGIN BACKUP
!CP tablespace_name D_PATH
ALTER TABLESPACE tablespace_name END BACKUP
alter database backup controlfile to 'controlfile_back_name(通常用2004-11-20的方式)' reuse;
!files `ls <歸檔文件路徑>/arch*.dbf`;export files
熱備份的恢復,對於歸檔方式數據庫的恢復要求不但有有效的日誌備份還要求有一個在歸檔方式下做的有效的全庫備份。
歸檔備份在理論上能夠無數據丟失,可是對於硬件以及操做人員的要求都比較高。
在咱們使用歸檔方式備份的時候,全庫物理備份也是很是重要的。
歸檔方式下數據庫的恢復要求從全備份到失敗點全部的日誌都要無缺完好。
恢復步驟:LOG_ARCHIVE_DEST_1
shutdown數據庫。
將全備份的數據文件放到原來系統的目錄中。
將全備份到失敗點的全部歸檔日誌放到參數LOG_ARCHIVE_DEST_1所指定的位置。
利用sqlplus登錄到空實例。(connect / as sysdba)
而後 startup mount
set autorecovery on
recover database;
alter database open;
Thanks and Regards