資料庫共有三種狀態:quiesce、resrict、suspend
資料庫共有三種狀態:quiesce、resrict、suspend
一、quiesce模式
首先來說說資料庫的靜默狀態
靜默狀態是指資料庫中只存在sys和system使用者建立的活動會話。只有dba能繼續運算元據庫。
此狀態下可以進行一些在非靜默狀態下執行可能存在不安全因素的特殊操作。
對於必須持續執行的系統,在不關閉資料庫就能執行某些特殊操作的功能十分重要。
靜默狀態下資料庫資源管理器(database resource manager)將阻止sys、system使用者以外的使用者提交操作。
進入靜默狀態的方法為:
alter system quiesce restricted;(sys或system使用者執行)
進入靜默模式的過程為:資料庫資源管理器控制所有例項,阻止非活動會話恢復為活動狀態。普通使用者無法執
行新的事務、查詢、資料提取和pl/sql過程。如果一個查詢是由多個連續的 OCI 資料提取操作執行的,Oracle
不會等待所有的資料提取全部結束。Oracle 只會等待當前的資料提取結束並阻塞之後的資料提取。Oracle 還
會等待所有擁有共享資源的會話(SYS 及 SYSTEM 使用者的資源除外)釋放資源。上面提到的所有等待都結束之
後,Oracle 可以將資料庫置為靜默狀態,並結束 QUIESCE RESTRICTED 語句。
如果資料庫的某個例項是在共享服務模式(shared server mode)下執行的,Oracle 透過資料庫資源管理器(
Database Resource Manager)阻止使用者(SYS 及 SYSTEM 使用者除外)登入到此例項。如果例項執行在專用服務
模式(dedicated server mode)下,Oracle 不會對此例項的使用者登入進行限制。
靜默狀態恢復到正常狀態方法為:
alter system unquiesce
可以透過v$instance等檢視得到資料庫狀態。
具體例項為:
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
D:\Documents and Settings\tian>set oracle_sid=test_database
D:\Documents and Settings\tian>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 10月 19 09:19:50 2012
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn /as sysdba
已連線。
SQL> alter system quiesce restricted
2 ;
alter system quiesce restricted
*
ERROR 位於第 1 行:
ORA-25507: 沒有使資源管理器一直處於開啟狀態
//如果是9i,那麼必須設定resource_limit引數為true,並設定resource_manager_plan引數指向一個資源計劃
SQL> alter system set resource_manager_plan='SYSTEM_PLAN' scope=spfile sid='JLRP
S';
//由於資料庫沒有開啟資源管理器,無法執行這個操作。需要開啟後重啟才生效。
系統已更改。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter system quiesce restricted;
系統已更改。
SQL> conn
^C
//此處證明靜默模式下其他使用者不能登入資料庫
D:\Documents and Settings\tian>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 10月 19 09:32:07 2012
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn /as sysdba
已連線。
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_TI STATUS PAR THREAD# ARCHIVE LOG_SWITCH_
----------------- ---------- ------------ --- ---------- ------- -----------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST
---------- --- ----------------- ------------------ ---------
1 test_database
TIANLEI
9.2.0.1.0 19-10月-12 OPEN NO 1 STARTED
ALLOWED NO ACTIVE PRIMARY_INSTANCE QUIESCED//處於靜默狀態
SQL> alter system unquiesce;
系統已更改。
SQL> conn scott/tiger
已連線。
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_TI STATUS PAR THREAD# ARCHIVE LOG_SWITCH_
----------------- ---------- ------------ --- ---------- ------- -----------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST
---------- --- ----------------- ------------------ ---------
1 test_database
TIANLEI
9.2.0.1.0 19-10月-12 OPEN NO 1 STARTED
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL//恢復正常狀態了
在設定靜默狀態時,正在登陸的普通使用者被掛起,無法進行操作了。
而當狀態改為正常後,普通使用者的會話繼續執行。
以上的實驗是在oracle9i環境下操作的,在10g中,必須開啟資料庫資源管理器的限制已經被取消了。因此,向
上面實驗中的操作其實是沒意義的,因為靜默狀態和restricted狀態的區別就在於其不用停掉資料庫而執行操
作。
在RAC環境下某個節點設定了靜默狀態後,其他節點也是能夠監測到的。
二、restrict模式:
直接實驗
1.會話1中進行操作:
SQL> startup restrict
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_TI STATUS PAR THREAD# ARCHIVE LOG_SWITCH_
----------------- ---------- ------------ --- ---------- ------- -----------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST
---------- --- ----------------- ------------------ ---------
1 jlrps
TIANLEI
9.2.0.1.0 19-10月-12 OPEN NO 1 STARTED
RESTRICTED NO ACTIVE PRIMARY_INSTANCE NORMAL
SQL> create user tes1 identified by tes1;
使用者已建立
SQL> grant create session to tes1;
授權成功。
2.會話2中進行操作:
SQL> conn tes1/tes1
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
SQL> conn scott/tiger
已連線。
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
---------- ---------- --------- ---------- ---------- ---------- ----------
DEPTNO
----------
7369 SMITH CLERK 7902 17-12月-80 800
20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
30
……//結果省略,scott使用者擁有dba角色(RESTRICTED SESSION privilege)
3.會話1中操作:
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
4.會話2中操作:
SQL> conn tes1/tes1
已連線。
可以看到,restrict模式需要重啟資料庫,且擁有RESTRICTED SESSION privilege的使用者在此模式可以登入系
統進行操作。
而quiese模式就死板多了,除了sys、system都不行,不過也更安全。
三、suspend模式:
面向所有使用者,限制I/O操作。當我們需要進行物理讀操作時,會話會暫停。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> alter system suspend;
系統已更改。
SQL> select * from scott.emp;
//一直沒有查詢結果。
這個問題還真不會解決了。將資料庫重啟再操作還是無效的
說到了資料庫啟停,再複習一下:
啟動型別:
startup nomount --啟動例項
startup mount --啟動例項、裝載
startup (normal) --啟動例項、裝載、開啟資料庫
startup pfile='xx/xx/xx.ora' --引數檔案啟動
startup restrict --限制模式,無restricted session許可權的使用者無法登入
startup force --強制啟動,正常啟動不了才用
startup open recover --啟動例項,裝載資料庫和啟動完全介質恢復
停止型別:
shutdown (normal) --正常模式
shutdownimmediate --立即模式
shutdown abort --中斷模式,再次啟動時可能需要恢復
alter system quiese restricted; --停頓資料庫,只有sys、system使用者可操作
掛起資料庫
--暫停對資料檔案和控制檔案的所有IO,可以在無IO干擾情況先進行備份
--掛起命令可以掛起資料庫而並不指定一個例項
ALTER SYSTEM SUSPEND;
--恢復到非掛起狀態
ALTER SYSTEM RESUME;
--檢視掛起狀態
SELECT DATABASE_STATUS FROM V$INSTANCE;
參考文章http://space.itpub.net/4227/viewspace-591661
http://blog.csdn.net/nsj820/article/details/6573525
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11297314/viewspace-2145137/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫的三種狀態RESTRICT、QUIESCE和SUSPEND資料庫RESTUI
- RESTRICT、QUIESCE和SUSPEND(三)RESTUI
- oracle資料庫的靜默(Quiesce)狀態Oracle資料庫UI
- restricted_session_quiesce_suspendRESTSessionUI
- RESTRICT、QUIESCE和SUSPEND(二)RESTUI
- RESTRICT、QUIESCE和SUSPEND(一)RESTUI
- 【RAC】資料庫的靜默狀態(QUIESCE RESTRICTED)對RAC環境的影響資料庫UIREST
- Oracle 資料庫的各種狀態和模式Oracle資料庫模式
- oracle資料庫狀態Oracle資料庫
- 【YashanDB資料庫】yasboot查詢資料庫狀態時顯示資料庫狀態為off資料庫boot
- 資料庫訂單狀態資料庫
- openguass 資料庫狀態查詢資料庫
- oracle資料庫例項狀態Oracle資料庫
- Vue同構(三): 狀態與資料Vue
- Oracle資料庫的靜默狀態和掛起狀態Oracle資料庫
- Oracle DG資料庫狀態轉換Oracle資料庫
- 資料庫啟動的不同狀態資料庫
- 檢視映象資料庫的狀態資料庫
- shutdown資料庫後提示資料庫處於running狀態資料庫
- 新建Oracle資料庫三種方法Oracle資料庫
- 3.4.2 將資料庫置於 Quiesced 狀態資料庫UI
- 達夢8資料庫的狀態模式資料庫模式
- 郵件介面推送的三種狀態方式
- 深入理解hibernate的三種狀態
- JavaScript狀態資料JavaScript
- 主備資料庫狀態手工比對(一)資料庫
- 主備資料庫狀態手工比對(二)資料庫
- 如何檢視資料庫當前的狀態?資料庫
- oracle資料庫執行狀態監控SHELLOracle資料庫
- Oracle資料庫檢視使用者狀態Oracle資料庫
- 資料倉儲中的三種資料庫模型資料庫模型
- redis資料庫叢集三種模式Redis資料庫模式
- Oracle資料庫三種備份方案Oracle資料庫
- JDBC連線三種資料庫例子JDBC資料庫
- React 4 種狀態型別及 N 種狀態管理React型別
- hibernate中po物件的三種狀態分析物件
- 在資料庫各種狀態下查詢DBID的五大類十種方法彙總資料庫
- 在 Laravel 的資料庫模型中使用狀態模式Laravel資料庫模型模式