ITPub博客

首页 > 数据库 > Oracle > 【RAC】数据库的静默状态(QUIESCE RESTRICTED)对RAC环境的影响

【RAC】数据库的静默状态(QUIESCE RESTRICTED)对RAC环境的影响

原创 Oracle 作者:OCMU联盟 时间:2010-11-24 23:07:58 0 删除 编辑
有关静默状态的基础知识请参考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博客 ” ,链接:https://blog.itpub.net/70034820/viewspace-2994121/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
OCM联盟( Oracle Certified Master Union)是由侯圣文(ACE总监)发起的一个公益组织,旨在为每一个OCM大师提供一个可以继续展示自己才华,技术和实力的平台。

注册时间:2007-05-27

  • 博文量
    799
  • 访问量
    8407005