数据库静默只允许 DBA 事务、查询、获取或 PL/SQL 语句。
关于数据库静默
有时候,您可能希望将数据库置于只允许 DBA 事务、查询、获取或 PL/SQL 语句的状态。这种状态称为静默状态,因为系统中没有运行任何正在进行的非 DBA 事务、查询、获取或 PL/SQL 语句。
静默状态允许管理员执行无法通过其他方式安全地执行的操作。这些行动包括:
- 如果并发用户事务访问相同的对象,则会失败的操作——例如,更改数据库表的模式或在需要无等待锁的现有表中添加列。
- 可以通过并发用户事务看到不受欢迎的中间效果的操作——例如,当表第一次导出、然后删除和最后导入时,用于重新组织表的多步骤过程。如果一个并发用户在表被删除后试图访问该表,但在导入之前访问该表,那么他将无法准确地了解情况。
如果不能静默数据库,则需要关闭数据库并以受限模式重新打开它。这是一个严重的限制,特别是对于需要 24 x 7 可用性的系统。暂停数据库是一个小得多的限制,因为它消除了对用户的干扰以及与关闭和重新启动数据库相关的停机时间。
当数据库处于静默状态时,通过数据库资源管理器的功能,非dba会话将被禁止激活。因此,尽管该语句有效,但是任何更改当前资源计划的尝试都将排队,直到系统被取消静默。
将数据库置于静默状态
当您将数据库置于静默状态时,非 DBA 活动会话将继续,直到它们变为非活动状态。活动会话是指当前处于事务、查询、读取或 PL/SQL 语句中的会话;或者当前持有任何共享资源的会话(例如,排队)。不允许非活动会话变为活动会话。
例如,如果用户发出 SQL 查询,试图强制不活动的会话变为活动,查询将会出现挂起。当稍后撤消数据库时,会话将恢复,并处理阻塞的操作。
-
要将数据库置于停顿状态,请发出以下 SQL 语句:
ALTER SYSTEM QUIESCE RESTRICTED;
一旦所有非 DBA 会话变为非活动状态,ALTER SYSTEM QUIESCE RESTRICTED 语句完成,数据库处于静默状态。在 Oracle Real Application Clusters 环境中,该语句影响所有实例,而不仅仅是发出该语句的实例。
一旦所有非dba会话都变为非活动状态,ALTER SYSTEM QUIESCE RESTRICTED 语句将完成,数据库将处于停顿状态。在 Oracle Real Application Clusters 环境中,该语句影响所有实例,而不仅仅是发出该语句的实例。
ALTER SYSTEM QUIESCE RESTRICTED 语句可能要等待很长时间才能使活动会话变为非活动。您可以通过查询 V$BLOCKING_QUIESCE 视图来确定阻塞 QUIESCE 操作的会话。这个视图只返回一个列:SID(会话 ID)。你可以加入 V$SESSION 来获取更多关于 SESSION 的信息,如下面的例子所示:
select bl.sid, user, osuser, type, program
from v$blocking_quiesce bl, v$session se
where bl.sid = se.sid;
如果您中断请求以静默数据库,或者如果您的会话在所有活动会话静默之前非正常终止,那么 Oracle 数据库将自动逆转语句的任何部分效果。
对于由连续多个 Oracle 调用接口(OCI)获取执行的查询,ALTER SYSTEM QUIESCE RESTRICTED 语句不会等待所有获取完成。它只等待当前获取完成。
对于专用服务器连接和共享服务器连接,在发出此语句后,数据库资源管理器将对所有非 DBA 登录进行排队,并且不允许继续。对用户来说,登录似乎挂起了。取消数据库设置后,可以恢复登录。
即使发出语句的会话退出,数据库仍然处于静默状态。DBA 必须登录到数据库,才能发出特定于查询数据库的语句。
系统恢复正常运行
当您将系统恢复到正常操作时,允许进行所有非 DBA 活动。
-
若要将数据库恢复正常操作,请发出以下 SQL 语句:
ALTER SYSTEM UNQUIESCE;
在 Oracle Real Application Clusters 环境中,此语句不需要与暂停数据库的语句来自相同的会话,甚至不需要来自相同的实例。如果发出 ALTER SYSTEM UNQUIESCE 语句的会话非正常终止,那么 Oracle 数据库服务器将确保 UNQUIESCE 操作完成。
查看实例的静默状态
通过查询 v$instance 视图,可以查看实例的静默状态。
查询实例的静默状态:
- 查询
V$INSTANCE视图的ACTIVE_STATE列
该列有以下值之一:
NORMAL:正常不停顿状态。QUIESCING:停顿,但是一些非 DBA 会话仍然是活动的。QUIESCED:只有 DBA 会话是活动的或被允许的。




