备库的账号状态显示是open的,但是连接显示ORA-28000

问题:

Dataguard环境里面,明明在primary已经unlock了账号,并且检查账号在primary和standby都是unlock状态,但是当你远程登录备库的时候就会抛出28000的错误

原因:

1)在备库,如果登录失败了n次之后,接下来就会抛出ORA-28000。如果接下来你把备库重启了,那么账号的状态就会显示为open。

这是因为备库的账号状态会保持和SYS.USER_ASTATUS_MAP一致。

但是因为这是只读的备库,所以是这个表也是从主库同步过来的。

因为主库并没有遇到多次登录尝试失败的情况,所以主库的账号还是显示open的,因此一旦备库重启,数据库就会重新从这里获取表的状态,也就是这个账号还是open的(从primary获取)。

这也就是为什么重启备库后就不会再抛出ORA-28000的原因

2)当你尝试登陆备库,遇到ORA-28000的时候,如果你去检查dba_users表的account_status列,你看到的还是这个账号是OPEN的,实际上不是。

这是因为尝试失败后,虽然账号被锁住,但是因为备库的数据只能和主库同步,所以它是不会被更新的。

 

注意:你在备库尝试alter user XXX account unlock 是不会成功的,数据库会告诉你账号的状态是和主库同步的,所以只能到主库解锁。

posted @ 2019-10-21 23:27  Ryan_Wo  阅读(279)  评论(0编辑  收藏  举报