1 业务系统申请加入OGG进程几十张表,根据要求,将相关表添加到OGG抽取进程及投递进程中,
第二天,发现OGG抽取进程延迟20多小时,进行相关原因分析。
EXTRACT RUNNING EXTTEST02
25:09:59 00:00:08
GGSCI (dbssvra) 5> info EXTTEST02
EXTRACT EXTTEST02 Last Started 2023-02-07 14:30 Status RUNNING
Checkpoint Lag
25:10:09 (updated 00:00:04 ago)
Log Read Checkpoint Oracle Redo Logs
2023-02-07
07:52:01 Thread 1, Seqno 679959, RBA 329074872
SCN 3722.502010847 (15986370286559)
Log Read Checkpoint Oracle Redo Logs
2023-02-07 07:52:01 Thread 2, Seqno 962867, RBA 1999074256
SCN 3722.502011018 (15986370286730)
2 OGG抽取进程延迟原因:CPU、内存、IO、参数设置不合理、长事务等
经过仔细分析,将CPU、内存、IO进行的排除,认为是正常的。那就剩下参数及长事务了。
3 进行参数排查:
执行如下命令,查看OGG使用的内存信息,根据如下信息,认为OGG抽取进程的虚拟内存达到上限,
是导致OGG抽取进程运行缓慢。
GGSCI (dbssvra) 248> send extract EXTTEST02, CACHEMGR CACHESTATS
Sending CACHEMGR request to EXTRACT EXTTEST02 ...
CACHE OBJECT MANAGER statistics
CACHE MANAGER VM USAGE
vm current = 7.31G
vm anon queues = 4.96G
vm anon in use = 2.36G vm file = 0
vm used max = 7.31G
==> CACHE BALANCED
查看OGG抽取进程的参数,发现设置了如下内存参数,认为将内存设置的太小。
Oracle官方建议不要设置OGG抽取进程的内存参数,但由于发生多次由于抽取进程将内存耗尽,
导致主机服务器hang的情况,此系统内存使用80%,故还不敢将ogg抽取进程的内存参数调整为默认值,只能进行调整。
TRANLOGOPTIONS DBLOGREADER, DBLOGREADERBUFSIZE 4194304
TRANLOGOPTIONS BUFSIZE 10000000
CACHEMGR CACHESIZE 1G
修改为:
--TRANLOGOPTIONS DBLOGREADER, DBLOGREADERBUFSIZE 4194304
--TRANLOGOPTIONS BUFSIZE 10000000
--CACHEMGR CACHESIZE 1G
TRANLOGOPTIONS DBLOGREADER
CACHEMGR CACHESIZE 16G
重启OGG抽取进程,问题没有解决。
4 查看EXTTEST02进程的report,发现一直报长事务。
2023-02-08 10:43:54 WARNING OGG-01027 Long Running Transaction: XID 88.31.623522942, Items 0,
Extract EXTTEST02, Redo Thread 2, SCN 3722.332792647 (15986201068359), Redo Seq #962683,
Redo RBA 2900657168.
26556 records processed as of 2023-02-08 10:44:25 (rate 0,delta 0)
GGSCI (dbssvra) 87>
send extract EXTTEST02,showtrans thread 2
Sending showtrans request to EXTRACT EXTTEST02 ...
Oldest redo log files necessary to restart Extract are:
Redo Thread 1, Redo Log Sequence Number 679959, SCN 3722.502130718 (15986370406430), RBA 459234320
Redo Thread 2, Redo Log Sequence Number 962683, SCN 3722.332792647 (15986201068359), RBA 2900657168
------------------------------------------------------------
XID: 88.31.623522942
I
tems: 0 --经仔细查看goldengate官方文档,此列为0,
即表示此事务不是goldengate抽取进程需要的,可以进行跳过。
怀疑是此事务导致OGG延迟增长,准备跳过此事务。
Extract: EXTTEST02
Redo Thread: 2
Start Time: 2023-02-07:01:42:16
SCN: 3722.332792647 (15986201068359)
Redo Seq: 962683
Redo RBA: 2900657168
Status: Running
SEND EXTRACT EXTTEST02, SKIPTRANS 88.31.623522942 THREAD 2
GGSCI (dbssvra) 2> SEND EXTRACT EXTTEST02, SKIPTRANS 88.31.623522942 THREAD 2
Sending SKIPTRANS request to EXTRACT EXTTEST02 ...
Are you sure you sure you want to skip transaction [XID 88.31.623522942, Redo Thread 2, Start Time 2023-02-07:01:42:16, SCN 3722.332792647 (15986201068359)]? (y/n)y
Sending SKIPTRANS request to EXTRACT EXTTEST02 ...
Transaction [XID 88.31.623522942, Redo Thread 2, Start Time 2023-02-07:01:42:16, SCN 3722.332792647 (15986201068359)] skipped.
OGG参数优化:将长事务告警信息调整为告警及跳过空事务,此参数的调整,
可以让OGG自动跳过空事务并释放空事务相关的资源,且重启后减少读取归档日志的数量,减少抽取进程恢复时间。
修改前
WARNLONGTRANS 2h,CHECKINTERVAL 10m
修改后
WARNLONGTRANS 2h,CHECKINTERVAL 10m,skipemptytrans
调整参数并重启OGG进程,问题还是没有解决,但已经往明朗的方向发展。
但每天OGG抽取进程卡主的时间点都在7:39分,连续观察几天后,认为是新增加的表导致的OGG抽取进程延迟,
但具体是哪个表,不清楚经过多次针对7:39分时间点的AWR,ASH等分析,还是不能确定是哪个表引起OGG抽取进程延迟。
5 针对OGG进程做trace,pstack,gstack等追踪分析,没有找到任何有用信息。
只发现OGG的抽取进程延迟卡在都去归档日志上,
申请goldengate官方的SR,认为是IO导致的,经仔细排查,经IO排除掉。
个人认为应该是遇见从业十几年未遇见的问题,有可能是某一资源有限制(比如OGG抽取进程的VM,已经达到最大值),
导致的OGG抽取进程延迟。也有可能是业务系统几分钟对某个表执行了大量的操作,导致OGG将资源耗尽。
trace2相关的信息
SUMMARY STATISTICS
General statistics:
0.00%
Checking messages (includes checkpointing)
0.00%
Checking periodic tasks
0.00%
Waiting for more data
0.00%
Converting ASCII header to internal
0.00%
Converting ASCII data to internal
100.00%
Reading input records
0.00%
Writing output records (replicate_io)
0.00%
Mapping columns
0.00%
Outputting data records
0.00%
Performing SQL statements
0.00%
Performing BATCHSQL statements
0.00%
Performing actual DB op
0.00%
Preparing SQL statements
0.00%
Performing transaction commits
0.00%
Checkpointing
Redo log statistics:
0.00%
Opening redo log file
0.00%
Positioning into redo log file
0.00%
Reading record from redo log file
0.01%
Extracting subrecord from redo record
0.00%
Extracting start subrecord
0.00%
Extracting undo subrecord header
0.00%
Extracting undo subrecord
0.00%
Extracting redo subrecord header
0.00%
Extracting undo subrecord
0.00%
Extracting rollback subrecord
0.00%
Extracting commit subrecord
0.00%
Processing start subrecord
0.78%
Processing data subrecord
0.00%
Processing rollback subrecord
0.00%
Processing commit subrecord
0.00%
Retrieving and processing transaction items
0.00%
Retrieving transaction item
0.00%
Formatting output record
0.00%
Formatting output record header
0.00%
Validating update key data
0.00%
Formatting output record data
0.00%
Converting Oracle data to ASCII
0.00%
Close redo log
6 大事务导致OGG抽取进程延迟
经过多次查看执行send EXTTEST02 showtrans,总算发现了可疑的事务,但在数据库进行查看,
此事务已提交,不清楚此事务执行的相关SQL,无法确定是哪个表引起的。
2月7日
------------------------------------------------------------
X
ID: 814.14.14101759 --事务ID
I
tems: 22623282 --大事务,已经抽取了2千2百多万条数据,事务还没有结束。
Extract: EXTTEST02
Redo Thread: 2
Start Time:
2023-02-07:07:39:33
SCN: 3722.497851000 (15986366126712)
Redo Seq: 962860
Redo RBA: 157135376
Status: Running
2月16日
------------------------------------------------------------
XID: 579.25.9724995
Items: 8077902 --大事务,800多万条数据,还没有结束
Extract: EXTTEST02
Redo Thread: 1
Start Time:
2023-02-16:07:39:49
SCN: 3723.895718844 (15991058961852)
Redo Seq: 682982
Redo RBA: 1826037264
Status: Running
2月20日
------------------------------------------------------------
XID: 138.29.311639792
Items: 12612238 --大事务,已经抽取了1千2百多万条数据,事务还没有结束,只运行了几分钟。
Extract: EXTTEST02
Redo Thread: 2
Start Time:
2023-02-20:07:39:33
SCN: 3723.2254776926 (15992418019934)
Redo Seq: 972062
Redo RBA: 2890945040
Status: Running
7 由于事务已提交,无法确定事务执行的SQL,使用logminer对相关事务进行日志挖掘,分析事务到底执行的SQL是什么。
7.1 确定的事务ID为:138.29.311639792
XID: 138.29.311639792
Items: 8384843 --大事务
Extract: EXTTEST02
Redo Thread: 2
Start Time: 2023-02-20:07:39:33
SCN: 3723.2254776926 (15992418019934)
Redo Seq: 972062
Redo RBA: 2890945040
Status: Running
7.2 使用logminer对相关事务进行日志挖掘,总算找到事务执行的相关SQL。
添加归档日志到logminer中
BEGIN
dbms_logmnr.add_logfile(logfilename=>'+ARCH/DBNAME/ARCHIVELOG/2023_02_20
/thread_2_seq_972062.1774.1129275589',options=>dbms_logmnr.NEW);
END;
/
启动日志挖掘
EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
查看事务ID(138.29.311639792)查看执行的SQL
SELECT SESSION#,SERIAL#,sql_redo,XID,XIDUSN,XIDSLT,XIDSQN
FROM v$logmnr_contents where XIDUSN='138' and XIDSLT='29' and XIDSQN='311639792';
SESSION# SERIAL# sql_redo, XID, XIDUSN, XIDSLT, XIDSQN
-------- ------- ------------------------------------------------------------------------ ------- ---------- --------- --------
5378 9303
update "USER_1"."TABLE_A" set "WRITE_TIME" = TO_ 8A001D00F03E9312
138 29 311639792
.............
结束日志挖掘
EXECUTE dbms_logmnr.END_LOGMNR;
使用历史会话再一次对验证业务系统执行了哪些SQL
INSTANCE_NUMBER TIME_SA SESSION_ID SESSION_SERIAL# SQL_ID WAIT_CLASS BLOCKING_SESSION BLOCKING_SESSION_SERIAL#
--------------- ------------------------------ ---------- --------------- -------------------- -------------------- ---------------- ------------------------
2 2023-02-20 07:30:12 5378 9303 5zj438nbjpsnc
2 2023-02-20 07:30:22 5378 9303 5zj438nbjpsnc
.......
2 2023-02-20 07:31:43 5378 9303 2pgrah1dz9rp1
.......
2 2023-02-20 07:33:44 5378 9303 ah4skxaa4wjpg
......
2 2023-02-20 07:36:05 5378 9303 24jssqmxrg58t
....
2 2023-02-20 07:37:36 5378 9303 dkaxpn8u8s3xn
....
2 2023-02-20 07:39:27 5378 9303 f142qzj7r76yr
....
2 2023-02-20 07:53:25 5378 9303 4bbagth0j22dn Cluster
2 2023-02-20 07:53:35 5378 9303 gaqru9wr6b1kv
....
2 2023-02-20 07:56:27 5378 9303 d5nnqs90fm7rr
....
2 2023-02-20 08:03:00 5378 9303 4kpvuf1zysy7n
2 2023-02-20 08:03:11 5378 9303 4v06s9w1mu8g8
2 2023-02-20 08:03:21 5378 9303 4v06s9w1mu8g8
2 2023-02-20 08:03:31 5378 9303 4v06s9w1mu8g8
2 2023-02-20 08:03:41 5378 9303 4v06s9w1mu8g8
200 rows selected.
和2023-02-20:07:39:33 时间点最近的为f142qzj7r76yr SQL , 此SQL执行计划为全表扫描
查看SQL执行的时间及耗费的资源
set linesize 200
set pagesize 999
col OWNER for a20
col SEGMENT_NAME for a40
col SEGMENT_TYPE for a20
select OWNER,SEGMENT_NAME,SEGMENT_TYPE,trunc(sum(BYTES)/1024/1024/1024) from dba_segments where owner='USER_1' and
SEGMENT_NAME in ('TABLE_A')
group by OWNER,SEGMENT_NAME,SEGMENT_TYPE
order by SEGMENT_TYPE,trunc(sum(BYTES)/1024/1024/1024) ;
查看表的大小,此表大小为750G,走全表扫描,很有可能会导致将OGG抽取进程的资源耗尽
OWNER SEGMENT_NAME SEGMENT_TYPE TRUNC(SUM(BYTES)/1024/1024/1024)
-------------------- ---------------------------------------- -------------------- --------------------------------
USER_1 TABLE_A TABLE PARTITION
750
查看此表每日新增的数据量,在1800万左右。
SYS@DBNAME1 >select count(1) from "USER_1"."TABLE_A" partition(TABLE_A20221216);
COUNT(1)
----------
18179182
在AWR中只有一行,由于此行排在最后,故刚开始时就将其忽略掉,如下
Buffer Gets Executions Gets per Exec %Total Elapsed Time (s) %CPU %IO SQL Id SQL Module SQL Text
58,785,636 1 58,785,636.00 1.32 835.74 85 3.8
f142qzj7r76yr
MERGE INTO TABLE_A CRF
根据buffer gets中数据块的数量,计算耗费的内存,每个数据块的大小为8K,计算后发现一条SQL耗费的内存为459G,
故导致OGG抽取进程运行缓慢:
SYS@DBNAME1 >select (58785636*8)/1024 from dual;
(58785636*8)/1024
-----------------
459262.781
解决方法:
业务系统优化相关业务逻辑及SQL,OGG抽取进程延时问题解决。
问题总结:
此次故障解决,耗时特长,用时12天,才找到真正原因,其中将CPU、内存、IO、AWR、ASH、长事务、参数等都
排查过,并进行了排除后,最终才确定是由于在很短的时间内,数据库执行了一个大事务,逻辑读459G,将OGG抽取进程的
资源耗尽,导致OGG抽取进程运行特别缓慢。此事件是运维十几年来第一次因为大事务导致的抽取进程延迟,还是有一定借鉴
意义的。
大事务导致的OGG抽取进程每天7:39定时延时,运行极其缓慢
来源:这里教程网
时间:2026-03-03 18:24:40
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 大事务导致的OGG抽取进程每天7:39定时延时,运行极其缓慢
大事务导致的OGG抽取进程每天7:39定时延时,运行极其缓慢
26-03-03 - ogg复制进程报ORA-01438错误处理
ogg复制进程报ORA-01438错误处理
26-03-03 - VIAVI唯亚威OneExpert CATV信号分析仪
VIAVI唯亚威OneExpert CATV信号分析仪
26-03-03 - VIAVI唯亚威CellAdvisor 线缆和天线分析仪
VIAVI唯亚威CellAdvisor 线缆和天线分析仪
26-03-03 - VIAVI唯亚威OneAdvisor 800 无线测试平台
VIAVI唯亚威OneAdvisor 800 无线测试平台
26-03-03 - flush 缓存对inmemory有什么影响?
flush 缓存对inmemory有什么影响?
26-03-03 - 大语言模型与数据库故障诊断
大语言模型与数据库故障诊断
26-03-03 - GoldenGate Veridata 12c安装部署
GoldenGate Veridata 12c安装部署
26-03-03 - 面向实验室级别的ONT-800以太网测试平台
面向实验室级别的ONT-800以太网测试平台
26-03-03 - 跨境电商物流清关相关知识-箱讯科技国际物流管理平台
跨境电商物流清关相关知识-箱讯科技国际物流管理平台
26-03-03
