Oracle 11.2.0.4 从单实例,使用RMAN 异机恢复到RAC
注意:
(1)迁移的2个db版本版本要一致。包括小版本。
(2)RMAN 异机恢复的时候,db_name必须相同。 如果说要想改成其他的实例名,可以在恢复成功后,用nid 命令修改。 实例名的信息会记录到控制文件里,所以如果在恢复的时候,如果实例名不一致,恢复的时候会报错。
--源库信息:平台:Linux 6.5,单实例, 版本如下:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
--目标库:11.2.0.4 RAC,平台:Linux 6.5,版本如下:
SQL> set lin 160 pages 200
SQL> select * from gv$version;
INST_ID BANNER
---------- --------------------------------------------------------------------------------
1 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
1 PL/SQL Release 11.2.0.4.0 - Production
1 CORE 11.2.0.4.0 Production
1 TNS for Linux: Version 11.2.0.4.0 - Production
1 NLSRTL Version 11.2.0.4.0 - Production
2 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2 PL/SQL Release 11.2.0.4.0 - Production
2 CORE 11.2.0.4.0 Production
2 TNS for Linux: Version 11.2.0.4.0 - Production
2 NLSRTL Version 11.2.0.4.0 - Production
10 rows selected.
我的RAC 环境上已经存在了实例orcl,而我们源库的实例名是:neal。所以恢复完成后会有2个实例。
[root@rac1 ~]# crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.FRA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.LISTENER.lsnr
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.OCRVOTING.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.asm
ONLINE ONLINE rac1 Started
ONLINE ONLINE rac2 Started
ora.gsd
OFFLINE OFFLINE rac1
OFFLINE OFFLINE rac2
ora.net1.network
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.ons
ONLINE ONLINE rac1
ONLINE ONLINE rac2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1
ora.cvu
1 ONLINE ONLINE rac1
ora.oc4j
1 ONLINE ONLINE rac1
ora.orcl.db
1 ONLINE ONLINE rac1 Open
2 ONLINE ONLINE rac2 Open
ora.rac1.vip
1 ONLINE ONLINE rac1
ora.rac2.vip
1 ONLINE ONLINE rac2
ora.scan1.vip
1 ONLINE ONLINE rac1
二. 迁移步骤说明
2.1 在源库用RMAN进行全备
源库实例名:neal,为了确认迁移成功,我们现在源库上创建一个表test,并插入几条记录。
SQL> select * from test;
A
----------
1
2
3
4
备份之后的信息:
RMAN> list backup summary;
using target database control file instead of recovery catalog
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
3 B 0 A DISK 12-JUL-16 1 1 NO NEAL_LV0
5 B 0 A DISK 12-JUL-16 1 1 NO NEAL_LV0
6 B 0 A DISK 12-JUL-16 1 1 NO NEAL_LV0
7 B 0 A DISK 12-JUL-16 1 1 NO NEAL_LV0
9 B A A DISK 12-JUL-16 1 1 NO ARC_BAK
10 B A A DISK 12-JUL-16 1 1 NO ARC_BAK
11 B F A DISK 12-JUL-16 1 1 NO CTLFILE_BAK
12 B F A DISK 12-JUL-16 1 1 NO SPFILE_BAK
2.2 将备份文件SCP 到RAC 节点1的相同位置。
当然也可以copy到不同位置,但那样就需要注册一下,我这里copy到相同的位置():
[oracle@centos backup]$ scp /home/oracle/backup/* 192.168.8.221:~/backup/
oracle@192.168.8.221's password:
neal_arch_0drah3bo_1_1_20160712 100% 4358KB 4.3MB/s 00:00
neal_arch_0erah3bo_1_1_20160712 100% 2560 2.5KB/s 00:00
neal_ctlfile_0frah3bq_1_1_20160712 100% 9568KB 9.3MB/s 00:00
neal_lv0_07rah391_1_1_20160712 100% 634MB 25.4MB/s 00:25
neal_lv0_08rah391_1_1_20160712 100% 375MB 9.9MB/s 00:38
neal_lv0_09rah391_1_1_20160712 100% 2912KB 2.8MB/s 00:00
neal_lv0_0brah399_1_1_20160712 100% 1344KB 1.3MB/s 00:00
neal_spfile_0grah3bs_1_1_20160712 100% 96KB 96.0KB/s 00:00
2.3 还原并修改初始化文件
2.3.1 还原spfile 到pfile
[oracle@rac1 ~]$ export ORACLE_SID=neal1
[oracle@rac1 ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jul 13 07:05:47 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)
RMAN> startup nomount
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/11.2.0/db_1/dbs/initneal1.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 281019272 bytes
Database Buffers 780140544 bytes
Redo Buffers 5517312 bytes
RMAN> restore spfile to pfile '/u01/app/oracle/11.2.0/db_1/dbs/initneal1.ora' from '/home/oracle/backup/neal_spfile_0grah3bs_1_1_20160712';
Starting restore at 2016/07/13 07:07:52
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=25 device type=DISK
channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/oracle/backup/neal_spfile_0grah3bs_1_1_20160712
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 2016/07/13 07:07:57
2.3.2 查看ASM 实例的相关目录信息
[grid@rac1 ~]$ asmcmd lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 10240 6798 0 6798 0 N DATA/
MOUNTED EXTERN N 512 4096 1048576 10240 9152 0 9152 0 N FRA/
MOUNTED NORMAL N 512 4096 1048576 3072 2146 1024 561 0 Y OCRVOTING/
2.3.3 修改初始化参数
注意事项:
(1)RMAN 异机恢复的db_name 必须和备份的一致,如果说想改成其他名称,可以等还原之后,在用nid 命令修改。
(2)控制文件需要指定到共享设备上
(3)检查audit_file_dest,background_dump_dest, core_dump_dest,log_archive_dest_1,user_dump_dest等参数的位置。 如果2个节点和共享位置没有对应的目录,先把目录建好。
--根据initneal1.ora 文件中的参数创建节点的目录,在所有节点所有检查:
[oracle@rac1 ~]$ mkdir -p /u01/app/oracle/admin/neal/adump
[oracle@rac2 ~]$ mkdir -p /u01/app/oracle/admin/neal/adump
--最终我们修改之后的pfile 文件如下:
[oracle@rac1 dbs]$ cat initneal1.ora
*.audit_file_dest='/u01/app/oracle/admin/neal/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='+DATA','+FRA'
*.db_block_size=8192
*.db_domain=''
*.db_name='neal'
*.db_recovery_file_dest='+FRA'
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=nealXDB)'
*.memory_target=524288000
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_management='AUTO'
*.cluster_database_instances=2
*.cluster_database=false
orcl2.thread=2
orcl1.thread=1
orcl2.undo_tablespace='UNDOTBS2'
orcl1.undo_tablespace='UNDOTBS1'
orcl2.instance_number=2
orcl1.instance_number=1
具体内存根据实际情况进行调整。
*.cluster_database=false
这里要先设置为flase,才能进行RMAN 恢复操作。恢复完成在改成true。
2.3.4 用修改的pfile 来创建spfile,注意放在共享设备上
--先创建这个目录结构:
ASMCMD> pwd
+data/NEAL/PARAMETERFILE
[oracle@rac1 ~]$ sqlplus / as sysdba
SQL> create spfile='+DATA/NEAL/PARAMETERFILE/spfileneal.ora' from pfile='/u01/app/oracle/11.2.0/db_1/dbs/initneal1.ora';
File created.
--验证:
ASMCMD> pwd
+data/NEAL/PARAMETERFILE
ASMCMD> ls
spfileneal.ora
在所有节点上,修改pfile内容,将其指向共享设备上的spfile:
--节点1:
[oracle@rac1 ~]# echo "SPFILE='+DATA/NEAL/PARAMETERFILE/spfileneal.ora'" > /u01/app/oracle/11.2.0/db_1/dbs/initneal1.ora
--节点2:
[oracle@rac2 dbs]$ echo "SPFILE='+DATA/NEAL/PARAMETERFILE/spfileneal.ora'" > /u01/app/oracle/11.2.0/db_1/dbs/initneal2.ora
2.4 创建口令文件
在所有节点执行,注意密码要和原库一样:
[oracle@rac1 ~]# orapwd file=?/dbs/orapwneal1 password=oracle
[oracle@rac2 ~]$ orapwd file=?/dbs/orapwneal2 password=oracle
2.5 还原控制文件
在其中一个节点上执行。
2.5.1 用spfile,将DB 启动到nomount 状态
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
2.5.2 RMAN 执行对控制文件的恢复
RMAN> restore controlfile from '/home/oracle/backup/neal_ctlfile_0frah3bq_1_1_20160712';
Starting restore at 2016/07/13 07:19:49
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=+DATA/neal/controlfile/current.269.917075991
output file name=+FRA/neal/controlfile/current.285.917075991
Finished restore at 2016/07/13 07:19:51
--这个位置是我们在spfile里指定的。
2.6 restore数据库
在其中一个节点执行。 我这里在节点1操作。 个人习惯,相关操作都在节点1进行。
2.6.1 将数据库启动到MOUNT状态
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
2.6.2 查看源库数据文件存储位置信息
注意一点,我们单实例和RAC 实例存储数据文件的位置不同,如果我们使用rman 的duplicate,那么我们使用log_file_name_convert 和 db_file_name_convert来进行转换,
在这个实验中,我们使用的是RMAN的异机恢复,所以只能在restore的时候用set newname来进行转换。
在源库执行如下查询:
SQL> set linesize 80
SQL> set lin 160 pages 200
SQL> col file_name for a50
SQL> select 'set newname for datafile '||file_id||' to '''||'+DATA'||''';' from dba_data_files;
'SETNEWNAMEFORDATAFILE'||FILE_ID||'TO'''||'+DATA'||''';'
-----------------------------------------------------------------------------
set newname for datafile 4 to '+DATA';
set newname for datafile 3 to '+DATA';
set newname for datafile 2 to '+DATA';
set newname for datafile 1 to '+DATA';
SQL> select 'set newname for tempfile '||file_id||' to '''||'+DATA'||''';' from dba_temp_files;
'SETNEWNAMEFORTEMPFILE'||FILE_ID||'TO'''||'+DATA'||''';'
-----------------------------------------------------------------------------
set newname for tempfile 1 to '+DATA';
2.6.3 在RAC上restore 数据文件
脚本:
run {
set newname for datafile 4 to '+DATA';
set newname for datafile 3 to '+DATA';
set newname for datafile 2 to '+DATA';
set newname for datafile 1 to '+DATA';
set newname for tempfile 1 to '+DATA';
restore database;
switch datafile all;
switch tempfile all;
}
注意,对switch的说明:
对于nocatalog 模式下,rman备份的信息是保存在控制文件里的,包括文件的路径信息。 这里的switch的作用,就是更新控制文件里的信息。
restore 的时候不会对temp 表空间进行restore。所以等restore 之后,我们需要手工创建temp表空间。
不过在这个测试里,我们还是对tempfile 进行了指定。 但是这个操作只更新控制文件,不恢复数据文件。
RMAN> run {
set newname for datafile 4 to '+DATA';
set newname for datafile 3 to '+DATA';
set newname for datafile 2 to '+DATA';
set newname for datafile 1 to '+DATA';
set newname for tempfile 1 to '+DATA';
restore database;
switch datafile all;
3> switch tempfile all;
4> 5> 6> 7> 8> 9> 10> }
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 2016/07/13 07:22:44
Starting implicit crosscheck backup at 2016/07/13 07:22:44
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 device type=DISK
Crosschecked 10 objects
Finished implicit crosscheck backup at 2016/07/13 07:22:46
Starting implicit crosscheck copy at 2016/07/13 07:22:46
using channel ORA_DISK_1
Finished implicit crosscheck copy at 2016/07/13 07:22:46
searching for all files in the recovery area
cataloging files...
no files cataloged
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to +DATA
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/neal_lv0_09rah391_1_1_20160712
channel ORA_DISK_1: piece handle=/home/oracle/backup/neal_lv0_09rah391_1_1_20160712 tag=NEAL_LV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00004 to +DATA
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/neal_lv0_0brah399_1_1_20160712
channel ORA_DISK_1: piece handle=/home/oracle/backup/neal_lv0_0brah399_1_1_20160712 tag=NEAL_LV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to +DATA
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/neal_lv0_08rah391_1_1_20160712
channel ORA_DISK_1: piece handle=/home/oracle/backup/neal_lv0_08rah391_1_1_20160712 tag=NEAL_LV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:15
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to +DATA
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/neal_lv0_07rah391_1_1_20160712
channel ORA_DISK_1: piece handle=/home/oracle/backup/neal_lv0_07rah391_1_1_20160712 tag=NEAL_LV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:55
Finished restore at 2016/07/13 07:25:03
datafile 1 switched to datafile copy
input datafile copy RECID=5 STAMP=917076307 file name=+DATA/neal/datafile/system.273.917076249
datafile 2 switched to datafile copy
input datafile copy RECID=6 STAMP=917076307 file name=+DATA/neal/datafile/sysaux.272.917076175
datafile 3 switched to datafile copy
input datafile copy RECID=7 STAMP=917076309 file name=+DATA/neal/datafile/undotbs1.270.917076169
datafile 4 switched to datafile copy
input datafile copy RECID=8 STAMP=917076309 file name=+DATA/neal/datafile/users.271.917076171
renamed tempfile 1 to +DATA in control file
2.7 recover 数据库
在执行restore的节点执行,因为备份文件在该节点上。
RMAN> recover database;
Starting recover at 2016/07/13 07:25:28
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=6
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/neal_arch_0drah3bo_1_1_20160712
channel ORA_DISK_1: piece handle=/home/oracle/backup/neal_arch_0drah3bo_1_1_20160712 tag=ARC_BAK
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
archived log file name=+FRA/neal/archivelog/2016_07_13/thread_1_seq_6.286.917076331 thread=1 sequence=6
channel default: deleting archived log(s)
archived log file name=+FRA/neal/archivelog/2016_07_13/thread_1_seq_6.286.917076331 RECID=3 STAMP=917076331
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=7
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/neal_arch_0erah3bo_1_1_20160712
channel ORA_DISK_1: piece handle=/home/oracle/backup/neal_arch_0erah3bo_1_1_20160712 tag=ARC_BAK
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=+FRA/neal/archivelog/2016_07_13/thread_1_seq_7.286.917076333 thread=1 sequence=7
channel default: deleting archived log(s)
archived log file name=+FRA/neal/archivelog/2016_07_13/thread_1_seq_7.286.917076333 RECID=4 STAMP=917076332
unable to find archived log
archived log thread=1 sequence=8
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/13/2016 07:25:40
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 8 and starting SCN of 1007315
这里是提醒恢复到一个未知的scn号。 因为这部分SCN 还在online redo里,可以在alter database mount之后,通过set until scn或者set until time命令设置恢复到的scn号或时间,
或者把源库的这些文件在copy过来,在应用一下。就可以避免这个错误。
2.8 最重要一步:将源库剩下的归档和online redo copy过来进行recover
在数据量大的时候,用RMAN进行数据迁移,能够降低切换的时间。即先用之前的备份进行恢复,然后把剩下的归档copy过来,进行recover。
这里对业务的影响,仅仅是最后小部分归档的处理,数据库可能很大,但最后决定我们停机时间的,就是最后一部分归档的处理。
2.8.1 在源库创建一张表,然后把数据库实例停掉
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> create table sun(id number,name varchar2(100));
Table created.
SQL> insert into sun values(1,'sun');
1 row created.
SQL> commit;
Commit complete.
--关闭数据库,保证数据一致性:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2.8.2 将剩下的归档和online redo 全部copy到RAC 的备份目录下
[oracle@centos 2016_07_12]$ scp /u01/oracle/fast_recovery_area/NEAL/archivelog/2016_07_12/* 192.168.8.221:~/backup/
oracle@192.168.8.221's password:
o1_mf_1_8_cr9vhr6q_.arc 100% 12MB 11.7MB/s 00:00
[oracle@centos 2016_07_13]$ scp /u01/oracle/fast_recovery_area/NEAL/archivelog/2016_07_13/* 192.168.8.221:~/backup/
oracle@192.168.8.221's password:
o1_mf_1_10_crc2ss6g_.arc 100% 109KB 109.0KB/s 00:00
o1_mf_1_11_crc2ssy6_.arc 100% 1024 1.0KB/s 00:00
o1_mf_1_9_crc2h7j2_.arc 100% 55KB 55.0KB/s 00:00
[oracle@centos neal]$ scp /u01/oracle/oradata/neal/redo0*.log 192.168.8.221:~/backup/
oracle@192.168.8.221's password:
redo01.log 100% 50MB 16.7MB/s 00:03
redo02.log 100% 50MB 50.0MB/s 00:01
redo03.log 100% 50MB 12.5MB/s 00:04
2.8.3重新注册归档文件和online redo log,并同步数据
2.8.3.1 注册归档文件
如果有归档,我们需要从单机复制到RAC 节点上,但RAC节点的数据库并没有相关记录。所以我们需要先将归档文件注册到控制文件里。 然后才能使用。
RMAN> catalog archivelog '/home/oracle/backup/o1_mf_1_8_cr9vhr6q_.arc','/home/oracle/backup/o1_mf_1_10_crc2ss6g_.arc','/home/oracle/backup/o1_mf_1_11_crc2ssy6_.arc','/home/oracle/backup/o1_mf_1_9_crc2h7j2_.arc';
cataloged archived log
archived log file name=/home/oracle/backup/o1_mf_1_8_cr9vhr6q_.arc RECID=8 STAMP=917077069
cataloged archived log
archived log file name=/home/oracle/backup/o1_mf_1_10_crc2ss6g_.arc RECID=5 STAMP=917076646
cataloged archived log
archived log file name=/home/oracle/backup/o1_mf_1_11_crc2ssy6_.arc RECID=6 STAMP=917076646
cataloged archived log
archived log file name=/home/oracle/backup/o1_mf_1_9_crc2h7j2_.arc RECID=7 STAMP=917076646
2.8.3.2 移动online redo log到对应位置
--现在单实例进行查询:
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/oracle/oradata/neal/redo03.log
/u01/oracle/oradata/neal/redo02.log
/u01/oracle/oradata/neal/redo01.log
在RAC上把online redo log日志放入到对应的位置(目录位置必须还原来单实例目录一致):
[oracle@rac1 ~]$ mkdir -p /u01/oracle/oradata/neal/
[oracle@rac1 ~]$ mv /home/oracle/backup/redo*.log /u01/oracle/oradata/neal/
--再次执行recover 操作:
RMAN> recover database;
Starting recover at 2016/07/13 07:37:50
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 8 is already on disk as file /home/oracle/backup/o1_mf_1_8_cr9vhr6q_.arc
archived log for thread 1 with sequence 9 is already on disk as file /home/oracle/backup/o1_mf_1_9_crc2h7j2_.arc
archived log for thread 1 with sequence 10 is already on disk as file /home/oracle/backup/o1_mf_1_10_crc2ss6g_.arc
archived log for thread 1 with sequence 11 is already on disk as file /home/oracle/backup/o1_mf_1_11_crc2ssy6_.arc
archived log file name=/home/oracle/backup/o1_mf_1_8_cr9vhr6q_.arc thread=1 sequence=8
archived log file name=/home/oracle/backup/o1_mf_1_9_crc2h7j2_.arc thread=1 sequence=9
archived log file name=/home/oracle/backup/o1_mf_1_10_crc2ss6g_.arc thread=1 sequence=10
archived log file name=/home/oracle/backup/o1_mf_1_11_crc2ssy6_.arc thread=1 sequence=11
archived log for thread 1 with sequence 12 is already on disk as file /u01/oracle/oradata/neal/redo03.log
archived log file name=/u01/oracle/oradata/neal/redo03.log thread=1 sequence=12
media recovery complete, elapsed time: 00:00:00
Finished recover at 2016/07/13 07:44:27
--注意:这次我们是第二次进行recover database,这里会我们copy过来的日志全部应用了,并且,注意这里是完全恢复,也就说这里没有数据丢失,我们不需要用open resetlogs来打开数据库。
--重置归档位置:
[oracle@rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 13 07:45:02 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> alter system set log_archive_dest_1='LOCATION=+FRA' SID='*';
System altered.
2.9 处理online redo
--原来的redo存放位置:
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -----------------------------------
3 ONLINE /u01/oracle/oradata/neal/redo03.log
2 ONLINE /u01/oracle/oradata/neal/redo02.log
1 ONLINE /u01/oracle/oradata/neal/redo01.log
RAC的redo是需要存放在共享设备上的,所以我们这里需要进行一些转换操作。
SQL> alter database rename file '/u01/oracle/oradata/neal/redo01.log' to '+DATA';
Database altered.
SQL> alter database rename file '/u01/oracle/oradata/neal/redo02.log' to '+DATA';
Database altered.
SQL> alter database rename file '/u01/oracle/oradata/neal/redo03.log' to '+DATA';
Database altered.
我们这里只是更改了online redo的记录,实际上文件并没有生成,当我们open db的时候,会自动创建online redo log。
2.10 open resetlogs 打开DB
虽然我们前面做的是完全恢复,确保没有数据丢失, 但我们的需要用resetlogs来打开数据库,来重建我们的online redo log。
SQL> alter database open resetlogs;
Database altered.
2.11 检查并修改几个初始化参数
SQL> select * from v$option where parameter = 'Real Application Clusters';
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
Real Application Clusters
TRUE
SQL> show parameter cluster
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean FALSE
cluster_database_instances integer 1
cluster_interconnects string
SQL> show parameter thread
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
parallel_threads_per_cpu integer 2
thread integer 0
SQL> show parameter instance_number
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_number integer 0
SQL> alter system set cluster_database=true scope=spfile sid='*';
System altered.
SQL> alter system set cluster_database_instances=2 scope=spfile sid='*';
System altered.
SQL> alter system set instance_number=1 scope=spfile sid='neal1';
System altered.
SQL> alter system set instance_number=2 scope=spfile sid='neal2';
System altered.
SQL> alter system set thread=1 scope=spfile sid='neal1';
System altered.
SQL> alter system set thread=2 scope=spfile sid='neal2';
System altered.
2.12 创建节点2的undo 表空间
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
SQL> create undo tablespace UNDOTBS2 datafile '+DATA' size 100m;
Tablespace created.
SQL> alter system set undo_tablespace='UNDOTBS2' scope=spfile sid='neal2';
System altered.
2.13 添加rac2 节点的redo 文件
rac 的redo 是接其他节点来的,我们之前的rac1上已经有3组,所以我们这里从4开始,在添加2组给rac2,使用thread 2.
SQL> alter database add logfile thread 2 group 4 '+DATA' size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 5 '+DATA' size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 6 '+DATA' size 50m;
Database altered.
SQL> alter database enable thread 2;
Database altered.
2.14 将其他信息注册到CRS里
--一定要用oracle 来执行
[oracle@rac1 ~]$ srvctl add database -d neal -o $ORACLE_HOME -p +DATA/NEAL/PARAMETERFILE/spfileneal.ora
[oracle@rac1 ~]$ srvctl add instance -d neal -i neal1 -n rac1
[oracle@rac1 ~]$ srvctl add instance -d neal -i neal2 -n rac2
2.15 重启节点1和节点2 上的实例,使相关参数生效
我们之前都只启动了一个实例1,所以这里重启实例1,在启动实例2
[oracle@rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 13 07:52:23 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 521936896 bytes
Fixed Size 2254824 bytes
Variable Size 419432472 bytes
Database Buffers 96468992 bytes
Redo Buffers 3780608 bytes
Database mounted.
Database opened.
[oracle@rac2 dbs]$ export ORACLE_SID=neal2
[oracle@rac2 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 13 07:53:10 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 521936896 bytes
Fixed Size 2254824 bytes
Variable Size 423626776 bytes
Database Buffers 92274688 bytes
Redo Buffers 3780608 bytes
Database mounted.
Database opened.
2.16 执行catclust.sql脚本来创建相关视图
执行$ORACLE_HOME/rdbms/admin/catclust.sql脚本,创建cluster database的相关视图。
SQL>@$ORACLE_HOME/rdbms/admin/catclust.sql
2.17 重建Temp 表空间
因为在restore 的时候不会对temp 表空间进行restore。所以等restore 之后,我们需要手工创建temp表空间。
不过在11g 的ASM ,查到了这个文件。
[grid@rac1 ~]$ asmcmd lsof |grep temp
neal neal1 +data/neal/tempfile/temp.274.917077561
orcl orcl1 +data/orcl/tempfile/temp.263.917074137
2.18 添加集群的监听
用grid用户连接,在其中一个节点上用netca 配置一下。
2.19 验证
[root@rac1 ~]# crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.FRA.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.LISTENER.lsnr
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.OCRVOTING.dg
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.asm
ONLINE ONLINE rac1 Started
ONLINE ONLINE rac2 Started
ora.gsd
OFFLINE OFFLINE rac1
OFFLINE OFFLINE rac2
ora.net1.network
ONLINE ONLINE rac1
ONLINE ONLINE rac2
ora.ons
ONLINE ONLINE rac1
ONLINE ONLINE rac2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE rac1
ora.cvu
1 ONLINE ONLINE rac1
ora.neal.db
1 ONLINE ONLINE rac1 Open
2 ONLINE ONLINE rac2 Open
ora.oc4j
1 ONLINE ONLINE rac1
ora.orcl.db
1 ONLINE ONLINE rac1 Open
2 ONLINE ONLINE rac2 Open
ora.rac1.vip
1 ONLINE ONLINE rac1
ora.rac2.vip
1 ONLINE ONLINE rac2
ora.scan1.vip
1 ONLINE ONLINE rac1
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29812844/viewspace-2121998/ ,如需转载,请注明出处,否则将追究法律责任。