Oracle DG库数据不同步/断开问题
问题归类
数据库管理员经常遇到Oracle DG库同步断开的问题,问题原因主要归为以下几个方面:
- 主库到DG库网络延迟高;
- DG库磁盘损坏,导致归档日志有问题;
- 数据库密码修改导致归档日志无法传到备库,rfs进程启动不了;
排查过程
发现数据不同步,排查过程如下:
1.主库,dg库,检查mrp进程、rfs进程是否在线:
SELECT PROCESS, CLIENT_PROCESS, SEQUENCE#, STATUS FROM V$MANAGED_STANDBY;
如mrp进程不在线,则:
alter database recover managed standby database cancel;
——关闭mrp进程
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY PARALLEL 2 USING CURRENT LOGFILE DISCONNECT FROM SESSION;
——启动mrp进程
2.备库,查看已归档日志的最大序列号
SELECT THREAD#, MAX(SEQUENCE#) FROM V$LOG_HISTORY GROUP BY THREAD#;
3.主库,进入归档日志目录,查看主库归档日志最大序列号;
(归档日志路径)
SHOW PARAMETER log_archive_dest_;
对比主库最大序列号,如相差太远,则需重建,如相差不远,则重启mrp进程;
如重启mrp进程时,发现还是无法同步、归档日志传不过去,alert日志无明显报错,大概率时密码文件的问题,需重传主库的密码文件至备库。
alert日志路径:
$ORACLE_BASE /diag/rdbms/<DB_UNIQUE_NAME>/<ORACLE_SID>/trace
eg:/u01/app/oracle/diag/orcl/ORCL/trace
<DB_UNIQUE_NAME>:数据库唯一标识符,同一dataguard环境中,主库和备库的DB_UNIQUE_NAME必须不同,而DB_NAME可以相同
SELECT DB_UNIQUE_NAME FROM V$DATABASE;
4.在主库建表,看备库是否同步
create table test20251124 as select * from v$parameter where rownum <=50;
其它常用语句
主库切日志:
alter system switch logfile;
--断开DG库同步之前做一下,或者检查主库DG库归档日志是否能正常传输
SELECT * FROM V$ARCHIVE_GAP; /*检查是否存在GAP*/
alter system set log_archive_dest_state_2=defer;
--断开主库归档日志传输
--备库关闭同步并启动到读写
alter database recover managed standby database cancel;
alter database activate standby database;
alter database open;
select open_mode from v$database;
--主库开启日志传输
alter system set log_archive_dest_state_2=enable;
show parameter log_archive_dest_state_2;
log_archive_dest_state_2:
log_archive_dest_1:通常配置 “主库本地归档路径”;
log_archive_dest_2:通常配置 “向 DG 备库传输归档的目的地”;
ENABLE:启用该目的地(主库会向这个目的地归档 / 传输日志);
DISABLE:禁用该目的地(停止向这个目的地归档 / 传输);
DEFER:延迟启用(暂时不传输,后续可手动激活)。
log_archive_dest_2是 “目的地的地址 / 规则配置”(相当于 “填备库的联系方式”);
log_archive_dest_state_2是 “这个联系方式是否生效的开关”(相当于 “是否允许给这个备库发日志”)
1297

被折叠的 条评论
为什么被折叠?



