系统环境:
操作系统:RedHat EL55
Oracle : Oracle 11.2.0.1.0
集群软件:Oracle GI 11.2.0.1.0
本案例采用的是基于DataGuard的迁移方式
主备库实施切换,将RAC database切换成主库,既可以完成数据的迁移。
主库:
8:18:00 SYS@ cuug>select name,dbid,database_role,protection_mode,switchover_status from v$database;
NAME DBID DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
--------- ---------- ---------------- -------------------- --------------------
CUUG 1329392875 PRIMARY MAXIMUM PERFORMANCE TO STANDBY
备库:
SQL> select name,dbid,database_role,protection_mode,switchover_status from v$database;
NAME DBID DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
--------- ---------- ---------------- -------------------- --------------------
CUUG 1329392875 PHYSICAL STANDBY MAXIMUM PERFORMANCE NOT ALLOWED
1、首先将主库(单实例)切换成备库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
18
:
20
:
51
SYS@ cuug>alter database commit to switchover to standby with session shutdown ;
Database altered.
18
:
21
:
25
SYS@ cuug>shutdown
ORA-
01507
: database not mounted
ORACLE instance shut down.
18
:
21
:
55
SYS@ cuug>startup mount;
ORACLE instance started.
Total System Global Area
418484224
bytes
Fixed Size
1336932
bytes
Variable Size
264243612
bytes
Database Buffers
146800640
bytes
Redo Buffers
6103040
bytes
Database mounted.
18
:
22
:
03
SYS@ cuug>select name,dbid,database_role,protection_mode,switchover_status from v$database;
NAME DBID DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
--------- ---------- ---------------- -------------------- --------------------
CUUG
1329392875
PHYSICAL STANDBY MAXIMUM PERFORMANCE TO PRIMARY
Elapsed:
00
:
00
:
00.01
18
:
22
:
08
SYS@ cuug>recover managed standby database disconnect from session;
Media recovery complete.
|
2、将备库(RAC)切换成主库
SQL> alter database commit to switchover to primary;
Database altered.
SQL> alter database open;
Database altered.
SQL> select name,dbid,database_role,protection_mode,switchover_status from v$database;
NAME DBID DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
--------- ---------- ---------------- -------------------- --------------------
CUUG 1329392875 PRIMARY MAXIMUM PERFORMANCE RESOLVABLE GAP
SQL> alter system switch logfile;
System altered.
SQL> select name,dbid,database_role,protection_mode,switchover_status from v$database;
NAME DBID DATABASE_ROLE PROTECTION_MODE SWITCHOVER_STATUS
--------- ---------- ---------------- -------------------- --------------------
CUUG 1329392875 PRIMARY MAXIMUM PERFORMANCE TO STANDBY
@至此,DG切换成功
3、启动node2上的Instnace(stddb2)
1
2
3
4
5
6
7
|
SQL> startup
ORACLE instance started.
Total System Global Area
418484224
bytes
Fixed Size
1336932
bytes
Variable Size
318769564
bytes
Database Buffers
92274688
bytes
Redo Buffers
6103040
bytes
|
ORA-01618: redo thread 2 is not enabled - cannot mount
启动失败,解决方法:
1)查看实例1的redo日志
SQL> select group#,thread#,sequence#,status,bytes from v$log;
GROUP# THREAD# SEQUENCE# STATUS BYTES
---------- ---------- ---------- ---------------- ----------
1 1 31 CURRENT 52428800
2 1 29 INACTIVE 52428800
3 1 30 ACTIVE 52428800
缺少thread 2的日志,对于RAC应该有两个thread !
2)添加thread 2日志组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
SQL> alter database add logfile thread
2
(
'+dg1'
,
'+rcy1'
) size 50m;
Database altered.
SQL> alter database add logfile thread
2
(
'+dg1'
,
'+rcy1'
) size 50m;
Database altered.
SQL> alter database add logfile thread
2
(
'+dg1'
,
'+rcy1'
) size 50m;
Database altered.
SQL> select group#,member
from
v$logfile order by
1
;
GROUP# MEMBER
---------- --------------------------------------------------
1
+DG1/stddb/onlinelog/redo01a.log
1
+RCY1/stddb/onlinelog/redo01b.log
2
+RCY1/stddb/onlinelog/redo02b.log
2
+DG1/stddb/onlinelog/redo02a.log
3
+DG1/stddb/onlinelog/redo03a.log
3
+RCY1/stddb/onlinelog/redo03b.log
4
+DG1/stddb/onlinelog/group_4
.280.848169735
4
+RCY1/stddb/onlinelog/group_4
.287.848169817
5
+DG1/stddb/onlinelog/group_5
.281.848169749
5
+RCY1/stddb/onlinelog/group_5
.288.848169827
6
+DG1/stddb/onlinelog/group_6
.282.848169759
GROUP# MEMBER
---------- --------------------------------------------------
6
+RCY1/stddb/onlinelog/group_6
.289.848169831
12
rows selected.
|
3)激活thread 2
SQL> alter database enable thread 2;
Database altered.
4)再从node 2 open database
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-30012: undo tablespace 'UNDOTBS2' does not exist or of wrong type
Process ID: 10707
Session ID: 1 Serial number: 3
看来是缺少undo tablespace;
回到node 1添加表空间:
SQL> alter system set db_create_file_dest='+dg1';
System altered.
SQL> create undo tablespace undotbs2;
Tablespace created.
重新在node2上启动Instance:
1
2
3
4
5
6
7
8
9
|
SQL> startup
ORACLE instance started.
Total System Global Area
418484224
bytes
Fixed Size
1336932
bytes
Variable Size
318769564
bytes
Database Buffers
92274688
bytes
Redo Buffers
6103040
bytes
Database mounted.
Database opened.
|
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS2
SQL>
@至此,node2上的Instance 启动完毕,数据迁移完成。
4、将RAC上的database和Instance注册到CRS
由于RAC是基于CRS管理的,需要把database和instance注册到CRS里进行管理
1)注册数据库
[oracle@node1 ~]$ srvctl add database -d stddb -o $ORACLE_HOME -n cuug
2)注册实例
[oracle@node1 ~]$ srvctl add instance -d stddb -i stddb1 -n node1
[oracle@node1 ~]$ srvctl add instance -d stddb -i stddb2 -n node2
3)启动数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[oracle
@node1
~]$ srvctl start database -d stddb
通过node1连接:
[oracle
@node1
~]$ sqlplus
'/as sysdba'
SQL*Plus: Release
11.2
.
0.1
.
0
Production on Wed May
21
19
:
18
:
37
2014
Copyright (c)
1982
,
2009
, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release
11.2
.
0.1
.
0
- Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> select instance_name,status from gv$instance;
INSTANCE_NAME STATUS
---------------- ------------
stddb1 OPEN
stddb2 OPEN
|
通过node2连接:
1
2
3
4
5
6
7
8
|
[oracle
@node2
admin]$ export ORACLE_SID=stddb2
[oracle
@node2
admin]$ sqlplus
'/as sysdba'
SQL*Plus: Release
11.2
.
0.1
.
0
Production on Wed May
21
19
:
19
:
53
2014
Copyright (c)
1982
,
2009
, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release
11.2
.
0.1
.
0
- Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
|
@至此,整个数据迁移的工作全部完成,对于单实例的原来的主库,可以继续作为备库构建容灾的环境,保护数据安全!