Oracle Linux环境RAC迁移到异机RAC

版权声明:本文为作者原创,转载请标明出处! https://blog.csdn.net/kiral07/article/details/87253734

Oracle Linux环境RAC迁移到异机RAC

RMAN duplicate备份集方式

1.1 迁移环境
源数据库

操作系统:CentsOS 7.2
Oracle数据库版本:11.2.0.4 RAC
ORACLE_SID:ORCLDB
DB_NAME:ORCLDB

目标数据库

操作系统:CentOS 7.5
Oracle数据库版本:11.2.0.4 RAC
即将创建ORACLE_SID:ORCLDB
即将创建DB_NAME:ORCLDB

1.2 迁移准备
1、在迁移前需要在rac源数据库做好RMAN全备,以及归档日志备份。在新RAC环境还原时需要考虑pfile中控制文件的路径。
2、备注此案例中新rac环境已存在实例orcl,迁移完毕之后可将此实例从srvctl中删除

1.3 迁移步骤
1.3.1 源服务器做RMAN全备

rman target /

run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
backup as compressed backupset database format '/u01/rman/full_%d_%U.bak';
backup as compressed backupset archivelog all format '/u01/rman/arch_%d_%U.bak';
backup current controlfile format '/u01/rman/ctl_%d_%U.bak';
release channel c1;
release channel c2;
release channel c3;
}

1.3.2 拷贝备份到新环境RAC数据库服务器
在rac新环境中建立rman的备份目录“/u01/rman"

