oracle登入時的身份驗證

2021-05-24 15:07:13 字數 3155 閱讀 1002

環境:windows 7     oracle 10g

使用 sqlplus /nolog     --即no logging

登入oracle之後,conn / as sysdba顯示結果:已連線到空閒例程。此時例項未啟動,資料庫未裝載和開啟,不能操作sql語句。用startup啟動例項之後才會裝載資料庫。在cmd介面使用lsnrctl status命令可以看到,此時服務「pl***tproc」會包含乙個例程pl***tproc,狀態為unknown。

sqlplus /nolog,conn /as sysdba 之所以能夠登入,在於oracle登入時的身份認證方式。oracle登入時有os認證和口令檔案認證兩種方式。
1、os認證和口令檔案認證其實質是對oracle資料庫採取何種管理方式,是本地管理還是通過一台管理伺服器統一管理。
本地管理採用的就是os認證方式,統一管理採用的就是口令檔案認證方式 。
2.oracle資料庫通過sqlnet.ora檔案中的引數sqlnet.authentication_services,pfile(或spfile)檔案中的引數
remote_login_passwordfile和口令檔案pwdsid.ora三者協同作用實現身份認證。
sqlnet.authentication_services=(nts)|(none) 

sqlnet.authentication_services=(nts): 作業系統認證方式,不使用口令檔案 

sqlnet.authentication_services=(none):口令檔案認證方式 

remote_login_passwordfile=(none)|(exclusive)|(shared) 

remote_login_passwordfile=(none):不使用口令檔案,作業系統認證 

remote_login_passwordfile=(exclusive):口令檔案認證方式,但只有乙個資料庫例項可以使用此檔案, 

系統允許將sysoper/sysdba授予除internal/sys以外的其他使用者,且以具有這類身份的其他使用者登入是有效的 

remote_login_passwordfile=(shared):口令檔案認證方式,可有多個資料庫例項使用此檔案,但是此設定下 

只有internal/sys帳號能被識別,即使檔案中存有其他使用者的資訊,也不允許他們以sysoper/sysdba登入 

1)sqlnet.authentication_services=(nts)同時remote_login_passwordfile=(none),此時為作業系統認證方式。 

當以oracle_dba組下的使用者登入進入本地windows2000後進行下邊的操作: 

sqlplus /nolog 

sql>conn /as sysdba 

或 sqlplus /nolog 

sql>conn 任意使用者名稱/密碼 as sysdba 

均可以sysdba身份登入成功,進行資料庫方面的操作 

當以遠端進行登入時,執行 

sqlplus /nolog 

sql>conn /as sysdba 

或 sqlplus /nolog 

sql>conn sys/密碼 as sysdba 

均顯示 

「error: 

ora-01031: insufficient privileges 

」 也就是不允許以sysdba身份遠端登入系統,這也是os認證之所以也稱為本地認證方式的原因

可以這麼理解:
你當前電腦開機時登入的使用者,也就是進入作業系統的使用者,例如是gooooal,它在你電腦的ora_dba組中。

可以執行lusrmgr.msc,發現有乙個組叫「ora_dba」,雙擊它,看到成員列表中有「gooooal」。

也就是在conn /as sysdba,oracle會進行作業系統驗證,發現你當前登入的使用者就屬於ora_dba組,因此才可以登入成功。

你可以把ora_dba組中的「gooooal」使用者刪除,再conn /as sysdba,就發現進不去了。

2)sqlnet.authentication_services=(none)同時remote_login_passwordfile=(exclusive)或(shared),配合口令檔案 

pwdsid.ora,此時為口令檔案認證方式 

當在本地以oracle_dba組下的使用者登入進入windows2000後進行下邊的操作: 

sqlplus /nolog 

sql>conn /as sysdba 

顯示 「error: 

ora-01031: insufficient privileges 

」 實質上是要求提供擁有sysdba身份的使用者名稱和密碼 

在本地或遠端進行下邊的操作 

sqlplus "sys/密碼@服務名 as sysdba" 

可進入系統 

也就是說口令檔案認證方式允許使用者從本地或遠端以sysdba身份登入,但必須提供口令字 

3)sqlnet.authentication_services=(nts)同時remote_login_passwordfile=(exclusive)或(shared),

配合口令檔案pwdsid.ora,此時作業系統認證和口令檔案認證同時起作用
當在本地以oracle_dba組下的使用者登入進入windows2000後進行下邊的操作: 

sqlplus /nolog 

sql>conn /as sysdba 

可進入系統 

當在遠端執行 

sqlplus "sys/密碼@服務名 as sysdba" 

同樣可正常登入到資料庫系統上

從前邊的討論可以知道,我們能夠對sys以外的使用者賦予sysdba身份,具體方法就是 

sqlnet.authentication_services=(none) 

remote_login_passwordfile=(exclusive) 

口令檔案pwdsid.ora 

sql>grant sysdba to 使用者名稱 

這樣,其他具有sysdba身份的使用者就加入到pwdsid.ora中,並可以被pwdsid.ora識別,

我們可以用這個被賦予sysdba身份的使用者登入並進行類似sys使用者下所能執行的操作。

VS外掛程式開發 登入身份驗證

附加 很多朋友問那個vs背景怎麼弄的,我剛剛已經抽時間把製作步驟發出來了 請參見 vs外掛程式開發 個性化vs ide編輯器,瞬間 高 大 上 最近一直在忙著一些事情,一直沒有發文章了。正好這幾天在看vs外掛程式開發方面的東西,寫了個小程式,沒有什麼技術含量,不過還是有點意思的。呵呵。就是開啟vs的...

C 呼叫Web Service時的身份驗證

在專案開發,我們經常會使用webservice,但在使用webservice時我們經常會考慮以下問題 怎麼防止別人訪問我的webservice?從 引用我的webservice?對於第乙個問題,就涉及到了webservice是安全問題,因為我們提供的webservice不是允許所有人能引用 的,可能...

C 呼叫Web Service時的身份驗證

在專案開發,我們經常會使用webservice,但在使用webservice時我們經常會考慮以下問題 怎麼防止別人訪問我的webservice?從 引用我的webservice?對於第乙個問題,就涉及到了webservice是安全問題,因為我們提供的webservice不是允許所有人能引用的,可能只...