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

相关推荐
Mr.1327 分钟前
数据库的三范式是什么?
数据库
Cachel wood33 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Python之栈40 分钟前
【无标题】
数据库·python·mysql
风_流沙1 小时前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
亽仒凣凣1 小时前
Windows安装Redis图文教程
数据库·windows·redis
亦世凡华、1 小时前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
YashanDB1 小时前
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
数据库·yashandb·崖山数据库
ProtonBase1 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
云和数据.ChenGuang7 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys7 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver