RMAN備份恢復Oracle

一、備份與恢復概述

1、需要備份的原因

現實工作中有很多情況都可能造成數據丟失,造成數據丟失的主要因素如下。

n  介質故障:磁盤損壞、磁頭碰撞,瞬時強磁場干擾

n  用戶的錯誤操作

n  服務器的徹底崩潰

n  計算機病毒

n  不可預料的因素:自然災害、電源故障、盜竊

 上面是一些可能的故障原因,根據原因可以將oracle中的故障分爲以下4種類型。

1)語句故障  2)戶進程故障   3實例故障 4介質故障

 

 

 

 二、備份與恢復的定義及分類

1、備份的分類

1)從物理與邏輯角度分類

從物理與邏輯角度分,備份可以分爲物理備份和邏輯備份。

① 物理備份:

對數據庫操作系統的物理文件(如數據文件、控制文件和日誌文件)的備份。物理備份又可以分爲脫機備份(冷備份)和聯機備份(熱備份),前者是在關閉數據庫的時候進行的,後者對正以歸檔日誌方式運行的數據庫進行備份。可以使用oracle的恢復管理器(RMAN)或操作系統命令進行數據庫的物理備份。

② 邏輯備份:對數據庫邏輯組件(如表和存儲過程等數據庫對象)的備份。邏輯備份的手段很多,如傳統的EXP、數據泵EXPDP、數據庫閃回技術及第三方工具,都可以進行數據庫的邏輯備份。

 

2)從數據庫的備份策略角度分類

① 完全備份:

每次對數據進行完整的備份。當發生數據丟失的災難情況時,完全備份無須依賴其他信息,即可實現100%數據恢復,其恢復時間最短且操作最方便。

② 增量備份:

只有那些在上次完全備份或者增量備份後被修改的文件纔會備份。優點是備份數據量小,需要的時間短,缺點是恢復的時候需要依賴之前的備份記錄,出問題的風險較大。

③ 差異備份:

備份那些自從上次完全備份之後被修改過的文件。從差異備份中恢復數據庫時間較短,因此只需要兩份數據(最後一次完全備份和最後一次差異備份),缺點是每次備份需要的時間較長。

2、恢復的定義及分類

恢復就是發生故障後,利用已備份的數據或控制文件,重新建立一個完整的數據庫。恢復分爲以下兩種類型。

1)實例恢復:當oracle實例出現失敗後,oracle自動進行的恢復。

2)介質恢復:當存放數據庫的介質出現故障時所做的恢復。介質恢復又分爲完全恢復和不完全恢復。

完全恢復:將數據庫恢復到數據庫失敗時的狀態。這種恢復是通過裝載數據庫備份,並用全部的重做日誌做到的。

 

不完全恢復:將數據庫恢復到數據庫失敗前的某一時刻的狀態。這種恢復是通過裝載數據庫備份並應用部分的重做日誌做到的。進行不完全恢復後,必須在啓動數據庫時用resetlogs選型重設聯機重做日誌。

三、使用RMANrecovery  manager工具

用於備份和恢復數據庫文件、歸檔日誌和控制文件。也可以用來執行完全或不完全的數據庫恢復。RMAN3種不同的用戶接口:命令行方式,GUI方式(集成在OEM中的備份管理器)、api方式(用於集成到第三方的備份軟件中)。它具有如下優點:

1)支持在線熱備份

2)支持多級增量備份

3)支持並行備份、恢復

4)減少所需要的備份量

5)備份、恢復使用簡單

1.RMAN組件

RMAN備份恢復Oracle
四。RMAN實例

1、創建恢復目錄(恢復目錄數據庫)

1)、創建恢復目錄數據庫

#mkdir -p /opt/oracle/oradata/rmandb1

#chown -R  oracle /opt/oracle/oradata/rmandb1

#sqlplus /nolog

sql>conn sys/oracle11g as sysdba

SQL> create tablespace rmants datafile '/opt/oracle/oradata/rmandb/rmants.ora' size 20M ;

2)、在恢復目錄數據庫中創建RMAN 用戶並授權

SQL> create user rman identified by rman 

     default tablespace rmants 

    temporary tablespace temp;

        SQL> grant connect,resource to rman;

SQL> grant recovery_catalog_owner to rman;

3)、在恢復目錄數據庫中創建恢復目錄

$rman catalog rman/rman

RMAN>create catalog tablespace rmants;

2、註冊目標數據庫到恢復目錄

1)、進入RMAN環境

$rman

2)、連接目標數據庫

RMAN>connect target sys/Oracle11g;

3)、連接恢復目錄數據庫

RMAN>connect catalog rman/rman@newrman;

4)、註冊

RMAN>register database;

3、在歸檔模式下備份和恢復

1).將數據庫設置未歸檔模式,數據庫實例要處於啓動狀態,數據庫已經加載或打開狀態

sql>shutdown immediate;

sql>startup mount;

sql>alter database archivelog;

2)、首先修改快閃恢復區的參數(將數據存儲到快閃恢復區)

Sql>alter system  setdb_recovery_file_dest_size=2g;

3)、創建一個表空間和表

Sql>create tablespace tab1

Datafile‘/opt/oracle/oradata/rmandb/tab1.dbf’ size 10m;

4)、向表tab1中添加記錄

Insert into  tab1 values(1);

Commit;

5)、使用數據庫用戶sys登錄RMAN

$rman  target  sys/oracle11g

6)、關閉數據庫,並從rman加載數據庫到mount狀態

RMAN>shutdown  immediate

RMAN>startup  mount;

7)、備份整個數據庫到快閃區

Rman>backup  database;

(備份數據庫時默認不包含歸檔日誌文件,若要包含歸檔日誌文件,則加上plus archivelog關鍵字,delete input 的意思是在備份完成後,刪除archivelog文件。

RMAN〉backup database  plus archivelog delete input)

8)、關閉數據庫

RMAN>shutdown  immediate;

9)、刪除數據庫文件 rm /opt/oracle/oradata/rmandb/tab1.dbf

10)、恢復數據文件

在RMAN 中關閉數據庫庫並啓動到mount狀態

RMAN>startup  mount;

使用RMAN重建數據庫

RMAN>restore  database;(restore用於恢復到備份時刻,數據來源於備份數據)

恢復(recover)數據庫

RMAN>recover database;(restore用於恢復備份時刻到故障點之間的數據,數據來源於archivelog)

使用RMAN將數據庫從mount狀態切換到open狀態

RMAN>alter  database  open;

11)、驗證數據庫文件是否已經恢復

select * from tab1

4、備份與恢復表空間

rman>backup tablespace tab1;

rman>run{

sql 'alter tablespace tab1 offline immediate';

restore tablespace tab1;

recover tablespace tab1;

sql 'alter tablespace tab1 online';

}

5、數據文件備份與恢復

1).查看當前數據庫的所有數據文件

col  file_name for a55

set line 100

Sql>select file_id,file_name,tablespac_name from dba_data_files;

2).使用RMAN備份數據文件

RMAN>backup  datafile  n;

3).使用RMAN備份控制文件

RMAN>backup  currentcontrolfile;

4).關閉數據庫

RMAN>shutdown immediate;

5).模擬故障,刪除數據庫文件c:\data\tab1.dbf

6).rman>run{

sql 'alter tablespace tab1 offline immediate';

restore datafile n;

recover datafile n;

sql 'alter tablespace tab1 online';

}(也會遇到恢復時不需要先卸表空間,在掛載表空間)

 

發佈了35 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章