Occasionally you might want to put a database in a state that allows
only DBA transactions, queries, fetches, or PL/SQL statements.
Such a state is referred to as a quiesced state, in the sense that no ongoing non-DBA transactions, queries, fetches, or PL/SQL statements are running in the system.
Such a state is referred to as a quiesced state, in the sense that no ongoing non-DBA transactions, queries, fetches, or PL/SQL statements are running in the system.
--Oracle® Database Administrator's Guide 11g Release 2 (11.2) p.138
--实验
--切换到静默状态。
SYS@PROD1> ALTER SYSTEM QUIESCE RESTRICTED;
System altered.
SYS@PROD1> select active_state from v$instance;
ACTIVE_ST
---------
QUIESCED
You can query the ACTIVE_STATE column of the V$INSTANCE view to see the current
state of an instance. The column values has one of these values:
■ NORMAL: Normal unquiesced state.
■ QUIESCING: Being quiesced, but some non-DBA sessions are still active.
■ QUIESCED: Quiesced; no non-DBA sessions are active or allowed.
--Oracle® Database Administrator's Guide 11g Release 2 (11.2) p.140
--另起一个SCOTT的session进行DML操作,结果hang住。
SCOTT@PROD1> create table t as select * from emp;
--在SYS成功DML操作。
SYS@PROD1> create table scott.t2 as select * from scott.emp;
Table created.
--切换回正常状态。
SYS@PROD1> ALTER SYSTEM UNQUIESCE;
System altered.
SYS@PROD1> select active_state from v$instance;
ACTIVE_ST
---------
NORMAL
--查看另一session。
SCOTT@PROD1> create table t as select * from emp;
create table t as select * from emp
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
SCOTT@PROD1>
Non-DBA active sessions will continue until they become inactive.