oracle rac dg库报错ORA-01031: insufficient privileges

一、问题现象:

今天由于要开审计,把主库的rac节点重启了下,然后rac的其中一个节点传输给dg库的进程报错ORA-01031: insufficient privileges,具体如下所示:

rac1报错:

SQL> select status ,error from v$archive_dest where dest_id=3;

STATUS ERROR

-----------------------------------------------------------------------

ERROR ORA-01031: insufficient privileges

错误日志:

Error 1031 received logging on to the standby

PING[ARC1]: Heartbeat failed to connect to standby 'hxedg'. Error is 1031.

rac2正常:

SQL> select status ,error from v$archive_dest where dest_id=3;

STATUS ERROR

------------------------------------------

ERROR

二、问题原因排查:

尝试把报错的主库节点的口令文件传输到dg库,然后把主库重启下归档参数

alter system set log_archive_dest_state_3=defer;

alter system set log_archive_dest_state_3=enable;

如果发现之前好的节点,开始报同样错了,那么基本上可以判断出是因为rac的两个节点的口令文件不一致导致的!rac两个节点的口令文件不一样,最大可能就是修该sys这类的密码没只在一个节点执行了

三、解决办法:

方法1:rac两个节点的口令文件不一样,最大可能就是修该sys这类的密码没只在一个节点执行了!

把rac2(主从正常的节点)的口令文件传输到其他rac节点,同时传输给dg库,基本上可以解决问题;

scp orapwHRAPP2 oracle@节点B:/home/oracle

scp orapwHRAPP2 oracle@节点dg:/home/oracle

然后等一会没有自动恢复,那就尝试在报错的主库执行如下:

alter system set log_archive_dest_state_3=defer;

alter system set log_archive_dest_state_3=enable;

如果还是没解决,

那么使用方法2:

1、随便找一个节点A执行修改密码命令:

alter user sys identified by "D0TszIoPbQxlIV0.";

3、把节点A上的口令文件 依次传输给 另一个节点B,以及dg库

scp orapwHRAPP2 oracle@节点B:/home/oracle

scp orapwHRAPP2 oracle@节点dg:/home/oracle

四、 sys(sysdba用户组成员)用户有两种认证方式:

1、操作系统认证方式 在本地服务器(数据库所在服务器)登录数据库

oracle将用户认证由操作系统在数据库外执行,默认情况下只需要以oracle账户登录操作系统便可以直接连接数据库,不需要口令。

如果需要口令认证,需要在$ORACLE_HOME/dbs/sqlnet.ora,加入如下行:

SQLNET.AUTHENTICATION_SERVICES=NONE

此时连接数据库就需要输入用户和密码了

2、数据库认证方式 通过在数据库配置文件里(spfile)里配置REMOTE_LOGIN_PASSWORDFILE指定远程登录访问数据库的方式

a、none

Oracle ignores any password file. Therefore, privileged users must be authenticated by the operating system

不允许sysdba用户组成员远程登录访问数据库

b、exclusive

The password file can be used by only one database. The password file can contain SYS as well as non-SYS users.

只允许口令文件用于本数据库,允许sysdba用户组成员远程登录访问数据库

c、shared

One or more databases can use the password file. The password file can contain SYS as well as non-SYS users.

允许其他数据库使用该口令文件,允许sysdba用户组成员远程登录访问数据库

五、主库为Oracle rac ,主库修改sys账号密码注意事项:

sys远程登录需要以sysdba的角色登录,并且需要借助口令文件!但是Oracle rac alter修改sys密码的时候只会修改当前节点的口令文件!所以如果你需要修改sys这类的账号,就需要在rac的所有节点都执行,否则没执行的节点 ,sys无法远程登录!

rac修改sys密码方法1:需要在rac两个节点都要执行: alter user sys , 因为修改sys的账号的时候会自动修改本节点口令文件!,这样sys照样可以远程登录所有节点!

rac修改sys密码方法2:一个节点执行alter user sys,然后scp口令文件到另一个节点!

总结:

RAC环境下对于SYSDBA权限密码更改注意事项:

对于RAC环境,修改拥有SYSDBA权限的用户密码的时候,应该在每个实例上都执行,否则会造成密码文件的不一致。

请使用浏览器的分享功能分享到微信等