【问题】
接到告警,发现extract进程ABENDED
查看进程日志如下:
***********************************************************************
** Run Time Messages **
***********************************************************************
2024-08-25 13:22:11 INFO OGG-01517 Position of first record processed Log Number: 79079
Record Offset: 67072343, Aug 24, 2024 12:32:26 AM.
2024-08-25 13:22:11 INFO OGG-06507 MAP (TABLE) resolved (entry pub_credit.ent_core_data_count): TABLE “pub_credit”.”ent_core_data_
count”.
2024-08-25 13:22:11 INFO OGG-06509 Using the following key columns for source table pub_credit.ent_core_data_count: ogg_key_id.
2024-08-25 13:23:25 WARNING OGG-01266 cm_mf_write_lower: write: to_write: 98304 errno: 28 (No space left on device) co_uid: 1 /ogg
/dirtmp/e_ph02_p48330_extr_0x7f968d981020_00016.cm.
2024-08-25 13:23:25 WARNING OGG-01857 cachemgr: filecaching: cm_mf_write_upper: /ogg/dirtmp.
2024-08-25 13:23:25 WARNING OGG-01262 The call to the cm_mf_write_lower() function from line 3164 in cm_mf_get() failed with reason ‘
no space on directories: error: 108: co: 00007F968D981020 obj_id: <30><30><30><30><30><30><30><30><30><30><30><30><30><30><30><30><37><
39><30><37><39><3A><30><30><30><30><30><30><30><36><37><30><37><32><33><34><33>’.
Source Context :
SourceModule : [ggapp.cmgr_filecaching]
SourceID : [/scratch/aime/adestore/views/aime_adc4150378/oggcore/OpenSys/src/gglib/ggapp/cachemgr/cmgr_filecache.c]
SourceFunction : [cm_mf_write_upper]
SourceLine : [854]
ThreadBacktrace : [6] elements
: [/ogg/libgglog.so(CMessageContext::AddThreadContext()+0x26) [0x7f969a2d6336]]
: [/ogg/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, …)+0x6a8) [0x7f969a2c9358
]]
: [/ogg/libgglog.so(_MSG_ERR_CACHEMGR_FILECACHING_FILE(CSourceContext*, char const*, CMessageFactory::Message
Disposition)+0x41) [0x7f969a270a41]]
: [/ogg/extract(cm_filecaching_thread(void*)+0x2b49) [0x6ed689]]
: [/lib64/libpthread.so.0(+0x7dd5) [0x7f96971b2dd5]]
: [/lib64/libc.so.6(clone+0x6d) [0x7f969579fead]]
2024-08-25 13:23:25 ERROR OGG-01853 cachemgr: filecaching: cm_mf_write_upper: /ogg/dirtmpcm_mf_get: no space on directories: error:
108: co: 00007F968D981020 obj_id: <30><30><30><30><30><30><30><30><30><30><30><30><30><30><30><30><37><39><30><37><39><3A><30><30><30>
<30><30><30><30><36><37><30><37><32><33><34><33>.
***********************************************************************
* ** Run Time Statistics ** *
***********************************************************************
【分析】
从日志看到报错,是因为空间满了:
ERROR OGG-01853 cachemgr: filecaching: cm_mf_write_upper: /ogg/dirtmpcm_mf_get: no space on directories: error:
发现dirtmp目录占了32G,这是罪魁祸首。
参考:
当总缓存事务数据超过 CACHEMGR CACHESIZE 参数时,Extract 将开始将缓存数据写入临时文件。
默认会使用整改目录的大小,建议设置一个单独专用的目录,并通过 CACHEMGR CACHEDIRECTORY 参数指定。
注意:
CACHEMGR 是一个内部自动配置和自动调节的参数,Oracle 建议不要更改 CACHESIZE,因为根据环境的不同,可能会对性能产生不利影响。
通常情况下,操作系统写 swap 的效率高于写临时文件的效率。默认的 CACHESIZE 参数就是这样设定的。
当事务提交或回滚之后,对应的临时文件也会被删除。所以这里dirtmp目录占用了32G导入整个/ogg目录满了,是因为这是一个大事务。
了解发现由于上游系统有个表做了历史数据清理,导致OGG同步这个delete语句的事务很大。
【解决】
临时扩容/ogg 目录,等这个大事务执行完成之后,目录空间就自动释放了。
OGG同步恢复正常
no comment untill now