scp /u01/rman/* oracle@172.16.4.41:/u01/rman

1.3.3 在新rac环境中关闭rac数据库

 srvctl stop database -d orcl

1.3.4 编辑新rac环境参数文件

*.audit_trail='none'
*.cluster_database=FALSE
*.compatible='11.2.0.4.0'
*.control_files='+ORADATA/orcldb/controlfile/control1.ctl'
*.db_block_size=8192
*.db_create_file_dest='+ORADATA'
*.db_domain=''
*.db_name='orcldb'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.memory_target=830472192
*.open_cursors=300
*.processes=150
*.remote_listener='rac-scan:1521'
*.remote_login_passwordfile='exclusive'
undo_tablespace='UNDOTBS1'
*.sessions=170
*.LOG_ARCHIVE_DEST_1='LOCATION=+arch'
db_file_name_convert='+DATA/orcldb/datafile/','+ORADATA/orcldb/datafile/','+DATA/orcldb/tempfile/temp.267.980502675','+ORADATA/o
rcldb/tempfile/temp'
log_file_name_convert='+DATA/orcldb/onlinelog/group_1.270.983698797','+ORADATA/orcldb/onlinelog/group_1','+DATA/orcldb/onlinelog
/group_2.265.983698797','+ORADATA/orcldb/onlinelog/group_2','+DATA/orcldb/onlinelog/group_3.263.983698797','+ORADATA/orcldb/onli
nelog/group_3','+DATA/orcldb/onlinelog/group_4.262.983698797','+ORADATA/orcldb/onlinelog/group_4'


备注:
1、db_file_name_convert源数据库与新数据的数据文件、临时文件
2、log_file_name_convert日志组需要对应

1.3.5 新环境rac数据库启动到nomount

sqlplus / as sysdba
startup nomount;

1.3.6 通过RMAN辅助实例duplicate恢复

[oracle@rac1:/home/oracle]$rman auxiliary /   

connected to auxiliary database: ORCLDB (not mounted)

RMAN> duplicate database to orcldb backup location '/u01/rman/';

输出过程:

Starting Duplicate Db at 2018-12-13 18:58:50

contents of Memory Script:
{
   sql clone "create spfile from memory";
}
executing Memory Script

sql statement: create spfile from memory

contents of Memory Script:
{
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     826753024 bytes

Fixed Size                     2257760 bytes
Variable Size                541068448 bytes
Database Buffers             281018368 bytes
Redo Buffers                   2408448 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name = 
 ''ORCLDB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name = 
 ''ORCLDB'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile from  '/u01/rman/ctl.bak';
   alter clone database mount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''ORCLDB'' comment= ''Modified by RMAN duplicate'' scope=spfile

sql statement: alter system set  db_unique_name =  ''ORCLDB'' comment= ''Modified by RMAN duplicate'' scope=spfile

Oracle instance shut down

Oracle instance started

Total System Global Area     826753024 bytes

Fixed Size                     2257760 bytes
Variable Size                541068448 bytes
Database Buffers             281018368 bytes
Redo Buffers                   2408448 bytes

Starting restore at 2018-12-13 18:59:33
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=29 device type=DISK

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
output file name=+ORADATA/orcldb/controlfile/control1.ctl
Finished restore at 2018-12-13 18:59:37

database mounted
released channel: ORA_AUX_DISK_1
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=29 device type=DISK
RMAN-05529: WARNING: DB_FILE_NAME_CONVERT resulted in invalid ASM names; names changed to disk group only.

contents of Memory Script:
{
   set until scn  2054396;
   set newname for datafile  1 to 
 "+oradata";
   set newname for datafile  2 to 
 "+oradata";
   set newname for datafile  3 to 
 "+oradata";
   set newname for datafile  4 to 
 "+oradata";
   set newname for datafile  5 to 
 "+oradata";
   set newname for datafile  6 to 
 "+ORADATA/orcldb/datafile/admin.dbf";
   restore
   clone database
   ;
}
executing Memory Script

executing command: SET until clause

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

Starting restore at 2018-12-13 18:59:41
using channel ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to +oradata
channel ORA_AUX_DISK_1: restoring datafile 00005 to +oradata
channel ORA_AUX_DISK_1: reading from backup piece /u01/rman/full_ORCLDB_1ttklkgm_1_1.bak
channel ORA_AUX_DISK_1: piece handle=/u01/rman/full_ORCLDB_1ttklkgm_1_1.bak tag=TAG20181213T095950
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:35
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00002 to +oradata
channel ORA_AUX_DISK_1: restoring datafile 00006 to +ORADATA/orcldb/datafile/admin.dbf
channel ORA_AUX_DISK_1: reading from backup piece /u01/rman/full_ORCLDB_1utklkgn_1_1.bak
channel ORA_AUX_DISK_1: piece handle=/u01/rman/full_ORCLDB_1utklkgn_1_1.bak tag=TAG20181213T095950
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to +oradata
channel ORA_AUX_DISK_1: restoring datafile 00004 to +oradata
channel ORA_AUX_DISK_1: reading from backup piece /u01/rman/full_ORCLDB_1stklkgm_1_1.bak
channel ORA_AUX_DISK_1: piece handle=/u01/rman/full_ORCLDB_1stklkgm_1_1.bak tag=TAG20181213T095950
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:07
Finished restore at 2018-12-13 19:00:49

contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script

datafile 1 switched to datafile copy
input datafile copy RECID=7 STAMP=994791649 file name=+ORADATA/orcldb/datafile/system.278.994791583
datafile 2 switched to datafile copy
input datafile copy RECID=8 STAMP=994791649 file name=+ORADATA/orcldb/datafile/sysaux.280.994791617
datafile 3 switched to datafile copy
input datafile copy RECID=9 STAMP=994791649 file name=+ORADATA/orcldb/datafile/undotbs1.282.994791643
datafile 4 switched to datafile copy
input datafile copy RECID=10 STAMP=994791649 file name=+ORADATA/orcldb/datafile/undotbs2.283.994791643
datafile 5 switched to datafile copy
input datafile copy RECID=11 STAMP=994791649 file name=+ORADATA/orcldb/datafile/users.279.994791583
datafile 6 switched to datafile copy
input datafile copy RECID=12 STAMP=994791649 file name=+ORADATA/orcldb/datafile/admin.dbf

contents of Memory Script:
{
   set until scn  2054396;
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script

executing command: SET until clause

Starting recover at 2018-12-13 19:00:49
using channel ORA_AUX_DISK_1

starting media recovery

channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=2 sequence=20
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=29
channel ORA_AUX_DISK_1: reading from backup piece /u01/rman/arch_ORCLDB_2jtkll5e_1_1.bak
channel ORA_AUX_DISK_1: piece handle=/u01/rman/arch_ORCLDB_2jtkll5e_1_1.bak tag=TAG20181213T101021
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archived log file name=+ARCH/orcldb/archivelog/2018_12_13/thread_1_seq_29.392.994791651 thread=1 sequence=29
archived log file name=+ARCH/orcldb/archivelog/2018_12_13/thread_2_seq_20.391.994791651 thread=2 sequence=20
channel clone_default: deleting archived log(s)
archived log file name=+ARCH/orcldb/archivelog/2018_12_13/thread_1_seq_29.392.994791651 RECID=2 STAMP=994791654
channel clone_default: deleting archived log(s)
archived log file name=+ARCH/orcldb/archivelog/2018_12_13/thread_2_seq_20.391.994791651 RECID=1 STAMP=994791653
media recovery complete, elapsed time: 00:00:01
Finished recover at 2018-12-13 19:00:55
Oracle instance started

Total System Global Area     826753024 bytes

Fixed Size                     2257760 bytes
Variable Size                541068448 bytes
Database Buffers             281018368 bytes
Redo Buffers                   2408448 bytes

contents of Memory Script:
{
   sql clone "alter system set  db_name = 
 ''ORCLDB'' comment=
 ''Reset to original value by RMAN'' scope=spfile";
   sql clone "alter system reset  db_unique_name scope=spfile";
   shutdown clone immediate;
   startup clone nomount;
}
executing Memory Script

sql statement: alter system set  db_name =  ''ORCLDB'' comment= ''Reset to original value by RMAN'' scope=spfile

sql statement: alter system reset  db_unique_name scope=spfile

Oracle instance shut down

connected to auxiliary database (not started)
Oracle instance started

Total System Global Area     826753024 bytes

Fixed Size                     2257760 bytes
Variable Size                541068448 bytes
Database Buffers             281018368 bytes
Redo Buffers                   2408448 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCLDB" RESETLOGS ARCHIVELOG 
  MAXLOGFILES    192
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES    32
  MAXLOGHISTORY      654
 LOGFILE
  GROUP   1 ( '+ORADATA/orcldb/onlinelog/group_1' ) SIZE 50 M  REUSE,
  GROUP   2 ( '+ORADATA/orcldb/onlinelog/group_2' ) SIZE 50 M  REUSE
 DATAFILE
  '+ORADATA/orcldb/datafile/system.278.994791583'
 CHARACTER SET ZHS16GBK

sql statement: ALTER DATABASE ADD LOGFILE 
  
  INSTANCE 'i2' 
  GROUP   3 ( '+ORADATA/orcldb/onlinelog/group_3' ) SIZE 50 M  REUSE,
  GROUP   4 ( '+ORADATA/orcldb/onlinelog/group_4' ) SIZE 50 M  REUSE

contents of Memory Script:
{
   set newname for tempfile  1 to 
 "+ORADATA/orcldb/tempfile/temp";
   switch clone tempfile all;
   catalog clone datafilecopy  "+ORADATA/orcldb/datafile/sysaux.280.994791617", 
 "+ORADATA/orcldb/datafile/undotbs1.282.994791643", 
 "+ORADATA/orcldb/datafile/undotbs2.283.994791643", 
 "+ORADATA/orcldb/datafile/users.279.994791583", 
 "+ORADATA/orcldb/datafile/admin.dbf";
   switch clone datafile all;
}
executing Memory Script

executing command: SET NEWNAME

renamed tempfile 1 to +ORADATA/orcldb/tempfile/temp in control file

cataloged datafile copy
datafile copy file name=+ORADATA/orcldb/datafile/sysaux.280.994791617 RECID=1 STAMP=994791694
cataloged datafile copy
datafile copy file name=+ORADATA/orcldb/datafile/undotbs1.282.994791643 RECID=2 STAMP=994791694
cataloged datafile copy
datafile copy file name=+ORADATA/orcldb/datafile/undotbs2.283.994791643 RECID=3 STAMP=994791694
cataloged datafile copy
datafile copy file name=+ORADATA/orcldb/datafile/users.279.994791583 RECID=4 STAMP=994791694
cataloged datafile copy
datafile copy file name=+ORADATA/orcldb/datafile/admin.dbf RECID=5 STAMP=994791694

datafile 2 switched to datafile copy
input datafile copy RECID=1 STAMP=994791694 file name=+ORADATA/orcldb/datafile/sysaux.280.994791617
datafile 3 switched to datafile copy
input datafile copy RECID=2 STAMP=994791694 file name=+ORADATA/orcldb/datafile/undotbs1.282.994791643
datafile 4 switched to datafile copy
input datafile copy RECID=3 STAMP=994791694 file name=+ORADATA/orcldb/datafile/undotbs2.283.994791643
datafile 5 switched to datafile copy
input datafile copy RECID=4 STAMP=994791694 file name=+ORADATA/orcldb/datafile/users.279.994791583
datafile 6 switched to datafile copy
input datafile copy RECID=5 STAMP=994791694 file name=+ORADATA/orcldb/datafile/admin.dbf
Reenabling controlfile options for auxiliary database
Executing: alter database force logging

contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script

database opened
Finished Duplicate Db at 2018-12-13 19:01:47

1.3.7 查看rac环境的undo表空间
在节点一查看undo参数

show parameter undo_tablespace

在节点一执行命令使节点2使用undotbs2表空间

alter system set undo_tablespace='UNDOTBS2' scope=spfile sid='orcldb2';

1.3.8 查看rac环境的日志组是否正常

set line 150
col member for a40
col status for a5
col IS_RECOVERY_DEST_FILE for a3
col type for a6
col GROUP# for 99

select * from v$logfile;

GROUP# STATU TYPE   MEMBER                                   IS_
------ ----- ------ ---------------------------------------- ---
     2       ONLINE +ORADATA/orcldb/onlinelog/group_2        NO
     1       ONLINE +ORADATA/orcldb/onlinelog/group_1        NO
     3       ONLINE +ORADATA/orcldb/onlinelog/group_3        NO
     4       ONLINE +ORADATA/orcldb/onlinelog/group_4        NO
     

1.3.9 生成spfile文件

create spfile='+ORADATA/orcldb/spfileorcldb.ora' from pfile;

1.3.10 编辑节点1的pfile
pfile中内容指向共享存储的spfile

[oracle@rac1:/u01/app/oracle/product/11.2.0/db_1/dbs]$vi initorcldb1.ora

SPFILE='+ORADATA/orcldb/spfileorcldb.ora'

1.3.11 重启数据库

shutdown immediate;
startup;

1.3.12查看rac集群参数

SQL> show parameter cluster_database

NAME                                 TYPE       VALUE
------------------------------------ ---------- -----
cluster_database                     boolean    FALSE
cluster_database_instances           integer    1



SQL> show parameter instance_number

NAME                                 TYPE       VALUE
------------------------------------ ---------- -----
instance_number                      integer    0


SQL> show parameter thread
NAME                                 TYPE       VALUE
------------------------------------ ---------- -------
thread                               integer    0

1.3.13 恢复两个节点为集群环境

alter system set cluster_database=true scope=spfile sid='*';
alter system set cluster_database_instances=2 scope=spfile sid='*';
alter system set instance_number=1 scope=spfile sid='orcldb1';
alter system set instance_number=2 scope=spfile sid='orcldb2';
alter system set thread=1 scope=spfile sid='orcldb1';
alter system set thread=2 scope=spfile sid='orcldb2';

1.3.14 重启数据库

1.3.15 在节点2编辑pfile

[oracle@rac2:/u01/app/oracle/product/11.2.0/db_1/dbs]$vi initorcldb1.ora

SPFILE='+ORADATA/orcldb/spfileorcldb.ora'

1.3.16 启动节点2数据库

export ORACLE_SID=orcldb2
sqlplus / as sysdba
startup

检查两个节点数据库状态

1.3.17 调整rac环境资源管理

在集群资源管理中增加新数据库orcldb

[oracle@rac1:/home/oracle]$srvctl add database -d orcldb -o $ORACLE_HOME

在节点1增加实例名orcldb1

[oracle@rac1:/home/oracle]$srvctl add instance -d orcldb -i orcldb1 -n rac1

在节点2增加实例名orcldb2

[oracle@rac1:/home/oracle]$srvctl add instance -d orcldb -i orcldb2 -n rac2

删除集群中原先存在的实例orcl

[oracle@rac1:/home/oracle]$srvctl remove database -d orcl  
Remove the database orcl? (y/[n]) y

1.3.18 测试srvctl组件启动数据库

[oracle@rac1:/home/oracle]$srvctl start database -d orcldb

FAQ
在这里插入图片描述
在这里插入图片描述
RMAN> duplicate database to orcl backup location ‘/u01/rman/’ spfile set CLUSTER_DATABASE=FALSE;
文档 ID 1335479.1

猜你喜欢

转载自blog.csdn.net/kiral07/article/details/87253734
今日推荐