一、環境準備
-
目標恢復機安裝好數據庫軟件,與源庫RAC環境版本相同,并打上相同補丁或更新的補丁。
-
RAC環境全庫備份已完成。
-
本次恢復測試的版本為19c non-cdb環境。
-
以上的步驟準備比較基礎,這里不詳細展開,下面對關鍵步驟進行詳解
二、恢復步驟
1、切換環境變量
. 19c_profile
Note:在環境變量配置過程中,可以自行定義實例名
2、創建相關目錄
mkdir -p /oracle/app/oracle/oradata/william
mkdir -p /oracle/app/oracle/fast_recovery_area
mkdir -p /oracle/app/oracle/admin/william/adump
Note:以上目錄分別為數據目錄、快速恢復區目錄、審計目錄;oracle用戶進行創建
3、參數文件配置
vi /home/oracle/pfile_william.bak
*.audit_file_dest='/oracle/app/oracle/admin/william/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/oracle/app/oracle/oradata/william/controlfile01.ctl'
*.db_block_size=8192
*.db_name='william'
*.db_recovery_file_dest='/oracle/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=490g
*.db_unique_name='william'
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers=''
family:dw_helper.instance_mode='read-only'
*.local_listener='-oraagent-dummy-'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=3000
*.pga_aggregate_limit=14g
*.pga_aggregate_target=2g
*.processes=4096
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=6g
*.sga_target=6g
*.undo_retention=14400
*.undo_tablespace='UNDOTBS1'
Note:以上參數為比較基礎的參數示例;各位同學可以根據情況進行配置;介紹幾個注意參數
compatible參數需要和軟件版本一致
cluster_database參數需要去掉或者設置為false
instance_number和thread需要去掉
總之相關集群參數需要去掉
4、創建口令文件
orapwd file=$ORACLE_HOME/dbs/orapwwilliam password=William#2022 force=y
Note:此處口令文件也可以到主庫進行拷貝,然后改名
5、啟動nomount狀態
create spfile from pfile='/home/oracle/pfile_william.bak';
startup nomount
Note:此處可以利用pfile啟動,進行測試相關參數是否可以啟動成功;若有錯誤修復后再重新創建spfile即可會進行覆蓋。
6、恢復控制文件
連接
rman target /
還原
restore controlfile from '/backup/WILLIAM_ctl_1549598161_20220331_1100791365_tc0ppfi5_940_1_1';
掛載數據庫
alter database mount;
Note:注意在RAC備份的時候,單獨備份控制文件到一個備份片當中,方便辨認控制文件的備份片位置
7、注冊備份信息(catalog)
catalog start with '/backup/' NOPROMPT;
Note:上面我們還原了控制文件,故需要將備份信息注冊到控制文件當中;本次實驗是無catalog資料庫,所以需要本地注冊備份信息。
當然也可以單獨針對備份片進行catalog,以上是對整個目錄進行catalog;注意目錄不要存放過多無用的備份,避免catalog時間過長。
8、還原數據文件
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
set newname for database to '/oracle/app/oracle/oradata/william/%b';
restore database;
switch datafile all;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
Note:RAC到單機目錄結構不同,需要進行數據文件位置轉換;
%b表示跟源文件名字一樣;
可以根據數據文件的大小分配合適的通道。
9、介質恢復
查看歸檔
list backup of archivelog all completed after "sysdate - 3";
恢復到可以恢復的最新scn
recover database until scn 4452715354;
Note:數據庫恢復時間必須大于數據文件頭的最大時間,也就是備份之前的時間點無法恢復;
最新可以恢復scn為thread中最大的scn,并且為所有thread中最小的scn,通常最新的scn會缺失另一個thread的歸檔號;
當然也可以不指定scn,讓其一直恢復到可以恢復的最新時間點。
可以根據vdatafile、vdatafile_header視圖比對數據文件是否恢復到一致性狀態。
10、禁用塊跟蹤
alter database disable block change tracking;
Note:往往生成環境RAC環境下快跟蹤文件會存放在asm磁盤組中,故下面open數據庫會報錯,需要將其禁用
11、處理DG保護模式
select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
alter database set standby to maximize performance;
Note:有時候我們生產環境會配置了ADG最大可用的保護模式;最大可用保護模式必須需要至少一個備庫環境配置才能打開數據庫,故需要檢查是否為默認的最大性能保護模式。
12、resetlog打開數據庫
alter database open resetlogs;
Note:此時所有數據文件的resetlog scn會進行更新,并且創建出一個新的化身。
13、處理日志組
禁用thread 2
alter database disable THREAD 2;
查看日志組
set line 300
col member for a60
select group#,member from v$logfile;
select GROUP#,THREAD#,status from v$log;
添加新的
alter database add logfile thread 1 group 1('/oracle/app/oracle/oradata/william/redo01.log') size 512m;
alter database add logfile thread 1 group 2('/oracle/app/oracle/oradata/william/redo02.log') size 512m;
alter database add logfile thread 1 group 3('/oracle/app/oracle/oradata/william/redo03.log') size 512m;
刪除之前的
alter database drop logfile group 5;
alter database drop logfile group 6;
alter database drop logfile group 7;
alter database drop logfile group 8;
alter database drop logfile group 9;
alter database drop logfile group 10;
alter database drop logfile group 11;
alter database drop logfile group 12;
Note:單機環境下,需要禁用其他多余的線程號;處理一些在ASM磁盤組路徑的redo log。
Note:日志組也可以mount下,利用rename的方式處理
14、處理臨時表空間
set line 300
col name for a60
select a.FILE#,a.name,a.TS#,b.name from v$tempfile a, v$tablespace b where a.TS#=b.TS#;
alter tablespace temp add tempfile '/oracle/app/oracle/oradata/william/temp01.dbf' size 512m autoextend on;
alter tablespace temp add tempfile '/oracle/app/oracle/oradata/william/temp02.dbf' size 512m autoextend on;
alter tablespace william_temporary add tempfile '/oracle/app/oracle/oradata/william/william_temporary01.dbf' size 512m autoextend on;
alter tablespace temp drop tempfile 1;
alter tablespace temp drop tempfile 2;
alter tablespace temp drop tempfile 3;
Note:處理一些在asm磁盤組路徑中的臨時文件;當然可以配置新的臨時表空間再刪除舊的,此過程會更快
Note:臨時表空間也可以mount下,利用rename的方式處理
15、控制文件快照配置清除
rman target /
CONFIGURE SNAPSHOT CONTROLFILE NAME clear;
Note:RAC環境控制文件快照位置通常會配置在ASM磁盤組中,這里我們需要修改在本地;默認配置為本地路徑,恢復默認配置即可。
自此RAC恢復到單機已恢復完成,并且進行了相關必備的優化,你學廢了嗎




