oracle資料庫的靜默(Quiesce)狀態

cnhtm發表於2010-03-05

B14231 第129頁

一、靜默狀態(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--

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22049049/viewspace-1031718/,如需轉載,請註明出處,否則將追究法律責任。

相關文章