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 状态时完成。
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--