今天下午遇到一個很怪異的問題,在windows平台下sqlplus / as sysdba登陸資料庫,提示許可權不足,
650) this.width=650;" title="QQ圖片20130608164853.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223A03R9-0.jpg" />
當時就納悶了,sys使用者登陸資料庫還能許可權不足,問題出現了,就開始尋找解決方案唄
首先查看$ORACLE_HOME/network/admin/sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES項的配置資訊,
網上的大多數文章一致結論為:
在windows平台上,SQLNET.AUTHENTICATION_SERVICES必須設定為NTS或者ALL才能使用作業系統驗證,不設定或者設定為其他都能使用作業系統驗證
在linux平台上,SQLNET.AUTHENTICATION_SERVICES必須設定為ALL或者不設才能使用作業系統驗證,設定為其他則不能使用作業系統驗證
好,那就先看sqlnet.ora
650) this.width=650;" title="QQ圖片20130608172206.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223A040K-1.jpg" />
我的SQLNET.AUTHENTICATION_SERVICES是NTS啊,那又是什麼原因呢,再找
再分析一下作業系統使用者登入作業系統後再訪問資料庫執行個體的行為。
使用sysdba 身份串連資料庫執行個體,使用的認證方式是作業系統認證,而這一認證操作過程是作業系統根據它管理的資訊去校正該使用者是否可以串連資料庫的過程。
因此,需要進一步分析的是,作業系統如果判斷oracle 使用者符合認證條件。很顯然,我們這裡的oracle 使用者的許可權被作業系統或者oracle 系統拒絕了。
Oracle 認為,需要滿足下列條件的使用者才能使用系統認證方式串連資料庫執行個體。
1 、系統使用者oracle 必須屬於一個特定的組
該使用者必須屬於OSDBA 組才能以sysdba 身份登入。這裡的OSDBA 組在不同類型的操作系 統 上,名稱會不一樣。在unix 系統上名稱為“dba ” ,而在windows 系統上名稱則為“ORA_DBA ” 。
2 、sqlnet.authentication_services 的參數必須設定正確
在unix 系統上,該參數值必須設定為ALL ,或者不設定;在windows 上,它必須設定為NTS
再看看,當前登入使用者有沒有加入到ORA_DBA,
650) this.width=650;" title="QQ圖片20130608174103.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223A0J64-2.jpg" />
壞了,我當前以administrator使用者登陸,但是沒有將其加入到ORA_DBA組裡,原因找到
將administrator使用者加入到ORA_DBA組裡
650) this.width=650;" title="QQ圖片20130608174404.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223A04958-3.jpg" />
再登陸資料庫:sqlplus / as sysdba
650) this.width=650;" title="QQ圖片20130608174526.jpg" src="http://www.bkjia.com/uploads/allimg/131228/223A04K1-4.jpg" />
ok,問題解決!
本文出自 “挨踢小蝌蚪” 部落格,請務必保留此出處http://chunke.blog.51cto.com/2753715/1219092