RMAN相關

RMAN使用詳解........

數據庫備份方案(oracle)

目錄

數據庫備份方案... 1

文檔控制... 1

目錄... 2

一 前言... 3

二 備份恢復工具簡介... 3

1,常用的imp/exp工具... 3

2,恢復管理器(RMAN)... 3

三 配置RMAN. 4

1,配置歸檔(ARCHIVELOG)模式... 4

2,配置控制文件自動備份... 4

3,配置控制文件記錄保持時間... 4

4,配置保留策略的恢復窗口... 4

5,設定默認保存備份文件的路徑... 4

6,啓用快速增量備份... 4

7,配置RMAN使用優化(OPTIMIZATION)模式... 4

8,配置RMAN使用壓縮備份集... 4

四 多級備份策略... 5

1,零級備份腳本... 5

2,一級增量備份腳本... 5

3,一級差異備份腳本... 6

4,歸檔文件備份腳本... 6

五 管理RMAN. 7

1,如果手動刪除了備份文件的話,需要執行交叉檢驗讓RMAN進行同步。... 7

2,報告已不用(OBSOLETE)和過期(EXPIRED)的備份文件。... 7

3,刪除已不用(OBSOLETE)和過期(EXPIRED)的備份文件。... 7

六 使用RMAN進行恢復... 7

1,完全恢復... 7

1.1,恢復整個數據庫... 7

1.2,恢復指定表空間或數據文件... 8

2,不完全恢復... 8

3,塊級別的恢復... 8

七 使用FLASHBACK進行快速恢復... 9

1,9i中的FLASHBACK:... 9

2,10g中的FLASHBACK:... 9

八 其他高可用性方案(High Availability)簡介... 10







一 前言

如同社會總會有不公平、人總會犯錯誤、程序總會有BUG一樣,數據庫出現問題是不

可避免的,好的備份是項目成功應用的關鍵。

從獨立的硬盤保存備份文件、主機與從機同步(DATA GUARD)到多實例單數據庫的

負載平衡(RAC),按照不同的需求對應不同級別的技術,但其根本就是數據的冗餘,用人力和物力來提高數據可用性。



強烈推薦備份到其他物理存儲設備上,如另一塊硬盤,以保證出現介質故障時可以順利恢復。





二 備份恢復工具簡介

1,常用的imp/exp工具

我們常用的imp/exp工具是由Oracle提供的用於在客戶端把數據導出到dmp文件,進行數據轉移和保存的方法,是邏輯備份。在11gR2中已經廢棄exp,保留imp,相關操作由數據汞(Data Pump)的impdp/expdp代替。

優點爲:
使用簡單。
可以指定導出某個邏輯對象(整個數據庫或用戶或表)

缺點爲:
不能進行完全恢復(Complete Recovery)
只能備份數據文件(Data File)
全庫導出對數據庫壓力較大
佔用空間較大

2,恢復管理器(RMAN)

由Oracle提供的專業的備份與恢復工具,是物理備份。

優點爲:
1: 可以進行完全恢復與不完全恢復
2: 可以備份所有數據庫文件(控制文件,服務器參數文件,歸檔日誌文件,數據文件)
3: 具有功能強大的控制能力和腳本編寫語言
4: 支持在線熱備份
5 支持多級增量備份
6: 支持並行備份,恢復
7: 減少備份數據量(壓縮、塊級備份)
8: 可將文件備份到磁盤或磁帶
9: 支持在線塊級別恢復
10,可以限制速率,減少備份中對系統的造成的影響
11,等等。。。



三 配置RMAN
1,配置歸檔(ARCHIVELOG)模式
數據庫在裝載(MOUNT)模式下執行下列操作開啓歸檔模式
SQL> ALTER DATABASE ARCHIVELOG;


2,配置控制文件自動備份
RMAN> SHOW ALL ------------查看所有參數
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

3,配置控制文件記錄保持時間
SQL> ALTER SYSTEM SET CONTROL_FILE_RECORD_KEEP_TIME=45;
設置RMAN備份信息保存在控制文件中的時間,要大於等於保留策略的恢復窗口。

4,配置保留策略的恢復窗口
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 31 DAYS;

備份文件超過這個日期時RMAN會標記爲已不用(OBSOLETE):
RMAN> REPORT OBSOLETE;

數據庫中的文件超過這個日期時RMAN會報告需要備份:
RMAN> REPORT NEED BACKUP;



5,設定默認保存備份文件的路徑

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/oradata/BACKUP/%U' ;


