天天看點

10gocm->session3->資料備份與恢複

這個實驗考查我們當資料庫出現故障當機、資料丢失的情況下如何挽回我們的損失,如何在最短時間内恢複我們的資料庫服務。

RMAN規劃

host

target庫

catalog庫

ocm01

ocmdb

ocm02

ocmdb02

一 模拟Control File 丢失故障處理(執行個體)

我們模拟控制檔案丢失故障并進行快速恢複

強行停止資料庫

select open_mode,log_mode from v$database;

1.shutdown abort  

rm指令删除控制檔案

rm control01.ctl

startup 啟動資料庫時就會發現報錯資訊

我們檢查alert日志獲知控制檔案丢失

shutdown immediate  停掉資料庫

2.使用完好的控制檔案恢複丢失的控制檔案

cp control02.ctl  ../disk1/control01.ctl

重新開機資料庫

startup

二 建立CATALOG庫儲存RMAN備份資訊

1.catalog庫統一管理RMAN備份資訊即中繼資料資訊,如果沒有catalog庫,就把RMAN備份資訊寫入控制檔案

2.目标資料庫必須注冊到catalog庫中才能使用

官方文檔:Backup and Recovery Reference -> CREATE CATALOG和REGISTER

Backup and Recovery Advanced User’s Guide -> 10 Managing the Recovery Catalog -> Creating a Recovery Catalog

注:ocmdb是目标資料庫

    ocmdb02是CATALOG資料庫

1.建立表空間            這個表空間存放catalog庫内容

sqlplus sys/oracle@ocmdb02 as sysdba

create tablespace catalog_tbs datafile ‘/u01/oracle/oradata/ocmdb02/catalog_tbs01.dbf‘ size 100m autoextend on;

2.建立catalog庫管理使用者catalog_admin預設表空間catalog_tbs

create user catalog_admin identified by catalog_admin default tablespace catalog_tbs;

3.将recovery_catalog角色授予給catalog_admin使用者才能備份和恢複

注:有的同學會問,我直接授予DBA角色不就可以了嗎。其實DBA角色不是萬能的,它不包括上述角色是以我們需要單獨設定

select * from dba_roles where role like ‘%RECOVER%‘;                  有沒有這個角色

select * from role_sys_privs where role=‘RECOVERY_CATALOG_OWNER‘;     這個角色包含哪些權限

grant connect,resource,recovery_catalog_owner to catalog_admin;       隻需這三個角色即可

4.登入RMAN建立CATALOG庫

rman catalog catalog_admin/catalog_admin@ocmdb02 

create catalog tablespace catalog_tbs;                               把catalog_tbs表空間指定為catalog庫

exit

5.注冊目标資料庫

注冊ocmdb

必須要管理者身份登入資料庫才可注冊普通使用者不可以

rman target sys/oracle@ocmdb1521 catalog catalog_admin/catalog_admin@ocmdb02 

register database;

注冊ocmdb02

rman target sys/oracle catalog catalog_admin/catalog_admin

【unregister database; 】取消注冊指令

6.在資料庫中确認注冊成功,看看哪些資料庫注冊到catalog庫了

sqlplus catalog_admin/catalog_admin@ocmdb02

select * from rc_database;

7.ocmdb開啟歸檔

alter system set log_archive_dest_1=‘location=/u01/oracle/arcdata‘ scope=spfile;

shutdown immediate

startup mount

alter database archivelog;

alter database open;

select log_mode from v$database;

三 設定RMAN環境變量

官方文檔:Backup and Recovery Reference -> CONFIGURE

我們在使用RMAN工具進行備份恢複時,第一 可以在指令行模式下指定備份恢複選項

                                  第二 可以提前設定好RMAN環境變量,當達到觸發條件時自動觸發(目的)

必須連接配接到目标資料庫後才可以檢視設定好的變量值

show all;

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default 備援配置保留政策:備援數是1

