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