数据迁移_老集群RAC迁移数据恢复到新集群RAC

时间:2022-07-05 14:49:25

数据迁移_老集群RAC迁移数据恢复到新集群RAC

作者:Eric
微信:loveoracle11g

1、把老集群RAC备份的数据远程拷贝到新集群RAC
[root@old-rac-node1 ~]# cd /backup/rman/orcl
[root@old-rac-node1 orcl]# ls -l *1119*
[root@old-rac-node1 orcl]# scp *1119* root@192.168.10.10:/backup/rman/orcl
密码:oracle

[root@rac-node1 ~]# su - oracle
[oracle@rac-node1 ~]$ cd /backup/rman/orcl
[oracle@rac-node1 orcl]$ ll
total 7357616
-rw-r----- 1 oracle asmadmin  242676224 Nov 16 02:55 arch_5dtiajdc_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin  241586176 Nov 16 02:55 arch_5etiajdc_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin  203652096 Nov 16 02:55 arch_5ftiajdg_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin   19202048 Nov 16 02:55 ctl_file_5gtiajdi_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin 5939224576 Nov 16 02:56 data_level0_59tiajbk_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin  868433920 Nov 16 02:56 data_level0_5atiajbk_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin   19202048 Nov 16 02:56 data_level0_5btiajbr_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin      98304 Nov 16 02:56 data_level0_5ctiajbu_1_1_20181115.bak
-rw-r----- 1 oracle asmadmin      98304 Nov 16 02:56 orcl_spfile_5htiajdl_1_1_20181115.bak

[oracle@rac-node1 orcl]$ pwd
/backup/rman/orcl

2、新集群要恢复的数据库,要开启归档
# su - grid
# srvctl stop database -d orcl

---------------------------------------->node1
# su - oracle
# export ORACLE_SID=orcl1
# sqlplus / as sysdba
SQL> startup mount ;
SQL> alter database archivelog ;

---------------------------------------->node2
# su - oracle
# export ORACLE_SID=orcl2
# sqlplus / as sysdba
SQL> startup mount ;
SQL> alter database archivelog ;

---------------------------------------->node1
SQL> alter database open ;
---------------------------------------->node2
SQL> alter database open ;

3、停掉要恢复的数据库orcl
直接停掉 # srvctl stop database -d orcl
# su - grid
# crs_stat -t -v
# crsctl stat res -t

	[oracle@rac-node1 ~]$ export ORACLE_SID=orcl1
	[oracle@rac-node1 ~]$ sqlplus / as sysdba
	SQL> shutdown immediate ;

	[oracle@rac-node2 ~]$ export ORACLE_SID=orcl2
	[oracle@rac-node2 ~]$ sqlplus / as sysdba
	SQL> shutdown immediate ;

启动到mount状态
[oracle@rac-node1 orcl]$ rman target /
RMAN> shutdown immediate ;
RMAN> startup mount ;

4、恢复参数文件spfile
RMAN> restore spfile to '+DATA/spfileorcl.ora' from '/backup/rman/orcl/orcl_spfile_5htiajdl_1_1_20181115.bak';
RMAN> shutdown immediate ;
RMAN> exit ;

[oracle@rac-node1 orcl]$ sqlplus / as sysdba

SQL> startup force nomount ;

ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA' SID='*';
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=100G SID='*';
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FRA' SID='*';
ALTER SYSTEM SET CONTROL_FILES='+DATA','+FRA' SCOPE=SPFILE SID='*';

5、恢复控制文件controlfile
[oracle@rac-node1 orcl]$ rman target /

RMAN> startup force nomount ;

RMAN> restore controlfile from  '/backup/rman/orcl/ctl_file_5gtiajdi_1_1_20181115.bak' ;

RMAN> alter database mount ;

6、恢复数据文件datafile
RMAN> catalog start with '/backup/rman/orcl/' ;
输入:yes

