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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本