6,啓用快速增量備份

在9i中,RMAN進行增量備份要掃描所有數據文件,找出發生變更的數據塊,然後進行備份。

在10g中,增加了一個新特性---塊更改跟蹤(Block Change Tracking),會把發生變更的數據塊記錄在一個跟蹤文件內,這樣就避免了增量備份時對數據庫的全面掃描。

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/oracle/admin/orcl/scripts/BLOCK_CHANGE_TRACKING.TRC';

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/oracle/admin/popdb/bdump/BLOCK_CHANGE_TRACKING.TRC';


7,配置RMAN使用優化(OPTIMIZATION)模式
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
開啓優化模式RMAN會自動跳過滿足某些條件的文件,實驗表明,優化模式可以提高10%左右的性能



8,配置RMAN使用壓縮備份集

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1;

在10g中RMAN增加了一個新特性---壓縮備份集,能夠使備份集減少到原來的1/5或1/6,代價是增加10%左右的CPU消耗,可以根據實際情況選擇使用。

條件允許的話(多物理硬盤、多CPU)還可以用上面命令設定並行備份





四 多級備份策略
採用多級備份是爲了減少了恢復所需要的時間和減少每天備份所需要的時間,而又保證系統有很好的恢復性。但是在恢復時間和備份時間要有一個權衡。比如只要開始的一個全備份和備份所有產生的歸檔文件就可以保證把數據庫恢復到最新的狀態,但是一般來說實際上並不會這麼進行(因爲在恢復時將需要很長很長的時間),多級備份就是爲了解決這樣的問題。以下是一種建議的方案。


每個月做一次零級備份
每個星期做一次一級增量備份
每天做一次一級差異備份

當需要時(如不到二十四個小時歸檔文件系統就要滿了)備份歸檔文件


1,零級備份腳本

RMAN> RUN {

ALLOCATE CHANNEL 'DEV1' TYPE DISK;

ALLOCATE CHANNEL 'DEV2' TYPE DISK ;

ALLOCATE CHANNEL 'DEV3' TYPE DISK ;

BACKUP INCREMENTAL LEVEL 0 TAG 'LV0' FORMAT'/data/rman/full_20100224/backup_0_%T_%U' DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

DELETE NOPROMPT OBSOLETE;

RELEASE CHANNEL DEV1;

RELEASE CHANNEL DEV2;

RELEASE CHANNEL DEV3;

}



2,一級增量備份腳本

RMAN> RUN {

ALLOCATE CHANNEL 'DEV1' TYPE DISK ;

ALLOCATE CHANNEL 'DEV2' TYPE DISK ;

ALLOCATE CHANNEL 'DEV3' TYPE DISK ;

BACKUP INCREMENTAL LEVEL 1 CUMULATIVE TAG 'LV1C' FORMAT '/oradata/backup/backup_1_%T_%U' DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

RELEASE CHANNEL DEV1;

RELEASE CHANNEL DEV2;

RELEASE CHANNEL DEV3;

}



3,一級差異備份腳本

RMAN> RUN {

ALLOCATE CHANNEL 'DEV1' TYPE DISK ;

ALLOCATE CHANNEL 'DEV2' TYPE DISK ;

ALLOCATE CHANNEL 'DEV3' TYPE DISK ;

BACKUP INCREMENTAL LEVEL 1 TAG 'LV1D' FORMAT '/u01/oraback/backup_1_%T_%U' DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

RELEASE CHANNEL DEV1;

RELEASE CHANNEL DEV2;

RELEASE CHANNEL DEV3;

}



4,歸檔文件備份腳本

RMAN> RUN {

ALLOCATE CHANNEL 'DEV1' TYPE DISK ;

ALLOCATE CHANNEL 'DEV2' TYPE DISK ;

ALLOCATE CHANNEL 'DEV3' TYPE DISK ;

BACKUP FILESPERSET 3 ARCHIVELOG ALL DELETE INPUT;

RELEASE CHANNEL DEV1;

RELEASE CHANNEL DEV2;

RELEASE CHANNEL DEV3;

}



則每天所需要備份的數據量只有一天的改變量。而做恢復時最多隻要恢復當月的一個零級備份+三個一級增量備份+6個一級差異備份+當天的歸檔文件。如果不能接受這樣的恢復時間,就只能夠減少零級備份之間的時間間隔(如可以每個星期做一個零級備份,這樣恢復時最多只需要恢復一個星期的數據量)。對於負載極低的系統甚至可以半年做一次零級備份



五 管理RMAN

