windows平台下的oracle ORA-01031的解決方法


今天下午遇到一個很怪異的問題,在windows平台下sqlplus / as sysdba登陸數據庫,提示權限不足,
在這里插入圖片描述

當時就納悶了,sys用戶登陸數據庫還能權限不足,問題出現了,就開始尋找解決方法唄

首先查看$ORACLE_HOME/network/admin/sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES項的配置信息,

網上的大多數帖子一致結論為:

    在windows平台上,SQLNET.AUTHENTICATION_SERVICES必須設置為NTS或者ALL才能使用操作系統驗證,不設置或者設置為其他都能使用操作系統驗證

    在linux平台上,SQLNET.AUTHENTICATION_SERVICES必須設置為ALL或者不設才能使用操作系統驗證,設置為其他則不能使用操作系統驗證

好,那就先看sqlnet.ora

在這里插入圖片描述可以看到該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,

不查不知道,一查嚇一跳,我當前以administrator用戶登陸,但是沒有將其加入到ORA_DBA組里,原因找到

將administrator用戶加入到ORA_DBA組里

具體流程如下:

①找到如下圖的工具

在這里插入圖片描述

②右鍵如下圖紅色框框中選項,選擇添加或者刪除選項

在這里插入圖片描述

③右鍵如下圖,選擇添加或者刪除選項

在這里插入圖片描述

如下圖這是添加之后的截圖

在這里插入圖片描述

再登陸數據庫:sqlplus   / as sysdba

在這里插入圖片描述

ok,問題解決!
寫到這我只想跟大家說一句,自給自足,解決問題的能力太重要了。一起共勉!!!

原文:https://blog.csdn.net/qq_37344125/article/details/89435202


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM