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