【RAC】資料庫的靜默狀態(QUIESCE RESTRICTED)對RAC環境的影響

secooler發表於2010-11-24
有關靜默狀態的基礎知識請參考Oracle官方文件“Quiescing a Database”()

本文介紹靜默狀態對RAC環境的影響。

1.啟用靜默狀態和取消靜默狀態是全域性生效操作
“ALTER SYSTEM QUIESCE RESTRICTED;”語句和“ALTER SYSTEM UNQUIESCE;”語句會對RAC環境中的所有例項產生影響,不侷限在執行命令的節點。
驗證之.

1)建立具有dba許可權的普通使用者secooler
sys@RACDB1> create user secooler identified by secooler ;

User created.

sys@RACDB1> grant dba to secooler;

Grant succeeded.

2)在第一個節點上置例項為靜默狀態
(1)操作前確認RAC環境下各節點例項狀態
sys@RACDB1> select instance_name, status, active_state from gv$instance;

INSTANCE_NAME    STATUS       ACTIVE_ST
---------------- ------------ ---------
RACDB1           OPEN         NORMAL
RACDB2           OPEN         NORMAL

(2)在節點1上調整資料庫為靜默狀態
sys@RACDB1> alter system quiesce restricted;

System altered.

注意,此時如果有為完成的事務,此操作將會等待,直到所有事務完成之後才能完成。

(3)檢視調整後RAC環境中各節點的狀態
sys@RACDB1> select instance_name, status, active_state from gv$instance;

INSTANCE_NAME    STATUS       ACTIVE_ST
---------------- ------------ ---------
RACDB1           OPEN         QUIESCED
RACDB2           OPEN         QUIESCED

可見,此時RAC環境下的所有例項均處於靜默狀態。因此印證了靜默操作時全域性有效的。

3)在第二節點上嘗試發起新的連線
RACDB2@rac2 /home/oracle$ sqlplus secooler/secooler

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:05:25 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


此時,連線會一直處於等待Hang住的狀態,無法連線到secooler使用者,在靜默狀態下即便是具有dba許可權的使用者依然沒有特權。
此等待會在取消靜默後自動完成。

4)取消靜默
sys@RACDB1> alter system unquiesce;

System altered.

sys@RACDB1> select instance_name, status, active_state from gv$instance;

INSTANCE_NAME    STATUS       ACTIVE_ST
---------------- ------------ ---------
RACDB2           OPEN         NORMAL
RACDB1           OPEN         NORMAL

5)回到第二個節點的操作視窗,可見secooler使用者已經連線成功
RACDB2@rac2 /home/oracle$ sqlplus secooler/secooler

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:05:25 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

secooler@RACDB2>

依次驗證了靜默和取消靜默操作是全域性生效的。

2.在靜默狀態下其他例項無法開啟資料庫
系統在靜默操作進行中和靜默狀態下,RAC環境下的其他節點是無法開啟資料庫的。

驗證之:

1)手工停掉第二節點上的例項
RACDB2@rac2 /home/oracle$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:08:28 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options

sys@RACDB2> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

2)在第一節點上調整資料庫為靜默狀態
sys@RACDB1> alter system quiesce restricted;

System altered.

sys@RACDB1> select instance_name, status, active_state from gv$instance;

INSTANCE_NAME    STATUS       ACTIVE_ST
---------------- ------------ ---------
RACDB1           OPEN         QUIESCED

3)在第二節點上手工啟動資料庫
RACDB2@rac2 /home/oracle$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:09:19 2010

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

NotConnected@RACDB2> startup;
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  1266368 bytes
Variable Size             121638208 bytes
Database Buffers           37748736 bytes
Redo Buffers                7118848 bytes
Database mounted.
ORA-25503: cannot open database because the database is being quiesced

在啟動的過程中丟擲ORA-25503錯誤,原因是“the database is being quiesced”。顯然,資料庫處於靜默狀態下其他例項是無法啟動的。

4)在第一節點上取消靜默
sys@RACDB1> alter system unquiesce;

System altered.

sys@RACDB1> select instance_name, status, active_state from gv$instance;

INSTANCE_NAME    STATUS       ACTIVE_ST
---------------- ------------ ---------
RACDB2           MOUNTED      NORMAL
RACDB1           OPEN         NORMAL

5)此時第二節點便可以正常OPEN
NotConnected@RACDB2> alter database open;

Database altered.

sys@RACDB2> select instance_name, status, active_state from gv$instance;

INSTANCE_NAME    STATUS       ACTIVE_ST
---------------- ------------ ---------
RACDB2           OPEN         NORMAL
RACDB1           OPEN         NORMAL

3.在靜默狀態下無法獲取冷備份
由於資料庫處於停頓狀態,Oracle後臺程式仍然可能出於內部目的而執行更新,因此在靜默狀態下無法獲取有效的冷備份,注意,靜默狀態與關閉狀態有本質上的區別。

4.小結
總結以上結論,在RAC環境下靜默狀態主要影響如下:
①啟用靜默狀態和取消靜默狀態是全域性生效操作;
②在靜默狀態下其他例項無法開啟資料庫;
③在靜默狀態下無法獲取冷備份。

在真正理解靜默狀態對RAC環境的影響的基礎上使用,這樣可以大大的降低使用風險。

Good luck.

secooler
10.11.24

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-680570/,如需轉載,請註明出處,否則將追究法律責任。

相關文章