背景: 将单实例库的rman备份同步到RAC上
大致步骤:(因为任务比较急,笔记记得有点乱 还望海涵)
1
将rman备份集copy到rac机上,并放到'/home/oracle/backup'下
2
关闭所有rac节点,
Export ORACLE_SID=+ASM1
Asmcmd
>--进入数据文件路径
Rm *
同时删除controlfile
3
恢复控制文件
注意事项:restore之前 需要检查一下现有的rman备份,
Crosscheck backup;
Delete expired backup;
[oracle@racdg1 backup]$ rman target /
Recovery Manager: Release 10.2.0.5.0 - Production on Fri Nov 12 10:07:36 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database (not started)
RMAN> startup nomount;
Oracle instance started
Total System Global Area 68719476736 bytes
Fixed Size 2225168 bytes
Variable Size 3640658928 bytes
Database Buffers 65062043648 bytes
Redo Buffers 14548992 bytes
RMAN> restore controlfile from '/home/oracle/backup/c-1185342296-20101112-00';
Starting restore at 12-NOV-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=2283 instance=racdg1 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:08
output filename=+DATA/std01/controlfile/current.267.734868701
Finished restore at 12-NOV-10
RMAN> shutdown immediate;
Oracle instance shut down
4 修改pfile中的控制文件信息
*.control_files='+DATA/std01/controlfile/current.267.734868701'
重新创建spfile
[oracle@racdg1 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Nov 12 10:15:42 2010
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to an idle instance.
SQL> create spfile from pfile;
File created.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 6.8719E+10 bytes
Fixed Size 2225168 bytes
Variable Size 3640658928 bytes
Database Buffers 6.5062E+10 bytes
Redo Buffers 14548992 bytes
SQL> alter database mount;
Database altered.
5.
从备份集恢复数据文件
RMAN> catalog start with '/home/oracle/backup';
run {
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 datafile 5 to '+DATA';
set newname for datafile 6 to '+DATA';
set newname for datafile 7 to '+DATA';
set newname for datafile 8 to '+DATA';
set newname for datafile 9 to '+DATA';
set newname for datafile 10 to '+DATA';
set newname for datafile 11 to '+DATA';
set newname for datafile 12 to '+DATA';
set newname for datafile 13 to '+DATA';
set newname for datafile 14 to '+DATA';
set newname for datafile 15 to '+DATA';
set newname for datafile 16 to '+DATA';
set newname for datafile 17 to '+DATA';
set newname for datafile 18 to '+DATA';
set newname for datafile 19 to '+DATA';
set newname for datafile 20 to '+DATA';
set newname for datafile 21 to '+DATA';
set newname for datafile 22 to '+DATA';
set newname for datafile 23 to '+DATA';
set newname for datafile 24 to '+DATA';
set newname for datafile 25 to '+DATA';
set newname for datafile 26 to '+DATA';
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
allocate channel d5 type disk;
restore database;
switch database to copy;
release channel d1;
release channel d2;
release channel d3;
release channel d4;
release channel d5;
}
执行完后检查文件
SQL> select to_number(file#), name from v$datafile;
TO_NUMBER(FILE#) NAME
---------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 +DATA/std01/datafile/system.317.734880503
2 +DATA/std01/datafile/undotbs1.300.734880293
3 +DATA/std01/datafile/sysaux.321.734888445
4 +DATA/std01/datafile/users.301.734880493
5 ***************
6 ***************
25 rows selected.
注意事项:recover时候需要用到此rman备份集备份过程中所产生的archive log,否则无法open resetlogs;
创建时候忘记了restore临时文件,open resetlogs后
SQL> alter tablespace temp02 add tempfile '+DATA';
Tablespace altered.
SQL> select name,bytes/1024/1024 from v$tempfile;
NAME BYTES/1024/1024
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------
+DATA/std01/tempfile/temp02.281.734898557 100
/data/oracle/oradata/orcl/temp02.dbf 1000
SQL> alter database tempfile '+DATA/std01/tempfile/temp02.281.734898557' resize 20G;
Database altered.
SQL> alter tablespace temp02 drop tempfile '/data/oracle/oradata/orcl/temp02.dbf';
Tablespace altered.
接下来查看redo log,发现还是单实例模式的,需要将其全部清除并新建
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
4 1 1 524288000 1 YES INACTIVE 6267473039 12-NOV-10
5 1 2 524288000 1 YES INACTIVE 6267772522 12-NOV-10
6 1 3 524288000 1 NO CURRENT 6268945942 12-NOV-10
7 1 0 524288000 1 YES UNUSED 0
8 1 0 524288000 1 YES UNUSED 0
SQL> alter database clear logfile group 4;
Database altered.
SQL> alter database clear logfile group 5;
Database altered.
SQL> alter database drop logfile '/data/oracle/oradata/orcl/redo04.log';
Database altered.
SQL> alter database drop logfile '/data/oracle/oradata/orcl/redo08.log';
Database altered.
****************
****************
****************
重新建立后的redo log
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 5 524288000 1 YES ACTIVE 6269599597 12-NOV-10
2 1 6 524288000 1 NO CURRENT 6269601065 12-NOV-10
3 1 0 524288000 1 YES UNUSED 0
4 1 4 524288000 1 YES ACTIVE 6269576771 12-NOV-10
5 1 0 524288000 1 YES UNUSED 0
SQL> select to_number(group#),member from v$logfile;
TO_NUMBER(GROUP#) MEMBER
----------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4 +DATA/std01/onlinelog/group_4.284.734899351
1 +DATA/std01/onlinelog/group_1.272.734899525
2 +DATA/std01/onlinelog/group_2.277.734899543
5 +DATA/std01/onlinelog/group_5.280.734899375
3 +DATA/std01/onlinelog/group_3.279.734899561
由于是两节点rac,还需要另外新建一个undo tablespace
SQL> CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '+DATA' size 20g;
Tablespace created.
SQL> ALTER DATABASE ENABLE THREAD 2;
Database altered.
SQL> startup
ORACLE instance started.
Total System Global Area 6.8719E+10 bytes
Fixed Size 2225168 bytes
Variable Size 3472886768 bytes
Database Buffers 6.5230E+10 bytes
Redo Buffers 14548992 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name convert parameters differ from other instance
最后遇到以上错误
解决办法: 创建一个公共spfile,让两个节点的pfile都指向它
Create spfile=‘+DATA’ from pfile
大致步骤如上,接下来几天还会有类似任务,到时有机会再完整整理一遍发出来供大家浏览
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15480802/viewspace-688355/
,如需转载,请注明出处,否则将追究法律责任。