sqlplus / as sysdba登陆失败,(ORA-01017)

周一上班检查alert log,看到某个库报出大量的错误 提示无法连接到ASM实例,这是某知名MES厂商DBA创建的11G RAC刚刚​转交到我手上的,这又是给我挖了什么坑?

报错为ORA-01017​用户名密码不对?​what?

登陆oracle 用户发现本机也无法直接以sqlplus / as sysdba登陆

登陆grid 也无法用sqlplus / as sysasm登陆?

难道关闭了​本地操作系统认证?先以sys用户名和密码登陆查看

remote_login_passwordfile参数为默认值EXCLUSIVE,也就是没有关闭本地操作系统认证​。

引申​:

Oracle登录验证方式包括口令验证和操作系统认证。 操作系统认证,就是Oracle认为操作系统用户是安全的,在使用sqlplus登录时,不校验用户密码,直接登录。 口令认证,就是指Oracle认为操作系统用户是不安全的,需要通过口令文件进行账号密码验证。Oracle的口令文件一般存放在ORACLE_HOME/dba/目录下,名字为orapw+sid。Oracle通过初始化参数remote_login_passwordfile限制口令文件的使用,这里详细介绍下: **1)NONE** remote_login_passwordfile=none表示,登录时禁用口令文件验证,sysdba用户只能通过操作系统认证登录数据库,其他方式的登录,比如PL/SQL,就会报前面提到的ORA-01017错误。操作系统认证方式涉及sqlnet.ora(ORACLE_HOME/network/admin目录下)中的参数SQLNET.AUTHENTICATION_SERVICES: a) NONE:关闭操作系统认证,只能通过口令文件认证;---- b) ALL: linux/unix平台下,采用操作系统认证,但远程sysdba登录仍然需要口令文件认证。 c) NTS: windows平台下操作系统认证。 2) EXCLUSIVE remote_login_passwordfile=exclusive表示,独占模式使用口令文件,这个是默认值,用在单数据库的单实例环境中。这种模式下,可以对sysdba用户进行增加、修改、删除,同时可以修改sysdba用户密码,记录到密码文件中。 查看被授予sysdba权限的用户:

复制代码
SELECT USERNAME FROM V$PWFILE_USERS WHERE SYSDBA='TRUE';

3) SHARED 这种模式下,可以在多个数据库间共享使用口令文件,口令文件不可被修改,包括不能修改sys用户密码。Oracle建议首先将需要sysdba权限的用户在excusive模式下设置好,然后修改remote_login_passwordfile修改为shared共享口令文件。 修改方法:

复制代码
alter system set remote_login_passwordfile=shared scope=spfile;

静态参数 需要重启数据库生效。 通常linux直接sqlplus / as sysdba 无法登陆一般都是因为修改了remote_login_passwordfile参数导致,但是此处明显不是的。

继续按alert log的报错查看mos,发现有这么一篇文档

|---------------------------------------------------------------------------------------------------------------------------------|
| ORA-01017: invalid username/password; logon denied WARNING: ASM communication error: op 18 state 0x40 (1017) (Doc ID 2292526.1) |

文档提示 当对oracle/grid添加到新的group时 由于dba组比asmdba组靠前会导致这个报错,上周确实因为无法su 将oracle/grid 添加到wheel组(这到底给我挖了多少坑?)

检查 oracle/grid的用户属性

​WTF?只有一个oinstall组,dba asmdba​等等根本都没有?怪不得本地无法登陆!原因找到了解决就很简单了,将oracle/grid缺失的组都加上

复制代码
 usermod -g oinstall -G asmdba,dba,oper oracle usermod -g oinstall -G asmadmin,asmdba,asmoper,dba,oper grid 检查用户组cat /etc/group​oinstall:x:1003:asmadmin:x:1200:gridasmdba:x:1201:oracle,gridasmoper:x:1202:griddba:x:1300:oracle,gridoper:x:1301:oracle,grid

修改后确认 oracle/grid 可以正常登陆

本文涉及到的知识点

  1. 本地登陆认证相关参数remote_login_passwordfile

  2. grid新加用户组时 asmdba组需要放在dba组前

参考文档

ORA-01017: invalid username/password; logon denied WARNING: ASM communication error: op 18 state 0x40 (1017) (Doc ID 2292526.1)

https://www.cnblogs.com/yutianqi/p/4967777.html

相关推荐
风哥2号1 小时前
数据库教程FGMT27‑MySQL数据库基础知识与体系架构
数据库·mysql
YangYang9YangYan2 小时前
2026 校招商品分析岗位 JD 拆解,核心指标、工具与面试考点
大数据·数据库·数据分析
西安栈上月明软件科技3 小时前
从业务黑话到本体图谱:OAG本体建模五步法(西安老系统AI化改造实战)
数据库·人工智能·架构
anxiao_m3 小时前
跨云跨机房大数据迁移怎么选?不同场景工具适配指南
数据库·云启快传
风哥2号5 小时前
数据库教程FGMT43‑MySQL性能分析与优化调整
数据库·mysql
随身数智备忘录6 小时前
财务数据分析如何与业务场景结合?财务数据分析如何从数出有据到数出有用?
数据库
这个DBA有点耶7 小时前
数据库教程:从零基础到实战的完整学习路径(2026版)
数据库·程序员·代码规范
forestsea7 小时前
从零构建 Java 智能体 RAG 系统:Milvus 向量数据库实战指南
java·数据库·milvus
probex_8 小时前
从 ByConity 到 VictoriaMetrics:一次指标数据迁移引发的四种存储对比
数据库
Patrick在香港9 小时前
Python 审计香港开放数据目录:两个端点差 10 倍,只有 9.3% 的资源标了「最后修改时间」
开发语言·数据库·python·数据分析·api·数据治理·开放数据