背景
在做节前环境巡检时,发现数据库alert日志在2022-09-29 00:10:14的时候突然报ora-16191,一直报到现在。ora-16191一般为主备库的密码不致导致的。但0点不可能有人为操作,备份及日志清理脚本也不会影响到密码文件。因此主备库的密码文件应该是不会有什么变更的,这个问题就很有奇怪了。
- alert 报错日志:
thu sep 29 00:10:14 2022
error 1017 received logging on to the standby
------------------------------------------------------------
check that the primary and standby are using a password file
and remote_login_passwordfile is set to shared or exclusive,
and that the sys password is same in the password files.
returning error ora-16191
------------------------------------------------------------
fal[server, arc2]: error 16191 creating remote archivelog file 'standby1'
fal[server, arc2]: fal archive failed, see trace file.
arch: fal archive failed. archiver continuing
oracle instance db - archival error. archiver continuing.
- dg同步时间监控也没有预警:(此库为数据变动很小的库)
按理来讲都同步异常2天了,为什么这个值还是00 00:00:00,看来监控脚本再优化一下了。
-- dg同步时间报警监控是根据下面的查询写的监控脚本
-- 该值表示在通过在备库上应用主库传递过来的重做日志与出库同步所延迟的时间。
sql> select value from v$dataguard_stats where name='apply lag';
value
--------------------
00 00:00:00
复现测试
- 参数:remote_login_passwordfile
sql> show parameter remote_login_passwordfile
name type value
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string exclusive
测试一:
- 数据库版本:release 11.2.0.3.0
- 主库修改密码,不同步密码文件
1、主库修改sys密码
sql> alter user sys identified by oracle;
user altered.
2、log_archive_dest_state_2 禁用再启用
-- 主库操作:禁用log_archive_dest_state_2
sql> alter system set log_archive_dest_state_2='defer';
system altered.
sql> alter system set log_archive_dest_state_2='enable';
system altered.
-- 切归档:
sql> alter system switch logfile;
-- 查看主库的alert 日志:
tue nov 08 10:42:37 2022
alter system set log_archive_dest_state_2='defer' scope=both;
tue nov 08 10:42:50 2022
alter system set log_archive_dest_state_2='enable' scope=both;
tue nov 08 10:42:50 2022
error 1031 received logging on to the standby
ping[arc2]: heartbeat failed to connect to standby 'standby1'. error is 1031.
-- 查看报错:
sql> select dest_name,status,error from v$archive_dest where dest_id=1 or dest_id=2;
dest_name status error
-------------------- -------------------- ------------------------------------------------------------
log_archive_dest_1 valid
log_archive_dest_2 error ora-01031: insufficient privileges
报错:ora-01031: insufficient privileges
3、查看备库的同步状态
-- 同步时间:
sql> select value from v$dataguard_stats where name='apply lag';
value
--------------------
00 00:00:00
-- 进程:
sql> select process,status,client_process,thread#,sequence# from v$managed_standby;
process status client_p thread# sequence#
--------- ------------ -------- ---------- ----------
arch closing arch 1 7133
arch closing arch 1 7134
arch connected arch 0 0
arch closing arch 1 7132
mrp0 wait_for_log n/a 1 7135
rfs idle unknown 0 0
rfs idle unknown 0 0
rfs idle unknown 0 0
rfs idle unknown 0 0
1、apply lag 的 value : 00 00:00:00
2、mrp0、rfs:进程存在
测试二:
- 数据库版本:release 11.2.0.4.0
- 主库修改密码,不同步密码文件
-- 修改sys 密码:
sql> alter user sys identified by oracle;
user altered.
sql> alter system set log_archive_dest_state_2='defer';
system altered.
sql> alter system set log_archive_dest_state_2='enable';
system altered.
-- alert 日志:
alter system set log_archive_dest_state_2='defer' scope=both;
alter system set log_archive_dest_state_2='enable' scope=both;
tue nov 08 15:45:16 2022
error 1017 received logging on to the standby
------------------------------------------------------------
check that the primary and standby are using a password file
and remote_login_passwordfile is set to shared or exclusive,
and that the sys password is same in the password files.
returning error ora-16191
------------------------------------------------------------
报错:ora-16191: primary log shipping client not logged on standby
总结
1、sys主备库密码不一致不同版本报错不一样:
oracle 版本:11.2.0.3 报错为:ora-01031: insufficient privileges
oracle 版本:11.2.0.4 报错为:ora-16191: primary log shipping client not logged on standby
2、11g 修改sys 或密码文件均需要同步至备库,否则将影响同步,12c以oracle推出了db passwd asm存储的特性,rac to rac adg的情况下,db的口令文件存储在asm中,那么主库修改的操作,可以同步到dg环境,避免每次修改都需要人为修改!
3、在密码不一致的情况下,主库报错:ora-01031或ora-16191后,备库v$dataguard_stats视图:apply lag 的值依然: 00 00:00:00。
进程rfs、mrp0未见异常,可能随着时间长会有更新变动。但根据v$dataguard_stats 的apply lag 值做同步时间监控,就不是很敏感了。
4、从测试上来看,密码修改或密码文件清除,如果不立即启动重传归档的话,不影响归档传输。回到我开头的问题,应该是之前修改过sys密码,没有同步密码文件。本身库数据变化就少,归档也没多少,所以等了几天后触发了重传归档,才有了0点才出现报错的问题。
解决
- 1、ora-01031、ora-16191 一般均为密码不一致导致,同步密码文件即可解决。
- 2、关于同步延迟敏感问题,对主库和备库的scn号进行对比监控,从而提高敏感度。
脚本实现逻辑:standby_time 监控
文章推荐
《oracle_索引重建—优化索引碎片》
《oracle 自动收集统计信息机制》
《oracle 脚本实现简单的审计功能》
《oracle 监控表空间脚本 每月10号0点至06点不报警》
《dba_tab_modifications表的刷新策略测试》
《fy_recover_data.dbf》
《oracle rac 集群迁移文件操作.pdf》
《oracle date 字段索引使用测试.dbf》
《oracle 诊断案例 :因应用死循环导致的cpu过高》
《oracle 慢sql监控脚本》
《oracle 慢sql监控测试及监控脚本.pdf》
《记录一起索引rebuild与收集统计信息的事故》
《rac dg删除备库redo时报ora-01623》
《ash报告发现:os thread startup 等待事件分析》
《问答榜上引发的oracle并行的探究(一)》
《问答榜上引发的oracle并行的探究(二)》
– 安装系列
文章推荐
《oracle_19c_linux安装.pdf》
《oracle 19c-手工建库.pdf》
《19c单库升级19.11补丁.pdf
19c_rac补丁《19.11-p32841500》.pdf
《oracle_图形-单实例11.2.0.4升级19.3.pdf
《oracle_11.2.0.3升级11.2.0.4–单实例升级.pdf
《oracle_静默-单实例 11.2.0.4升级19.3.pdf
《centos_6.7系统一步一步 rac 11.2.0.4升级19.3.pdf
《整理后_rac_11.2.0.4升级19c.pdf
欢迎赞赏支持或留言指正