Restrict Session與Restricted Mood
查閱Oracle官方文件,看到SYSDBA和SYSOPER兩個特殊的系統許可權System Privilege。在兩個許可權可以進行的操作中,有一個名為Restricted Session的許可權專案,做一下深入的研究。
啟動Oracle資料庫伺服器,是一個階段性的操作。大體上分為nomount、mount和Open三個階段。下面是在linux平臺上進行的分階段啟動演示。
//連線到一個空例項上,注意,這裡驗證使用的是OS驗證方式;
SQL> conn / as sysdba
Connected to an idle instance.
//nomount狀態啟動,例項程式啟動,SGA空間分配,引數檔案載入;
SQL> startup nomount
ORACLE instance started.
Total System Global Area 414298112 bytes
Fixed Size 1336904 bytes
Variable Size 310380984 bytes
Database Buffers 96468992 bytes
Redo Buffers 6111232 bytes
//控制檔案載入應用,定位資料檔案;
SQL> alter database mount;
Database altered.
//開啟資料庫檔案,實現操作;
SQL> alter database open;
Database altered.
在啟動之後,資料庫使用者就可以進行連線。
啟動restricated mode
作為DBA,是可以控制啟動階段和程式的。不同的階段,可以進行不同型別的操作,如備份各種型別檔案。
有時候,我們希望只有特定的一些使用者可以連入資料庫,比如管理員級別使用者。在這種時候,我們可以使用restricted mode方式啟動資料庫。
啟用restricted mode方式啟動和執行資料庫後,只有那些具有create session和restricted session許可權的使用者,才能登入入系統資料庫。預設情況下,只有SYSDBA和SYSOPER使用者擁有restricted session許可權。意味著只有資料庫管理許可權的使用者才能進行restricted mode下的資料管理工作。
還有一點要注意,在restricted mode下,使用者即使擁有restricted session許可權,只能本地登入並且不經過監聽程式才可以。Remote方式登入是被拒絕的。
通常,在下面的情況下才考慮使用restricted mode進行維護工作。
ü 需要進行匯入和匯出資料。這個過程中,資料完整性是不能保證的,最好還是禁止應用使用者登入;
ü 使用SQL*Loader進行資料載入;
ü 臨時性的拒絕一般使用者連入訪問資料;
ü 執行特定的資料移植和升級操作;
使用startup restrict命令,就可以以restricted mode方式啟動資料庫。
SQL> startup restrict
ORACLE instance started.
Total System Global Area 414298112 bytes
Fixed Size 1336904 bytes
Variable Size 310380984 bytes
Database Buffers 96468992 bytes
Redo Buffers 6111232 bytes
Database mounted.
Database opened.
此時,從客戶端嘗試登入。
首先,嘗試在本地local登入
//本地繞過監聽器程式登入,是透過的。
SQL> conn / as sysdba;
Connected.
SQL> select count(*) from dba_objects;
COUNT(*)
----------
72461
//監聽器本地登入
SQL> conn sys/sys@wilson as sysdba;
ERROR:
ORA-12526: TNS:listener: all appropriate instances are in restricted mode //報錯,被拒絕
Warning: You are no longer connected to ORACLE.
//非restricted session許可權使用者
SQL> conn scott/tiger@wilson;
ERROR:
ORA-12526: TNS:listener: all appropriate instances are in restricted mode //連線被拒絕
//本機非許可權登入
SQL> conn scott/tiger
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
這次換使用遠端登入
SQL> conn sys/sys@wilson as sysdba;
ERROR:
ORA-12526: TNS: 監聽程式: 所有適用例程都處於受限模式
SQL> conn /@wilson as sysdba;
ERROR:
ORA-12526: TNS: 監聽程式: 所有適用例程都處於受限模式
SQL> conn scott/tiger@wilson as sysdba;
ERROR:
ORA-12526: TNS: 監聽程式: 所有適用例程都處於受限模式
試驗結果比較怪異,
1、restricted mode是一種連線模式,似乎受到監聽器的攔截;
2、繞過監聽器程式之後,要進行許可權驗證;
兩個條件均滿足,驗證了使用者是具有許可權,且是登入本地的使用者。
監聽器狀態有什麼特殊的嗎?
[oracle@oracle11g ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 04-JAN-2011 15:23:08
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 04-JAN-2011 14:55:16
Uptime 0 days 0 hr. 27 min. 52 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Services Summary...
Service "wilson" has 1 instance(s).
Instance "wilson", status RESTRICTED, has 1 handler(s) for this service...
Service "wilsonXDB" has 1 instance(s).
Instance "wilson", status RESTRICTED, has 1 handler(s) for this service...
The command completed successfully
看到,監聽器對於資料庫的狀態是瞭解的。這樣就可以理解監聽器報錯12526了。
恢復狀態
透過alter system命令,可以將資料庫系統從restricted mode轉化回正常模式。
SQL> alter system disable restricted session;
System altered.
//稍稍等待一下,因為動態註冊可能需要一會更新
SQL> conn scott/tiger@wilson;
Connected.
SQL> select count(*) from emp;
COUNT(*)
----------
14
Open狀態的系統限制訪問
在資料庫處在open狀態的時候,我們也可以透過alter system命令,強行將系統模式轉化到restricted mode。命令為:
SQL> alter system enable restricted session;
System altered.
這時,系統會轉入到restricted模式。注意,這個時候是可能有其他session正在連入資料庫,不同的結構是由不同的處理方式的。
ü 在單例項的環境中,如果系統沒有安裝Oracle Restart(Oracle管理一個工具),所有使用者會話都不會受到影響。所以,在轉換到restricted mode之後,進行管理工作之前,要手工的kill掉所有的使用者會話;
ü 在單例項的環境中,如果有Oracle Restart元件,所有被Oracle Restart管理的服務都被做離線處理,所有user session自動終止。沒有被Restart管理的服務的連線,是不會離線的;
ü RAC環境下,例項的服務都是被Oracle Clusterware管理,都會自動終止掉。沒有被Clusterware管理的元件,是不會離線處理的;
Restricted Mode是一種管理工具,在管理生產環境的時候還是比較實用的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-683246/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- alter system enable restricted session 及 startup restrict 限制使用者登入RESTSession
- restricted_session_quiesce_suspendRESTSessionUI
- restrict session的含義RESTSession
- [20160513]Restrict Session與靜態監聽.txtRESTSession
- __restrictREST
- Restricted RowidsREST
- startup mount與startup restrict mount有何區別REST
- RESTRICT_REFERENCES的意思REST
- RESTRICT、QUIESCE和SUSPEND(三)RESTUI
- RESTRICT、QUIESCE和SUSPEND(二)RESTUI
- RESTRICT、QUIESCE和SUSPEND(一)RESTUI
- laravel session 與 php session配置LaravelSessionPHP
- 題解:AT_xmascon21_b Bad Mood
- MMNL absent for 9607 secs; Foregrounds taking over與status RESTRICTEDREST
- open資料庫時 force 與 restrict兩種模式的意思資料庫REST模式
- Session與CookieSessionCookie
- cookie與sessionCookieSession
- Restricted Mode of Instance Startup (291)REST
- oracle startup(nomount mount open restrict)OracleREST
- Restricted Operations of the Shared Server (132)RESTServer
- Connections to NOMOUNT/MOUNTED or RESTRICTED Databases FailRESTDatabaseAI
- Django Cookie與SessionDjangoCookieSession
- oracle的exclusive和restricted啟動方式OracleREST
- 淺談Oracle的受限模式(Restricted Mode)Oracle模式REST
- plsql語法之_PRAGMA RESTRICT_REFERENCES()SQLREST
- 12.29 Our club membership is restricted to twenty.REST
- Cookie與Session 關係CookieSession
- session與sessionStorage 關聯Session
- Cookie與Session詳解CookieSession
- cookie與session的使用CookieSession
- PHPCookie與Session的使用與區別PHPCookieSession
- 關於ORACLE RESTRICT模式,以及START OPEN RECOVEROracleREST模式
- Laravel Session——session 的啟動與執行原始碼分析LaravelSession原始碼
- localStorage 與 sessionStorage / cookie 和 sessionSessionCookie
- session與登入機制Session
- cookie與session原理簡要CookieSession
- 聊一聊JWT與sessionJWTSession
- session與cookie的異同SessionCookie