我申请这个blog是为了督促自己,把自己平时的一些想法和思考结果保留下来。 本博客所有内容均为原创,如有转载请注明作者和出处

RAC环境的物理STANDBY的 SWITCHOVER切换

上一篇 / 下一篇  2008-01-19 01:49:17 / 个人分类:ORACLE

物理STANDBYSWITCHOVER切换会把当前的一个物理STANDBY切换为PRIMARY数据库,而PRIMARY数据库且变成物理STNADBY数据库。

这篇描述RAC环境数据库SWITCHOVER切换到一个单实例数据库。

DATA GUARD物理STANDBYSWITCHOVER切换:http://yangtingkun.itpub.net/post/468/412324

 

 

在进行DATA GUARD的物理STANDBY切换前需要注意:

确认主库和从库间网络连接通畅;

确认没有活动的会话连接在数据库中;

PRIMARY数据库处于打开的状态,STANDBY数据库处于MOUNT状态;

确保STANDBY数据库处于ARCHIVELOG模式;

如果设置了REDO应用的延迟,那么将这个设置去掉;

确保配置了主库和从库的初始化参数,使得切换完成后,DATA GUARD机制可以顺利的运行。

而对于RAC环境的切换,还需要注意一点,RAC环境的DATA GUARD切换只能启动一个数据库实例,其他的实例需要关闭:

SQL> CONN SYS/TEST@TESTRAC2 AS SYSDBAITPUB个人空间QD;i6MB&o7kZq
已连接。ITPUB个人空间"L;P w-Z3K2I
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAMEITPUB个人空间J*K s3nN-lv
----------------
#lXJ4g:w v0testrac2

