oracle数据库的静默(Quiesce)状态

http://blog.itpub.net/22049049/viewspace-1031718/

一、静默状态(quiesce state)的用处

1、在数据库静默状态的时候,只允许dba(这里dba指sysdba或sysoper)执行数据库操作;
2、在oracle9i及之前,要达到静默状态的功能,只能重启数据库到限制模式(restricted mode);

二、将数据库设置为静默状态的方法是使用"ALTER SYSTEM QUIESCE RESTRICTED"语句。
这个语句会等待所有active session变为noactive 状态时完成。

[@more@]

1、用scott用户,开启一个事务,不提交

ora_test@oracle[/home/oracle]> sqlplus scott/tiger

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Mar 10 10:17:36 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
scott@CNHTM> update emp set sal=sal+1 where empno=7934;

1 row updated.
scott@CNHTM>

2、用sys用户发起将数据库设置为静默状态的语句,发现这个语句处于等待状态

ora_test@oracle[/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Mar 10 10:23:13 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

sys@CNHTM> alter system quiesce restricted;

3、scott用户提交事务

这里提交语句不会返回结果,因为只要语句一执行,数据库马上进入了静默状态,只有数据库切换到正常状态后,这里才会显示结果

scott@CNHTM> commit;

4、二.2步骤sys用户提交的语句成功,数据库进入静默状态

System altered.

sys@CNHTM>

三、当数据库处于静默状态的时候,非dba用户的操作(如登录),将处于等待状态,直到数据库切换到正常状态后才能完成

sys@CNHTM> conn scott/tiger

四、查询数据库是否处于静默状态的方法

sys@CNHTM> select active_state from v$instance;

ACTIVE_ST
---------
QUIESCED

五、将数据库由非静默状态切换到正常状态,步骤"二.3"和步骤"三"处于等待状态的操作完成

sys@CNHTM> alter system unquiesce;

System altered.

--end--


你可能感兴趣的:(Oracle,dba)