暂无图片
ADG一主两备日志序列不同步问题
我来答
分享
我姓陈我心沉💘 💘
2022-06-23
ADG一主两备日志序列不同步问题

各位路过的大佬,中午好,请教如下问题:

   数据库版本19C

    原先数据库使用的架构-ADG的一主一备,先因机房扩建需增加一台数据库故ADG的架构增加为一主三备,在ADG一主一备时日志同步均正常,但是在增加了另一台备后ADG的日志序列号出现问题,具体的操作步骤如下

ADG主地址+dbnameADG备1地址+dbnameADG备2地址+dbname
10.0.4.2+aaa10.0.4.3+aaadg10.0.4.4+aaadgbei

ADG主的新增加的操作配置:

alter system set db_file_name_convert='/mnt/oracle/app/oradata/aaaDG/datafile','/mnt/oracle/app/oradata/aaa','/mnt/oracle/app/oradata/aaadgBEI/datafile','/mnt/oracle/app/oradata/aaa' scope=spfile sid='*';
alter system set log_archive_config='dg_config=(aaa,aaadg,aaadgbei)' scope=spfile sid='*';
alter system set log_archive_dest_3='service="aaa_stdbei"','SYNC AFFIRM delay=0 optional compression=disable max_failure=0 reopen=300 db_unique_name="aaadgbei" net_timeout=30','valid_for=(online_logfile,all_roles)' scope=spfile sid='*';
alter system set LOG_FILE_NAME_CONVERT='/mnt/oracle/app/oradata/aaaDG/onlinelog','/mnt/oracle/app/oradata/aaa','/mnt/oracle/app/oradata/aaaDGBEI/onlinelog','/mnt/oracle/app/oradata/aaa scope=spfile sid='*';
alter system set log_archive_dest_state_3='ENABLE';
alter system set fal_server='aaa_STD','aaa_STDBEI' scope=spfile sid='*'; 

ADG备库1新增加的配置

alter system set fal_server='aaa_PRI','aaa_STDBEI' scope=spfile sid='*';

ADG备库2配置简写

alter system set fal_server='aaa_PRI','aaa_STD' scope=spfile sid='*';

adg备库1和备库2的路径都是差不多改一下路径即可配置我就不放了,因我的三个数据库的路径都是不一样的所以需要修改路径,我在想是不是因为我的fal_server配置的不对导致的序列查询不一致,如下是查询日志序列的截图

主库查询:

SQL> select UNIQUE THREAD#,max(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM v$archived_log;

THREAD# LAST
---------- ----------
1 2177

备库1查询:

SQL> select UNIQUE THREAD#,max(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM v$archived_log;

THREAD# LAST
---------- ----------
1 558

备库2查询

SQL> select UNIQUE THREAD#,max(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM v$archived_log;

   THREAD# LAST
---------- ----------
1 558

SQL> select process,status from v$managed_standby; //备库均可以查看到mpr0进程

PROCESS STATUS
--------- ------------
ARCH CLOSING
DGRD ALLOCATED
DGRD ALLOCATED
ARCH CONNECTED
ARCH CLOSING
ARCH CONNECTED
RFS IDLE
RFS IDLE
RFS IDLE
RFS IDLE
MRP0 APPLYING_LOG
11 rows selected.

我进行了adg的主备切换,切换后数据也是可以进行实时同步的,现在就是这个日志最新的日志号对不上,这个怎么排查呢?谢谢

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
我姓陈我心沉💘 💘

此问题已经找到原因

原因是因为我在新增加另一台备库的时候没有取消同步就开始了rman同步造成的

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
杨卓

没有注意dg切换后,主库产生新的redo sequence编号的改变;
你现在看Mrp进程是正常的,但是你的排查或者方向有问题。 建议你查询主库current sequence# thread#, 然后再去观察dg是否接收这个sequence是否应用。 如果是正常的,那么可能是你的dg切换导致切换前sequence max 2177,dg切换后sequence出现改变比2177小,所以你看着不一样。

先排查问题! 另外就是确认库current sequence# thread#, 然后再去观察dg是否接收这个sequence是否应用。 这块OK说明主备正常就行了。

暂无图片 评论
暂无图片 有用 0
打赏 0
我姓陈我心沉💘 💘
题主
2022-06-24
您好,首先感谢您的解答,我检查了下备库已经接收并且应用了sequence,主库的查询: SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS; ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ log writer 1 587 WRITING redo transport monitor 0 0 IDLE gap manager 1 587 IDLE redo transport timer 0 0 IDLE broker net slave 0 0 IDLE ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ broker worker 0 0 IDLE 17 rows selected. 备库的查询: SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS; ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ log writer 0 0 IDLE ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ broker monitor 0 0 IDLE recovery logmerger 1 587 APPLYING_LOG ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ RFS ping 1 587 IDLE RFS archive 0 0 IDLE RFS sync 1 587 IDLE 28 rows selected.
回答交流
Markdown


请输入正文
提交