SQL> SHUTDOWN IMMEDIATEITPUB个人空间"Y&i^kOH1br
数据库已经关闭。
oix/~y{4O Pe0
已经卸载数据库。
v+BZi&@*ix0ORACLE
例程已经关闭。
?2TLy9a0SQL> CONN SYS/TEST@TESTRAC1 AS SYSDBAITPUB个人空间 PDE&V@lc
已连接。
i DG9^x7l+?%`3m4B7p0SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
p4h)ue6G:k#\#l#\!N0--------------------ITPUB个人空间3^,D2v rcW"EL\[&U
SESSIONS ACTIVE

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

数据库已更改。

SQL> SHUTDOWN IMMEDIATE
u3ibN eg0ORA-01507:
未装载数据库

ITPUB个人空间StE0w%b7w(o
ORACLE
例程已经关闭。ITPUB个人空间7_%T a0~sgr!~tU a
SQL> STARTUP MOUNT
ed ZE0a3v.v3L0ORACLE
例程已经启动。

Total System Global Area 2147483648 bytesITPUB个人空间GqVx3?y~YS:`8D
Fixed Size                  2031480 bytesITPUB个人空间egZR%EH#E,h
Variable Size             956301448 bytesITPUB个人空间FFi }}5Q
Database Buffers         1174405120 bytes
+@k]6S/m%n0Redo Buffers               14745600 bytes
gM(LmHY&aJ*s0
数据库装载完毕。

下面连接到STANDBY数据库,并切换到为PRIMARY数据库:

SQL> CONN SYS/TEST@TESTRAC_STANDBY AS SYSDBAITPUB个人空间 |4`6e a9}#x(Q
已连接。ITPUB个人空间0^"C Fp"T
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
o Xl c?U8x0--------------------ITPUB个人空间;]F T#Yt_@'ro|)v
TO PRIMARY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

数据库已更改。

SQL> ALTER DATABASE OPEN;

数据库已更改。

SQL> CONN SYS/TEST@TESTRAC1 AS SYSDBA
B5[(?F K1_R^+|B0
已连接到空闲例程。
G/G gi2G&]6A,_0SQL> STARTUP MOUNTITPUB个人空间rDi co~ x V%wq
ORACLE
例程已经启动。

Total System Global Area 2147483648 bytes
t#Hs&S3KO0Fixed Size                  2031480 bytesITPUB个人空间(H2Y6L+Q2W$q,z'T7M
Variable Size             956301448 bytes
4B4R P(y m0Database Buffers         1174405120 bytesITPUB个人空间 P K3X4VQ6A"J$j,t
Redo Buffers               14745600 bytesITPUB个人空间v3{i1s9~Q|
数据库装载完毕。
lt8C+Q!_0SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

数据库已更改。

至此,RAC环境的SWITCHOVER切换完成。下面检查一下日志是否已经从目前的主库传播到从库就可以了。

下面简单描述一下,将主库切换为RAC环境的过程:

SQL> CONN SYS/TEST@TESTRAC_STANDBY AS SYSDBAITPUB个人空间Z v[ L&KNY
已连接。ITPUB个人空间Y+_:a\9W2t{{L
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
G,tvKh0--------------------
2@O)` VTn[0SESSIONS ACTIVE

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

数据库已更改。

SQL> SHUTDOWN IMMEDIATE
:f,OHB0vR3s0ORA-01507:
未装载数据库

ITPUB个人空间6MD6w0B4B9ov!`
ORACLE
例程已经关闭。ITPUB个人空间%I1Ju!h(Xv(o/i
SQL> STARTUP MOUNTITPUB个人空间!mMv5F%F
ORACLE
例程已经启动。

Total System Global Area 2147483648 bytesITPUB个人空间+C T*[^ ^ t z+C.b,nB
Fixed Size                  2031480 bytesITPUB个人空间.GL(S"V+K t'LO u
Variable Size             520093832 bytesITPUB个人空间o0s l K(m b I
Database Buffers         1610612736 bytesITPUB个人空间-}Qr'V \
Redo Buffers               14745600 bytes
5rX0t"N3p,`5}e0
数据库装载完毕。
"oLS/I P4l"Y0SQL> CONN SYS/TEST@TESTRAC1 AS SYSDBAITPUB个人空间 A0C]&di
已连接。ITPUB个人空间 MIH2K8Cl)t*sz
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
m mp|U0--------------------
w[ L `(|/M5\v0SESSIONS ACTIVE

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

数据库已更改。

SQL> ALTER DATABASE OPEN;

数据库已更改。

SQL> CONN SYS/TEST@TESTRAC2 AS SYSDBA
cvzr"?$Z!L0
已连接到空闲例程。ITPUB个人空间s0W9q6~@c5zr
SQL> STARTUP
X@:YK4AM.X#@PIW0ORACLE
例程已经启动。

Total System Global Area 2147483648 bytes
"DdO O6M]-v0[0Fixed Size                  2031480 bytes
y['h%k4B.U!c0Variable Size             520093832 bytes
/mrzU!A?7Hh0Database Buffers         1610612736 bytesITPUB个人空间fuQEJ+z
Redo Buffers               14745600 bytesITPUB个人空间)d)gx:[Hd1AC#V)z
数据库装载完毕。
7h%?"j)KH|1Z |*J0
数据库已经打开。ITPUB个人空间)?E Lv I$j!]*Y-^
SQL> CONN SYS/TEST@TESTRAC_STANDBY AS SYSDBA
6\7D"n]uN(p3fO0
已连接。
%f&|4E*U#Q b1H!yM/K0SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

数据库已更改。

这个操作只是上面的一个反向操作,就不详细描述了。

RAC环境的切换似乎和普通环境的切换相差不大,但是这次切换花费了将近3天的时间。

只要原因是碰到了下面的几个bug

SWITCHOVER RAC数据库出现ORA-1093http://yangtingkun.itpub.net/post/468/417767

SWITCHOVER RAC数据库出现ORA-600(kcctrdf_2)错误:http://yangtingkun.itpub.net/post/468/418311

ORA-19864错误:http://yangtingkun.itpub.net/post/468/418784

三个bug中的后两个,在metalink上都找不到解决方法,只能通过自己的摸索来解决。看来越复杂的机制相应的问题就越多,而且相关的参考信息也越少。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar