- Oracle從新手到高手
- 楊繼萍
- 1054字
- 2019-12-09 14:49:01
3.4 數據庫的特殊狀態
靜默狀態和掛起狀態是兩種特殊的數據庫狀態。當數據庫處理靜默狀態時,只有SYS和SYSTEM用戶能夠在數據庫中進行操作。當數據庫處于掛起狀態時,數據庫I/O操作都會被暫停。利用這兩種數據庫狀態,數據庫管理員可以完成一些特殊的管理和維護操作。
3.4.1 靜默狀態
在靜默狀態下,只有具有管理員權限的用戶才能在數據庫中執行查詢、更新操作,運行PL/ SQL程序時,任何非管理員用戶都不能在數據庫中執行任何操作。
在數據庫運行過程中,執行如下的語句將進入靜默狀態。
SQL> alter system quiesce restricted; 系統已更改。
執行上述語句后,數據庫將等待所有正在運行的非管理員用戶會話主動終止,同時不再允許開始任何新的非管理員用戶會話。當所有的非管理員用戶的活動會話都被暫停后,ALTER SYSTEM QUICESCE RESTRICTED語句執行完畢,這時數據庫被認為處于靜默狀態。
由于等待所有的非管理員用戶會話都終止可能需要很長一段時間,因此,在這個過程中如果執行ALTER SYSTEM語句的會話被意外終止,則進行靜默狀態的操作將被撤銷,已經暫停的會話將被恢復。
如果數據庫處理靜默狀態,則可以執行如下語句,將靜默狀態恢復為正常狀態。
SQL> alter system unquiesce; 系統已更改。
可以通過使用動態性能視圖V$INSTANCE來查詢當前數據庫是否處于靜默狀態。在V$INSTANCE視圖中的ACTIVE_STATUS字段顯示了數據庫當前的活動狀態。
※ NORMAL:正常狀態,即非靜默狀態。
※ QUIESCING:正在進入靜默狀態,仍然存在活動的非管理員用戶會話。
※ QUIESCED:靜默狀態。
在下面的示例顯示了如何改變和查詢數據庫的靜默狀態。

3.4.2 掛起狀態
當數據庫處于掛起狀態時,數據庫所有的物理文件(控制文件、數據文件和重做日志文件)的I/O操作都被暫停,這樣能夠保證數據庫在沒有任何I/O操作的情況下進行物理備份。掛起狀態與靜默狀態的區別是:掛起狀態并不禁止非管理員用戶進行數據庫操作,只是暫停所有用戶的I/O操作。
提示:
當數據庫進入靜默狀態時,不能通過復制物理文件的方法來對數據庫進行備份,因為靜默狀態中數據文件仍然處于讀寫狀態,只能在數據庫關閉狀態或掛起狀態下才能對數據庫物理文件進行復制操作。
在數據庫進入掛起狀態時,當前的所有I/O操作能夠繼續進行,但是所有新提交的I/O操作不會執行,而是被放入一個等待隊列中。一旦數據庫恢復到正常狀態,這些I/O操作將從隊列中取出并繼續執行。
掛起數據庫操作可以通過ALTER SYSTEM語句完成,例如:
SQL> alter system suspend; 系統已更改。
如果要將數據庫從掛起狀態中恢復,可以使用如下語句:
SQL> alter system resume; 系統已更改。
可以通過使用動態性能視圖V$INSTANCE來查詢當前數據庫是否處于掛起狀態。動態性能視圖V$INSTANCE中的Database_STATUS字段顯示了數據庫當前的活動狀態。
SUSPENDED:掛起狀態。
ACTIVED:正常狀態。
下面的示例顯示了如何改變和查詢數據庫的掛起狀態:

- 微服務與事件驅動架構
- Apache Spark 2.x Machine Learning Cookbook
- Offer來了:Java面試核心知識點精講(原理篇)
- Python計算機視覺編程
- Apache Spark Graph Processing
- Mastering Ubuntu Server
- UML+OOPC嵌入式C語言開發精講
- Mastering Unity Shaders and Effects
- PhoneGap Mobile Application Development Cookbook
- Bootstrap 4:Responsive Web Design
- Asynchronous Android Programming(Second Edition)
- C語言程序設計教程
- C# 8.0核心技術指南(原書第8版)
- 小型編譯器設計實踐
- Node.js區塊鏈開發