Oracle的身份驗證

dba_manganese發表於2014-03-05
Oracle 身份驗證方式有如下幾種:
  1. 作業系統身份驗證
  2. 口令檔案驗證
  3. 口令身份驗證
  4. 外部身份驗證
  5. 全域性身份驗證
前兩項技術僅供管理員使用(也是我試圖理解的內容),最後一項技術要求使用 LDAP 目錄伺服器,LDAP 目錄伺服器是 Oracle Internet Directory(OID),作為 Oracle 應用伺服器的一部分發布。

一、作業系統身份驗證
這種身份驗證說白了就是通過作業系統使用者登入資料庫,但是有一個前提不能忽視,即該作業系統使用者必須為dba(Linux系統)或ORA_DBA組成員。說的更直接一點,也就是oracle使用者了,呵呵!在Oracle中通過兩個引數決定使用者的身份驗證是否為作業系統身份驗證,這兩個引數說明如下:
1、SQLNET.AUTHENTICATION_SERVICES
,該引數的取值為:
  • NONE:遮蔽作業系統身份驗證
  • NTS:特指windows環境中的作業系統身份驗證
  • ALL:兩種方式皆可。
注:該引數儲存在$ORACLE_HOME/network/admin/sqlnet.ora檔案中,如果沒有,可以手工建立一個。如果沒有配置該引數,oracle預設為作業系統身份驗證
2、remote_login_passwordfile,該引數為資料庫初始化引數,其取值為:
  • NONE:不使用口令檔案。
  • EXCLUSIVE:只有一個例項能使用密碼檔案。
  • SHARED:可以有多個例項使用密碼檔案,但是口令檔案只能識別SYS使用者。
登入方法:conn /as sysdba,conn /as sysoper,sqlplus "sys/abcdefg as sysdba",sqlplus "sys/123456 as sysdba" 等等。
登入限制:只能在本地使用。

二、口令檔案身份驗證
口令檔案身份驗證就是通過記錄在口令檔案中的使用者賬號和密碼實現登入資料庫的操作,oracle的口令檔案存放位置為:$ORACLE_HOME/dbs/orapwORACLE_SID,該檔案可以通過orapwd工具手動建立。
對於口令檔案身份驗證,我想只要理解了remote_login_passwordfile的exclusive和shared引數值的含義後,那麼一切問題就迎刃而解了。那麼讓我們用以下試驗來說明吧!
試驗一:
向口令檔案中新增一個使用者。
SQL> show parameter remote_login_passwordfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      EXCLUSIVE
OK,這是Oracle預設值!
接下來檢視一下口令檔案中的使用者數:
SQL> select * from v$pwfile_users;
USERNAME                  SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS                            TRUE  TRUE  FALSE
下面我們來給一個使用者授權:
SQL> grant sysdba to eric;
執行完後看看會發生什麼變化,再次查詢v$pwfile_users檢視:
SQL> select * from v$pwfile_users;
USERNAME                   SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS                            TRUE  TRUE  FALSE
ERIC                           TRUE  FALSE FALSE

試驗二:
使用口令檔案登記使用者遠端啟動資料庫。在實驗中使用windows登入虛擬機器的一個空閒例項,然後啟動資料庫。
C:\Users\Manganese>sqlplus eric/eric@prac as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 3月 5 21:09:56 2014
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
已連線到空閒例程。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area  839282688 bytes
Fixed Size                  2217992 bytes
Variable Size             499124216 bytes
Database Buffers          335544320 bytes
Redo Buffers                2396160 bytes
資料庫裝載完畢。
資料庫已經開啟。

實驗三:
當remote_login_passwordfile=shared時,向口令檔案中新增使用者。
SQL> show parameter remote_login_passwordfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile            string      SHARED
SQL> grant sysdba to scott;
grant sysdba to scott
*
ERROR at line 1:
ORA-01999: password file cannot be updated in SHARED mode
看吧,報錯了,不能新增使用者的,我在前面已經做了說明。

三、參考資料
Oracle的官方文件:http://docs.oracle.com/cd/B28359_01/server.111/b28310/dba007.htm#ADMIN10241


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

相關文章