run {
allocate channel c1 device type DISK;
allocate channel c2 device type DISK;
allocate channel c3 device type DISK;
allocate channel c4 device type DISK;
restore database;
switch datafile all;
switch tempfile all;
recover database delete archivelog;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 11/23/2018 04:04:48
RMAN-06054: media recovery requesting unknown archived log for thread 2 with sequence 1939 and starting SCN of 105650523

再执行下run
run {
allocate channel c1 device type DISK;
allocate channel c2 device type DISK;
allocate channel c3 device type DISK;
allocate channel c4 device type DISK;
set until sequence 1939 thread 2; # 问题在这
restore database;
switch datafile all;
switch tempfile all;
recover database delete archivelog;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

7、重命名redolog文件
SQL> set linesize 200 ;
SQL> select  'alter database rename file '''||MEMBER||''' to '''||'+data/orcl/onlinelog/'||regexp_substr(MEMBER,'[^\/]+',1,4)||''';' from v$logfile;

'ALTERDATABASERENAMEFILE'''||MEMBER||'''TO'''||'+DATA/orcl/ONLINELOG/'||REGEXP_SUBSTR(MEMBER,'[^\/]+',1,4)||''';'
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter database rename file '+DATADG/orcl/onlinelog/group_1.261.967309327' to '+data/orcl/onlinelog/group_1.261.967309327';
alter database rename file '+FRADG/orcl/onlinelog/group_1.257.967309327' to '+data/orcl/onlinelog/group_1.257.967309327';
alter database rename file '+DATADG/orcl/onlinelog/group_2.265.967309327' to '+data/orcl/onlinelog/group_2.265.967309327';
alter database rename file '+FRADG/orcl/onlinelog/group_2.259.967309329' to '+data/orcl/onlinelog/group_2.259.967309329';
alter database rename file '+DATADG/orcl/onlinelog/group_3.262.967309409' to '+data/orcl/onlinelog/group_3.262.967309409';
alter database rename file '+FRADG/orcl/onlinelog/group_3.258.967309409' to '+data/orcl/onlinelog/group_3.258.967309409';
alter database rename file '+DATADG/orcl/onlinelog/group_4.266.967310049' to '+data/orcl/onlinelog/group_4.266.967310049';
alter database rename file '+FRADG/orcl/onlinelog/group_4.260.967310049' to '+data/orcl/onlinelog/group_4.260.967310049';
alter database rename file '+DATADG/orcl/onlinelog/group_5.268.967308939' to '+data/orcl/onlinelog/group_5.268.967308939';
alter database rename file '+FRADG/orcl/onlinelog/group_5.261.967308939' to '+data/orcl/onlinelog/group_5.261.967308939';
alter database rename file '+DATADG/orcl/onlinelog/group_6.269.967308939' to '+data/orcl/onlinelog/group_6.269.967308939';

'ALTERDATABASERENAMEFILE'''||MEMBER||'''TO'''||'+DATA/orcl/ONLINELOG/'||REGEXP_SUBSTR(MEMBER,'[^\/]+',1,4)||''';'
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter database rename file '+FRADG/orcl/onlinelog/group_6.262.967308939' to '+data/orcl/onlinelog/group_6.262.967308939';
alter database rename file '+DATADG/orcl/onlinelog/group_7.270.967308941' to '+data/orcl/onlinelog/group_7.270.967308941';
alter database rename file '+FRADG/orcl/onlinelog/group_7.263.967308941' to '+data/orcl/onlinelog/group_7.263.967308941';
alter database rename file '+DATADG/orcl/onlinelog/group_8.271.967309023' to '+data/orcl/onlinelog/group_8.271.967309023';
alter database rename file '+FRADG/orcl/onlinelog/group_8.264.967309023' to '+data/orcl/onlinelog/group_8.264.967309023';
alter database rename file '+DATADG/orcl/onlinelog/group_9.272.967309023' to '+data/orcl/onlinelog/group_9.272.967309023';
alter database rename file '+FRADG/orcl/onlinelog/group_9.265.967309025' to '+data/orcl/onlinelog/group_9.265.967309025';
alter database rename file '+DATADG/orcl/onlinelog/group_10.273.967309025' to '+data/orcl/onlinelog/group_10.273.967309025';
alter database rename file '+FRADG/orcl/onlinelog/group_10.266.967309025' to '+data/orcl/onlinelog/group_10.266.967309025';

20 rows selected.
执行上面的输出sql

alter database clear logfile group 1;
alter database clear logfile group 2;
alter database clear logfile group 3;
alter database clear logfile group 4;
alter database clear logfile group 5;
alter database clear logfile group 6;
alter database clear logfile group 7;
alter database clear logfile group 8;
alter database clear logfile group 9;
alter database clear logfile group 10;

SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING ; # 报错不管它

8、打开数据库
SQL> alter database open resetlogs ;

重启数据库
startup force ;

9、检查
检查参数文件spfile
SQL> show parameter spfile ;

检查控制文件controlfile
SQL> select NAME from v$controlfile ;

检查数据文件datafile
SQL> select NAME from v$datafile ;

检查日志文件logfile
SQL> select MEMBER from v$logfile ;

查看字符集
select userenv('LANGUAGE') FROM DUAL ;

集群实例状态
select instance_name ,status from gv$instance ;

检查集群状态
直接停掉# srvctl status database -d orcl
		# srvctl status instance -d orcl -i orcl1
		# srvctl status instance -d orcl -i orcl2
		# srvctl start database -d orcl
		# srvctl status database -d orcl

查看# su - grid
    # crs_stat -t -v
    # crsctl stat res -t