CONFIGURE BACKUP OPTIMIZATION OFF; # default          開啟增量備份:關

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default      預設備份裝置是磁盤

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default       控制檔案自動備份:關

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F‘; # default 控制檔案自動備份目錄和格式:%F  【備份裝置:Disk】

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default    備份的并行度:1,備份類型為備份集【幾個并行度就配置設定幾個通道】

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default           資料檔案采用複制方式備份

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default         歸檔日志采用複制方式備份

CONFIGURE MAXSETSIZE TO UNLIMITED; # default          最大值:無限制

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default      加密資料庫:關

CONFIGURE ENCRYPTION ALGORITHM ‘AES128‘; # default    加密算法采用AES128        加密表空間時預設AES192算法

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default                         歸檔日志删除政策:空

CONFIGURE SNAPSHOT CONTROLFILE NAME TO                快照控制檔案名

RMAN預設備份媒體儲存目錄/home/oracle/backup

configure channel device type disk format ‘/home/oracle/backup/ocmdb_%U‘;

控制檔案自動備份

configure controlfile autobackup on; 

configure controlfile autobackup format for device type disk to ‘/home/oracle/backup/control/controlfile_%F‘; 

備份并行度2

CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

增量備份

configure backup optimization on;

備份媒體保留期為30天

configure retention policy to recovery window of 30 days;

顯示我們設定完的參數配置

四 RMAN備份和閃回資料庫

官方文檔:Backup and Recovery Reference -> BACKUP 

Backup and Recovery Basics -> 4 Backing Up Databases Using RMAN -> 4.2.5 Using Compressed Backupsets for RMAN Backup

1.壓縮全備

backup as compressed backupset database plus archivelog;       使用預設的備份媒體目錄和格式,使用控制檔案和參數檔案自動備份

2.RMAN子產品版壓縮備份資料庫,采用壓縮備份方式全庫備份

run{

backup as compressed backupset full database

format ‘/home/oracle/backup/full_ocmdb_%u%p%s.rmn‘

include current controlfile;

backup as compressed backupset archivelog all

format ‘/home/oracle/backup/arch_ocmdb_%u%p%s.rmn‘

delete all input;

}

3.使用預設備份媒體目錄和格式,同時 删除備份過的歸檔日志

backup as compressed backupset full database include current controlfile plus archivelog delete all input; 

4.“一行RMAN指令”壓縮備份資料庫

backup as compressed backupset full database format 

‘/home/oracle/backup/full_ocmdb_%u%p%s.rmn‘ include current controlfile 

plus 

archivelog format ‘/home/oracle/backup/arch_ocmdb_%u%p%s.rmn‘  delete all input; 

5.檢查所有備份集

list backupset summary;

6.配置flashback資料庫

閃回資料庫:使用閃回日志恢複資料庫到之前的一個時間點。

啟動閃回前提條件是開啟歸檔:歸檔日志可以輔助閃回日志完成閃回工作,往回閃不用歸檔,往前閃會用到歸檔。

1.檢查資料庫狀态

select open_mode,log_mode,flashback_on from v$database; 是否在mount和archive狀态

archive log list;

先設定快速恢複區大小再設定目錄

alter system set db_recovery_file_dest_size=2g; 

mkdir -p /home/oracle/flash

alter system set db_recovery_file_dest=‘/home/oracle/flash‘;      (儲存閃回日志)

設定閃回保留期24小時(1天)機關是分鐘

alter system set db_flashback_retention_target=1440 scope=spfile; 

2.重新開機使參數生效

show parameter db_recovery

啟動閃回功能

alter database flashback on;

3.打開資料庫

select open_mode,log_mode,flashback_on from v$database;

閃回種類

閃回查詢   undo

閃回表     recycbin

閃回版本   undo

閃回事物   undo

閃回資料庫 閃回日志

閃回歸檔  表空間(永久儲存11g新特性)

來源OCM實驗選講