周一上班检查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:grid
asmdba:x:1201:oracle,grid
asmoper:x:1202:grid
dba:x:1300:oracle,grid
oper:x:1301:oracle,grid
修改后确认 oracle/grid 可以正常登陆
本文涉及到的知识点
-
本地登陆认证相关参数remote_login_passwordfile
-
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