標籤:group bak 驗證 toc 通過 logfile 需求 執行 注意
11g的RMAN duplicate 個人感覺比10g的先進了很多,10g需在rman備份的基礎上進行複製,使用RMAN duplicate建立一個資料完全相同但DBID不同的資料庫。而11g的RMAN duplicate 可通過Active database duplicate和Backup-based duplicate兩種方法實現。
Active database duplicate方式不需要先把目標資料庫進行rman備份,只要目標資料庫處于歸檔模式下即可直接通過網路對資料庫進行copy,且copy完成後自動open資料庫。這對於大資料特別是T層級的資料庫來說優點非常明顯,複製前不需要進行備份,減少了備份和傳送備份的時間,同時節省備份空間。
案例一:RMAN duplicate的Active database duplicate方式
1、環境(同機測試,異機區別不大)
target DB(ip:192.168.1.1;hostname:oradba;oraclesid:prod)
auxiliary DB(ip:192.168.1.1;hostname:oradba;oraclesid:stby)
2、建立auxiliary DB參數檔案,啟動執行個體到nomount狀態
可根據target DB參數檔案進行修改使用,內容略,但需注意如下:
db_file_name_convert=(‘/u01/app/oracle/oradata/prod/‘,‘/u01/app/oracle/oradata/stby/‘)
log_file_name_convert=(‘/u01/app/oracle/oradata/prod/‘,‘/u01/app/oracle/oradata/stby/‘)
為同一機器不同執行個體,參數檔案中必須添加如上內容,否則複製時會報無法建立資料檔案,如果異機複製 ,且兩執行個體資料目錄完全一致,這兩參數可省略,另因同機,參數檔案中的db_name不能一樣,如果是異機複製,db_name完全可以一樣。
3、建立參數檔案中相關目錄並修改許可權
mkdir /u01/app/oracle/oradata/stby/ -pv
mkdir /u01/app/oracle/fast_recovery_area/stby/ -pv
chown oracle:oinstall /u01 -R
4、啟動執行個體到nomount狀態
SQL> startup nomount pfile=‘/u01/app/oracle/product/11.2.0/db_1/dbs/initstby.ora‘;
5、建立密碼檔案,必須保持target DB和auxiliary DB的密碼一致
此處選擇複製target DB的密碼檔案:cp orapwprod orapwstby
6、配置網路
# cat ../network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME =prod)
)
(SID_DESC =
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME =stby)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradba)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
# cat ../network/admin/tnsnames.ora
prod =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradba)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prod)
))
stby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradba)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stby)
))
7、開始複製,複製時需注意是否使用nofilenamecheck參數,如果兩個執行個體相關資料目錄結構完全相同,則需要指定,否則會報錯。這裡不需使用。
$ export ORACLE_SID=stby --------異機操作可省略此步操作
$rman target sys/[email protected] auxiliary sys/[email protected]
/*RMAN> duplicate target database to stby from active database nofilenamecheck;*/
RMAN> duplicate target database to stby from active database;
8、檢查結果
select name from v$datafile;
select status from v$instance;
show parameter name
show parameter pfile
資料庫已經open,各項參數正常,且已建立spfile並使用!整個複製過程完成!
案例二:RMAN duplicate的Backup-based duplicate方式
需求:將使用檔案系統儲存的資料庫修改為ASM方式的儲存。
需求實現:可通過RMAN的backup as copy tablespace xx format ‘+DATA‘等多種方式實現,這裡使用duplicate方式。
本次為實驗測試,打算在單機實現,即先建立檔案系統的prod資料庫,rman備份後,刪除檔案系統方式的prod資料庫,再建立ASM儲存的prod資料庫,再通過duplicate複製資料庫。注意,不能在生產庫上實施。大致步驟如下:
1)DBCA建立檔案系統儲存的資料庫prod
2)rman方式備份檔案系統儲存的資料庫prod
3)備份pfile,匯出控制檔案到trace檔案
4)刪除檔案系統儲存的資料庫prod
5)建立ASM執行個體,建立ASM磁碟組
6)建立ASM儲存方式的prod資料的所需目錄
7)建立ASM儲存方式的prod資料庫的監聽
8)使用檔案系統prod資料庫的全備duplicate複製資料庫
操作步驟如下:
1、查看檔案系統方式的prod資料庫
select name from v$datafile;
select name from v$tempfile;
select member from v$logfile;
2、檔案系統方式prod資料庫建立pfile
create pfile=‘/home/oracle/pfile‘ from spfile;
修改pfile將控制檔案路徑修改為ASM磁碟組+DATA和+FRA上,修改快速恢複區路徑為+FRA
##*.control_files=‘/u01/oradata/PROD/control01.ctl‘,‘/u01/fast_recovery_area/PROD/control02.ctl‘
*.control_files=‘+DATA/PROD/controlfile/control01.ctl‘,‘+FRA/PROD/controlfile/control02.ctl‘
##*.db_recovery_file_dest=‘/u01/fast_recovery_area‘
*.db_recovery_file_dest=‘+FRA‘
3、檔案系統方式prod資料庫執行一次全備,儲存路徑為/home/oracle
run{
allocate channel c1 device type disk;
backup tag ‘prod_db‘ as compressed backupset format ‘/home/oracle/full_%U.bak‘ database
include current controlfile;
backup tag ‘prod_arch‘ archivelog all format ‘/home/oracle/arch_%U.bak‘;
release channel c1;
}
4、DBCA方式刪除資料庫,即檔案系統方式的prod資料庫不存在了,可以建立ASM方式的prod資料庫了。
5、建立ASM方式的prod資料庫的所需目錄
mkdir -p $ORACLE_BASE/admin/PROD/adump
6、建立ASM方式的prod資料庫(即auxiliary資料庫)密碼檔案
$ orapwd file=$ORACLE_HOME/dbs/orapwPROD password=oracle entries=5
7、在grid使用者下為auxiliary資料庫添加靜態監聽串連
$ vi /grid/app/11.2.0/grid/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = single)(PORT = 1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=PROD)
(ORACLE_HOME=/u01/oracle)
(GLOBAL_DBNAME=PROD)))
ADR_BASE_LISTENER = /grid
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
8、auxiliary資料庫使用修改過的pfile啟動資料庫到nomount狀態
startup nomount pfile=/home/oracle/pfile;
9、使用rman登入auxiliary資料庫
[[email protected] ~]$ rman auxiliary /
10、使用RMAN執行duplicate複製災備資料庫
在這一步需要從刪除前的檔案系統方式的prod資料庫通過alter database backup controlfile to trace匯出指令碼,在使用select value from v$diag_info找到該trace的路徑。將產生控制檔案指令碼中的資料庫檔案路徑進行參考來寫入set newname for datafile n,因為之前的資料庫為檔案系統,現在打算建立ASM方式的資料庫。所以需要set newname來修改路徑
run{
allocate auxiliary channel dup1 type disk;
set newname for datafile 1 to ‘+DATA‘;
set newname for datafile 2 to ‘+DATA‘;
set newname for datafile 3 to ‘+DATA‘;
set newname for datafile 4 to ‘+DATA‘;
set newname for tempfile 1 to ‘+DATA‘;
duplicate target database to PROD backup location ‘/home/oracle‘
logfile
group 1(‘+DATA‘) size 50m reuse,
group 2(‘+DATA‘) size 50m reuse,
group 3(‘+DATA‘) size 50m reuse;
}
11、驗證auxiliary資料庫的複製結果,對比之前的檔案系統目標庫
select name from v$datafile;
select name from v$tempfile;
select member from v$logfile;
show parameter control_file;
select name,open_mode from v$database;
12、auxiliary資料庫從記憶體中建立參數檔案到ASM磁碟組+DATA/PROD
create spfile=‘+DATA/PROD/spfilePROD.ora‘ from memory;
13、建立auxiliary的pfile檔案,指定spfile所在路徑.紅色字型內容是需要添加的。
$ vi $ORACLE_HOME/dbs/initPROD.ora
SPFILE=‘+DATA/PROD/spfilePROD.ora’
14、使用新建立的initPROD.ora來啟動auxiliary資料庫
shutdown immediate;
startup;
show parameter spfile;
Oracle 11gR2使用RMAN duplicate複製資料庫