当前位置:网站首页>DataGuard日常维护常见问题之数据同步异常
DataGuard日常维护常见问题之数据同步异常
2022-08-02 22:54:00 【DBA大董】
造成日志无法传到standby 的原因有:
- standby 服务器异常
- standby 相应的进程异常
- standby 监听器服务异常
日志传输问题
1、一般通过以下语句查看primary数据库和standby数据库的归档日志的sequence是否一样。
先在primary数据库执行
SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
38
如果一样说明没有问题,
如果不一样说明日志没有归档。
首先确认standby是否开启了日志应用
SQL> alter database recover managed standby database disconnect from session;
如果已经开启。再确认归档位置是否可用。
SQL> select dest_name,status,error from v$archive_dest;
DEST_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
STATUS ERROR
------------------ -----------------------------------------------------------------
LOG_ARCHIVE_DEST_1
VALID
LOG_ARCHIVE_DEST_2
VALID
我遇到过这种情况:监听器没有监听到数据库
在操作系统Oracle用户登录查看监听器是否启动,lsnrctl stauts , lsnrctl start
用tnsping两个数据库是否正常,如果没有问题,在primary 数据库日志切换一次,看standby是否接收到归档日志了。
这几步没有问题就考虑数据库启动参数文件配置的问题了。
具体问题具体解决了。
排查思路
当 DG 出现故障时,第一时间检测 alert 日志,服务器 OS 日志,网络是否通畅。
当DG出现日志不能传输到备库:
一、查看是不是TNS配置错误和监听配置错误。
二、主备库初始化参数文件配置错误(如archive_log_dest文件位置错误)。
三、备库控制文件过旧,从主库生成一个STANDBY CONTROL过去。SQL> alter database create standby controlfile as '/bnerp_data1/bnerp/cntrl01.dbf';。
四、备库是否应用了Failovers 。
GAP处理
下面就简单说说手工处理日志GAP的步骤:
1、在备库检查是否有日志缺失
SQL> select * from V$ARCHIVE_GAP;
2、在主库中查询缺失的日志的所在路径和名称
SQL> SELECT NAME FROM V$ARCHIVED_LOG
如果把日志移动到其他路径,则把日志所在路径换成当前实际所在路径。
3、把日志拷贝到备库上
4、在备库上手工注册上一步中从主库拷贝来的日志
SQL> ALTER DATABASE REGISTER LOGFILE '路径';
5、观察备库的alert日志信息
6、检查备库是否还有日志GAP
SQL> select * from V$ARCHIVE_GAP;
no rows selected
如果有行返回,则重复2-5步,直到查询结果是"no rows selected"。
如果日志只是临时移动到其他地方,过后会再移回原路径,则不用这么大费周折手工去手工处理了,把日志拷回原处后FAL会自动处理GAP。
常用SQL
---查询线程号
SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
---查询未应用日志(仅备库)
select thread#,sequence#,first_time,next_time,applied from v$archived_log where applied='NO';
select name,open_mode,protection_mode,database_role,switchover_status from v$database;
select DEST_NAME,STATUS,ERROR from v$archive_dest;
select PROCESS,CLIENT_PROCESS,SEQUENCE# ,STATUS from v$managed_standby;
archive log list;
边栏推荐
猜你喜欢
随机推荐
2022杭电多校第一场(K/L/B/C)
程序员的七夕浪漫时刻
MySql查询某个时间段内的数据(前一周、前三个月、前一年等)
No-code development platform form styling steps introductory course
学习基因富集工具DAVID(2)
centos7安装mysql8
最近公共祖先(LCA)学习笔记 | P3379 【模板】最近公共祖先(LCA)题解
2022中国眼博会,山东眼健康展,视力矫正仪器展,护眼产品展
WAF WebShell Trojan free to kill
What is the matter that programmers often say "the left hand is knuckled and the right hand is hot"?
【UE5 骨骼动画】全形体IK导致Two Bone IK只能斜着移动,不能平移
无代码开发平台表单样式设置步骤入门课程
B站回应“HR 称核心用户都是 Loser”:该面试官去年底已被劝退,会吸取教训加强管理
用了TCP协议,就一定不会丢包吗?
十二、form表单的提交
2022山东国际青少年眼睛健康产业展会,视力健康展,眼视光展
C语言函数详解(2)【函数参数——实际参数(实参)&形式参数(形参)】
VMware workstation program starts slowly
Image recognition from zero to write DNF script key points
TCP三次握手与四次挥手