通過RMAN的REPORT,LIST,CROSSCHECK,DELETE命令可以對RMAN進行管理。



1,如果手動刪除了備份文件的話,需要執行交叉檢驗讓RMAN進行同步。

RMAN> CROSSCHECK BACKUP;
RMAN> CROSSCHECK ARCHIVELOG ALL;

交叉檢驗後RMAN會把已經被手動刪除的備份文件的狀態設置爲過期(EXPIRED)。


2,報告已不用(OBSOLETE)和過期(EXPIRED)的備份文件。
RMAN> REPORT OBSOLETE;
RMAN> LIST EXPIRED BACKUP;



3,刪除已不用(OBSOLETE)和過期(EXPIRED)的備份文件。

RMAN> DELETE OBSOLETE;

RMAN> DELETE EXPIRED BACKUP;





六 使用RMAN進行恢復

RMAN 的整個恢復過程可以分爲還原(RESTORE)與恢復(RECOVER),他們在含義上是有很大差別的,一個是指物理意義的文件的還原與拷貝,一個是指數據庫一致性的恢復。

數據庫的的恢復比較複雜,有許多不同的情況,必須在瞭解ORACLE數據庫結構的條件下用不同的方法進行處理。下面只列出最普通的恢復情況。

恢復整個數據庫之前必須讓數據庫處於狀態的狀態(MOUNT)狀態。

SQL> STARTUP MOUNT;

然後執行RMAN命令進行還原和恢復。

1,完全恢復

1.1,恢復整個數據庫

RMAN>

RESTORE DATABASE;

RECOVER DATABASE;






1.2,恢復指定表空間或數據文件

在恢復該表空間之前讓該表空間處於脫機的狀態(OFFLINE狀態)。

SQL> ALTER TABLESPACE TBS OFFLINE;

然後通過RMN進行恢復。

RMAN>

RESTORE TABLESPACE TBS ;

RECOVER TABLESPACE TBS ;


}



2,不完全恢復

不完全恢復情況比較複雜,大致分一下四類。

1: 基於時間的恢復(Time-based recovery)

2: 基於撤銷的恢復(Cancel-based recovery)

3: 基於改變的恢復(Change-based recovery)

4: 日誌序列恢復(Log sequence recovery)



3,塊級別的恢復

RMAN可以在線對邏輯損壞的數據塊進行恢復而不影響數據庫的運行。

RMAN> BLOCKRECOVER DATAFILE 6 BLOCK 3;



七 使用FLASHBACK進行快速恢復


發生以下類型的錯誤時,通常需要使用備份執行恢復:

? 介質故障:因數據庫文件的物理問題而導致無法讀寫該文件

? 用戶錯誤:數據庫中的數據被誤更改或誤刪除

使用RMAN進行介質故障恢復,使用FLASHBACK進行用戶錯誤恢復。



1,9i中的FLASHBACK:

查詢數據庫的SCN變化情況

SQL> SELECT NAME,FIRST_CHANGE# FSCN,NEXT_CHANGE# NSCN,FIRST_TIME FROM V$ARCHIVED_LOG;

獲得當前SCN

SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FSCN FROM DUAL;

創建恢復表,選擇恢復到合適的SCN

SQL> INSERT INTO TB_RECOVER SELECT * FROM TB AS OF SCN 1999999999;



2,10g中的FLASHBACK:

10g的FLASHBACK進行了增強和修改,通過回閃,用戶可以完成許多不可能恢復的

工作,目前 10g 的回閃包括以下特性;

1,oracle falshback Database.

該特性允許 oracle 通過 Flashback database 語句,將數據庫會滾到前一個時間點或者

scn 上,而不需要作時間點的恢復工作!

2,oracle falshback table.

該特性允許 oracle通過 flashback table 語句,將表會滾到前一個時間點或者 scn 上。

3,oracle falshback drop.

該特性允許 oracle把恢復 drop掉的 table 或者索引。

4,oracle falshback version query.

該特性可以得到特定的表在某一個時間段內的任何修改記錄!

5,oracle falshback transaction query

該特性可以限制用戶在某一個事務級別上檢查數據庫的修改操作,適用於診斷問題、分

析性能、審計事務。





八 其他高可用性方案(High Availability)簡介

? Data Guard:提供一組全面的服務,可用於創建、維護、管理並監控一個或多個備用數據庫

? Oracle Real Application Clusters (RAC):用於從多個實例訪問單個數據庫

? Oracle Streams:可以傳播並管理數據流中的數據、事務處理和事件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章