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

相关推荐
FJW02081416 分钟前
关系型数据库大王Mysql——DDL语句操作示例
数据库·mysql
言之。16 分钟前
Chroma 开源的 AI 应用搜索与检索数据库(即向量数据库)
数据库·人工智能·开源
来旺21 分钟前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
cr7xin1 小时前
基于Session和Redis实现短信验证码登录
数据库·redis·缓存
乌暮1 小时前
数据库--视图、索引
数据库
Web3&Basketball2 小时前
达梦数据库性能调优总结
数据库·oracle
-Xie-2 小时前
Mysql杂志(三十三)——锁
数据库·mysql
情深不寿3172 小时前
MySQL————索引
数据库·mysql
三十_2 小时前
TypeORM 一对一关联篇:掌握实体关系与 JoinColumn
数据库
Brianna Home2 小时前
博客安全攻防演练:从攻击者视角构筑铜墙铁壁
网络·数据库·安全·oracle