#操作环境
单实例数据库版本11.2.0.3
rac数据库版本 11.2.0.3
这里主要讲恢复的过程,rac的安装配置就省略了。
1、在源库用RMAN 备份,并将备份文件copy到rac的一个节点服务器上
备份最好拷贝到和原库相同的目录下
2、启动rac的一个节点到nomount状态下
> startup nomount;
3、RMAN 执行对控制文件的恢复
RMAN> restore controlfile from '/u03/oradata/orarmanbackup/140821/c-4282653214-20140821-00';
4、restore数据库
4.1 将数据库启动到MOUNT状态
RMAN> alter database mount;
4.2 查看源库数据文件存储位置信息
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
-------- -------------------------------------------------
1 /u02/oradata/center/system01.dbf
2 /u02/oradata/center/sysaux01.dbf
3 /u02/oradata/center/undotbs01.dbf
4 /u02/oradata/center/appstore/tbs_appstore01.dbf
5 /u02/oradata/center/passport/passport_data01.dbf
6 /u02/oradata/center/base/base01.dbf
7 /u02/oradata/center/base/base_idx01.dbf
8 /u02/oradata/center/passport/passport_data02.dbf
9 /u02/oradata/center/passport/passport_data03.dbf
10 /u02/oradata/center/passport/passport_idx01.dbf
11 /u02/oradata/center/passport/passport_idx02.dbf
12 /u02/oradata/center/passport/passport_idx03.dbf
13 /u02/oradata/center/appstore/tbs_appstore02.dbf
14 /u02/oradata/center/appstore/tbs_appstore03.dbf
15 /u02/oradata/center/appstore/tbs_appstore04.dbf
16 /u02/oradata/center/appstore/tbs_appstore05.dbf
SQL> select file_id,file_name from dba_temp_files;
FILE_ID FILE_NAME
------- --------------------------------------------------
1 /u02/oradata/center/temp01.dbf
4.3在RAC上restore 数据文件
run {
set newname for datafile 1 to "+ASM_DATA/center/datafile/system01.dbf";
set newname for datafile 2 to "+ASM_DATA/center/datafile/sysaux01.dbf";
set newname for datafile 3 to "+ASM_DATA/center/datafile/undotbs01.dbf";
set newname for datafile 4 to "+ASM_DATA/center/datafile/appstore/tbs_appstore01.dbf";
set newname for datafile 5 to "+ASM_DATA/center/datafile/passport/passport_data01.dbf";
set newname for datafile 6 to "+ASM_DATA/center/datafile/base/base01.dbf";
set newname for datafile 7 to "+ASM_DATA/center/datafile/base/base_idx01.dbf";
set newname for datafile 8 to "+ASM_DATA/center/datafile/passport/passport_data02.dbf";
set newname for datafile 9 to "+ASM_DATA/center/datafile/passport/passport_data03.dbf";
set newname for datafile 10 to "+ASM_DATA/center/datafile/passport/passport_idx01.dbf";
set newname for datafile 11 to "+ASM_DATA/center/datafile/passport/passport_idx02.dbf";
set newname for datafile 12 to "+ASM_DATA/center/datafile/passport/passport_idx03.dbf";
set newname for datafile 13 to "+ASM_DATA/center/datafile/appstore/tbs_appstore02.dbf";
set newname for datafile 14 to "+ASM_DATA/center/datafile/appstore/tbs_appstore03.dbf";
set newname for datafile 15 to "+ASM_DATA/center/datafile/appstore/tbs_appstore04.dbf";
set newname for datafile 16 to "+ASM_DATA/center/datafile/appstore/tbs_appstore05.dbf";
set newname for tempfile 1 to '+ASM_DATA/center/temp01.dbf';
restore database;
switch datafile all;
switch tempfile all;
}
5、recover 数据库
RMAN> recover database;
出现如下错误:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 08/21/2014 12:13:52
RMAN-06054: media recovery requesting unknown log: thread 1 seq 563 lowscn 106144757
最后一行的错误说明:
RMAN-06054: media recovery requesting unknown log: thread 1 seq 563 lowscn 106144757
可以忽略
这里是提醒恢复到一个未知的scn号。在alter database mount之后,通过set until scn或者set until time命令设置恢复到的scn号或时间。就可以避免这个错误。
6、处理online redo
SQL> select * from v$logfile;
rows will be truncated
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------
1 ONLINE /u03/redo/redo01_1.log
1 ONLINE /u03/redo/redo01_2.log
2 ONLINE /u03/redo/redo02_1.log
2 ONLINE /u03/redo/redo02_2.log
3 ONLINE /u03/redo/redo03_1.log
3 ONLINE /u03/redo/redo03_2.log
4 STANDBY /u02/oradata/center/redo04.log
5 STANDBY /u02/oradata/center/redo05.log
6 STANDBY /u02/oradata/center/redo06.log
7 STANDBY /u02/oradata/center/redo07.log
4 INVALID STANDBY /u02/oradata/center/redo04_1.log
5 INVALID STANDBY /u02/oradata/center/redo05_1.log
6 INVALID STANDBY /u02/oradata/center/redo06_1.log
7 INVALID STANDBY /u02/oradata/center/redo07_1.log
redo文件没有在asm磁盘下,需要手动改下。
由于原库配置过DG,所以有STANDBY redo log 文件,直接删除就可以。
6.1 删除STANDBY redo log日志组
alter database drop standby logfile group 4;
alter database drop standby logfile group 5;
alter database drop standby logfile group 6;
alter database drop standby logfile group 7;
6.1 把redo log移到asm上
alter database rename file '/u03/redo/redo01_1.log' to '+ASM_DATA/center/onlinelog/redo01_1.log';
alter database rename file '/u03/redo/redo01_2.log' to '+ASM_DATA/center/onlinelog/redo01_2.log';
alter database rename file '/u03/redo/redo02_1.log' to '+ASM_DATA/center/onlinelog/redo02_1.log';
alter database rename file '/u03/redo/redo02_2.log' to '+ASM_DATA/center/onlinelog/redo02_2.log';
alter database rename file '/u03/redo/redo03_1.log' to '+ASM_DATA/center/onlinelog/redo03_1.log';
alter database rename file '/u03/redo/redo03_2.log' to '+ASM_DATA/center/onlinelog/redo03_2.log';
修改完后如下:
SQL> select * from v$logfile;
rows will be truncated
GROUP# STATUS TYPE MEMBER
------- ------- ------- -------------------------------------------------
1 ONLINE +ASM_DATA/center/onlinelog/redo01_1.log
1 ONLINE +ASM_DATA/center/onlinelog/redo01_2.log
2 ONLINE +ASM_DATA/center/onlinelog/redo02_1.log
2 ONLINE +ASM_DATA/center/onlinelog/redo02_2.log
3 ONLINE +ASM_DATA/center/onlinelog/redo03_1.log
3 ONLINE +ASM_DATA/center/onlinelog/redo03_2.log
注意这个时候,对应目录还是空的,当我们open db 的时候,oracle 会自动创建online redo log。我们这里修改的目的就是改变online redo 的位置。
7、open resetlogs 打开DB
在恢复的节点执行该操作。
alter database open resetlogs;
8、创建节点2的undo 表空间
create undo tablespace UNDOTBS2 datafile '+ASM_DATA/center/datafile/undotbs02.dbf' size 500m autoextend on next 100M maxsize 10240M;
注意这里的undo表空间名字要和参数文件里设置的默认表空间名字相同
center2.undo_tablespace='UNDOTBS2'
9、添加rac2 节点的redo 文件
alter database add logfile thread 2 group 4 ('+ASM_DATA/center/onlinelog/redo04_1.log','+ASM_DATA/center/onlinelog/redo04_2.log') size 4096M;
alter database add logfile thread 2 group 5 ('+ASM_DATA/center/onlinelog/redo05_1.log','+ASM_DATA/center/onlinelog/redo05_2.log') size 4096M;
alter database add logfile thread 2 group 6 ('+ASM_DATA/center/onlinelog/redo06_1.log','+ASM_DATA/center/onlinelog/redo06_2.log') size 4096M;
添加完后要enable
alter database enable thread 2;
如果没有enable rac2启动不了,如下
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01618: redo thread 2 is not enabled - cannot mount
[oracle@wikenode1 redo]$ oerr ora 01618
01618, 00000, "redo thread %s is not enabled - cannot mount"
// *Cause: The INIT.ORA parameter "thread" requests a thread that is not
// enabled. A thread must be enabled before it can be mounted.
// *Action: Shutdown the instance, change the INIT.ORA parameter and startup
// mounting a different thread. If the database is open in another
// instance then the thread may be enabled.
10、重启节点1和节点2 上的实例
$srvctl stop database -d center
$srvctl start database -d center
11、重建Temp 表空间
alter tablespace temp add tempfile '+ASM_DATA/center/temp.dbf' size 500M autoextend on next 100M maxsize 10240M;
alter database tempfile '+ASM_DATA/center/temp01.dbf' offline;
alter database tempfile '+ASM_DATA/center/temp01.dbf' drop including datafiles;
到这里迁移就完成了
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26794255/viewspace-1255334/,如需转载,请注明出处,否则将追究法律责任。