GoldenGate教程FG054-OGG内存优化配置与实战
本文档风哥主要介绍Oracle GoldenGate内存优化配置方法,包括OGG内存架构原理、内存参数配置、进程内存优化、内存问题排查等内容,风哥教程参考GoldenGate官方文档Parameters参数参考、性能调优等内容,适合OGG运维人员在生产环境中进行内存优化配置。
Part01-基础概念与理论知识
1.1 OGG内存架构与使用原理
Oracle GoldenGate进程在运行过程中需要使用多种内存区域,理解内存架构是进行优化的基础。更多视频教程www.fgedu.net.cn
- 进程堆内存:进程运行时的基础内存
- 缓存内存:存储待处理的数据记录
- 排序内存:处理排序操作时使用
- 大事务内存:处理大事务时临时使用
- 数据库连接内存:与数据库交互的内存
+——————+
| OGG进程 |
+——————+
| 进程堆内存 | 基础运行内存
+——————+
| 缓存内存 | CACHEMGR配置
+——————+
| 排序内存 | SORTHEAP配置
+——————+
| 大事务内存 | MAXTRANSOPS配置
+——————+
| 数据库连接内存 | 数据库会话内存
+——————+
# 各进程内存使用特点
Extract进程:
– 读取redo log需要缓存
– LogMiner集成模式需要更多内存
– 大事务处理需要临时内存
Replicat进程:
– 应用数据需要缓存
– 排序操作需要排序内存
– 批量应用需要更大缓存
Manager进程:
– 内存使用相对较少
– 主要用于进程管理
1.2 OGG内存相关参数详解
OGG提供多个内存相关参数,合理配置这些参数是优化的关键:
# 1. CACHEMGR – 缓存管理器参数
CACHESIZE:缓存总大小,默认64MB
CACHEDIRECTORY:缓存目录位置
CACHEBUFFERSIZE:缓存块大小
# 2. SORTHEAP – 排序堆大小
SORTHEAP:排序操作使用的内存大小
默认值:根据系统自动调整
建议值:根据数据量设置
# 3. TRANSMEMORY – 事务内存
TRANSMEMORY:事务处理使用的内存
MAXTRANSOPS:单个事务最大操作数
GROUPTRANSOPS:分组事务操作数
# 4. 集成模式专用参数
MAX_SGA_SIZE:LogMiner使用的SGA大小
PARALLEL_DEGREE:并行度
# 参数配置示例
— Extract进程
EXTRACT E_FGEDU01
USERIDALIAS fgedu_alias
EXTTRAIL /GoldenGate/app/dirdat/ef
CACHEMGR CACHESIZE 256M, CACHEDIRECTORY /GoldenGate/app/temp
SORTHEAP 64M
TABLE fgedu01.*;
— Replicat进程
REPLICAT R_FGEDU01
USERIDALIAS fgedu_alias
ASSUMETARGETDEFS
CACHEMGR CACHESIZE 512M
SORTHEAP 128M
BATCHSQL BATCHESPERQUEUE 100, OPSPERBATCH 100
MAP fgedu01.*, TARGET fgedu02.*;
1.3 OGG内存影响因素分析
多个因素会影响OGG内存使用,需要综合考虑:
| 数据量级别 | 建议缓存大小 | 排序堆大小 |
|—————|————–|————|
| 小型(<10GB) | 64MB | 32MB | | 中型(10-100GB)| 256MB | 64MB | | 大型(>100GB) | 512MB-1GB | 128MB |
# 影响因素2:事务大小
| 事务特点 | 内存需求 | 配置建议 |
|—————|————–|———————-|
| 小事务(<100行)| 低 | 默认配置即可 |
| 中事务(100-1000行)| 中 | 适当增加缓存 |
| 大事务(>1000行)| 高 | 增大缓存和事务内存 |
# 影响因素3:并发度
| 并发级别 | 内存需求 | 配置建议 |
|—————|————–|———————-|
| 低并发(<10 TPS)| 低 | 默认配置 |
| 中并发(10-100 TPS)| 中 | 增加缓存 |
| 高并发(>100 TPS)| 高 | 大幅增加缓存和排序堆 |
# 影响因素4:同步模式
| 同步模式 | 内存需求 | 说明 |
|—————|————–|———————-|
| 经典模式 | 较低 | 直接读取redo log |
| 集成模式 | 较高 | 使用LogMiner,需要更多内存 |
| 并行模式 | 高 | 多线程并行处理 |
Part02-生产环境规划与建议
2.1 OGG内存规划建议
在生产环境中进行OGG内存规划时,需要考虑以下因素:
- 评估系统总内存和可用内存
- 分析业务数据量和并发度
- 确定同步模式和进程数量
- 预留系统和其他应用内存
- 考虑内存增长空间
OGG总内存需求 = (Extract内存 × Extract数量) + (Replicat内存 × Replicat数量) + Manager内存 + 系统预留
# 示例计算
系统总内存:64GB
操作系统预留:8GB
数据库预留:24GB
OGG可用内存:32GB
OGG进程规划:
– Extract进程:4个,每个512MB = 2GB
– Replicat进程:4个,每个1GB = 4GB
– Manager进程:256MB
– 缓存预留:4GB
– 总计:约10GB(在32GB可用范围内)
# 不同规模内存规划建议
小型环境(总内存16GB):
– Extract缓存:128MB
– Replicat缓存:256MB
– 排序堆:32MB
中型环境(总内存32GB):
– Extract缓存:256MB
– Replicat缓存:512MB
– 排序堆:64MB
大型环境(总内存64GB+):
– Extract缓存:512MB-1GB
– Replicat缓存:1GB-2GB
– 排序堆:128MB-256MB
2.2 OGG内存容量规划
根据业务场景进行详细的内存容量规划:
特点:大量小事务,高并发
内存需求:中等缓存,高并发处理能力
配置建议:
CACHEMGR CACHESIZE 512M, CACHEDIRECTORY /GoldenGate/app/temp
SORTHEAP 64M
MAXTRANSOPS 10000
GROUPTRANSOPS 1000
# 场景2:批量数据加载场景
特点:大批量数据,大事务
内存需求:大缓存,大事务处理能力
配置建议:
CACHEMGR CACHESIZE 1G, CACHEDIRECTORY /GoldenGate/app/temp
SORTHEAP 256M
MAXTRANSOPS 50000
GROUPTRANSOPS 5000
# 场景3:实时报表同步场景
特点:中等数据量,实时性要求高
内存需求:中等缓存,低延迟
配置建议:
CACHEMGR CACHESIZE 256M, CACHEDIRECTORY /GoldenGate/app/temp
SORTHEAP 64M
LAGCRITICALMINUTES 5
LAGWARNINGMINUTES 1
# 场景4:数据仓库同步场景
特点:大数据量,批量处理
内存需求:大缓存,批量处理优化
配置建议:
CACHEMGR CACHESIZE 2G, CACHEDIRECTORY /GoldenGate/app/temp
SORTHEAP 512M
BATCHSQL BATCHESPERQUEUE 200, OPSPERBATCH 200
2.3 OGG内存配置规划
制定详细的内存配置规划方案:
| 配置项 | 小型环境 | 中型环境 | 大型环境 |
|——————–|———-|———–|————|
| CACHESIZE | 128MB | 256MB | 512MB-1GB |
| CACHEDIRECTORY | 专用目录 | 专用目录 | SSD存储 |
| SORTHEAP | 32MB | 64MB | 128MB |
| MAX_SGA_SIZE(集成)| 256MB | 512MB | 1GB |
# Replicat进程内存配置规划
| 配置项 | 小型环境 | 中型环境 | 大型环境 |
|——————–|———-|———–|————|
| CACHESIZE | 256MB | 512MB | 1GB-2GB |
| CACHEDIRECTORY | 专用目录 | 专用目录 | SSD存储 |
| SORTHEAP | 64MB | 128MB | 256MB |
| BATCHSQL | 默认 | 优化配置 | 大批量配置 |
# Manager进程内存配置
| 配置项 | 建议值 | 说明 |
|——————–|———-|———————-|
| 进程堆内存 | 256MB | 基础管理内存 |
| 缓存目录 | 专用目录 | 避免与其他进程冲突 |
# 缓存目录规划
/GoldenGate/app/temp/extract/ – Extract缓存目录
/GoldenGate/app/temp/replicat/ – Replicat缓存目录
/GoldenGate/app/temp/manager/ – Manager缓存目录
# 建议使用SSD存储缓存目录,提高性能
Part03-生产环境项目实施方案
3.1 OGG Extract进程内存优化实战
3.1.1 经典模式Extract内存优化
$ ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | grep extract
1234 1 ./extract E_FGEDU01 2.5 5.2
5678 1 ./extract E_FGEDU02 2.3 4.8
# 步骤2:编辑Extract参数文件
GGSCI (fgedu.net.cn)> EDIT PARAMS E_FGEDU01
EXTRACT E_FGEDU01
USERIDALIAS fgedu_alias
EXTTRAIL /GoldenGate/app/dirdat/ef
— 内存优化配置
CACHEMGR CACHESIZE 512M, &
CACHEDIRECTORY /GoldenGate/app/temp/extract/E_FGEDU01, &
CACHEBUFFERSIZE 64K
SORTHEAP 128M
— 事务处理优化
MAXTRANSOPS 10000
GROUPTRANSOPS 1000
TABLE fgedu01.*;
# 步骤3:创建缓存目录
$ mkdir -p /GoldenGate/app/temp/extract/E_FGEDU01
$ chown oracle:oinstall /GoldenGate/app/temp/extract/E_FGEDU01
# 步骤4:重启Extract进程
GGSCI (fgedu.net.cn)> STOP E_FGEDU01
Sending STOP request to EXTRACT E_FGEDU01 …
Request processed.
GGSCI (fgedu.net.cn)> START E_FGEDU01
Sending START request to MANAGER …
EXTRACT E_FGEDU01 starting
# 步骤5:验证内存配置
GGSCI (fgedu.net.cn)> SEND E_FGEDU01, GETCACHEINFO
Cache Manager Information:
Cache Size: 536870912 (512MB)
Cache Directory: /GoldenGate/app/temp/extract/E_FGEDU01
Cache Buffer Size: 65536 (64KB)
Current Cache Used: 125829120 (120MB)
# 步骤6:监控内存使用
$ ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | grep extract
1234 1 ./extract E_FGEDU01 3.2 8.5
3.1.2 集成模式Extract内存优化
GGSCI (fgedu.net.cn)> EDIT PARAMS E_FGEDU_INT
EXTRACT E_FGEDU_INT
USERIDALIAS fgedu_alias
EXTTRAIL /GoldenGate/app/dirdat/ei
— 集成模式内存配置
TRANLOGOPTIONS INTEGRATEDPARAMS ( &
MAX_SGA_SIZE 1024, &
PARALLEL_DEGREE 4 &
)
— 缓存配置
CACHEMGR CACHESIZE 1G, &
CACHEDIRECTORY /GoldenGate/app/temp/extract/E_FGEDU_INT
SORTHEAP 256M
TABLE fgedu01.*;
# 步骤2:检查数据库Streams Pool配置
SQL> SHOW PARAMETER STREAMS_POOL;
NAME TYPE VALUE
———————————— ———– ——————————
streams_pool_size big integer 1G
# 如果不足,增加Streams Pool
SQL> ALTER SYSTEM SET STREAMS_POOL_SIZE=2G SCOPE=SPFILE;
System altered.
# 步骤3:重启数据库和Extract
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
GGSCI (fgedu.net.cn)> STOP E_FGEDU_INT
GGSCI (fgedu.net.cn)> START E_FGEDU_INT
# 步骤4:验证集成模式内存使用
SQL> SELECT POOL, NAME, BYTES/1024/1024 AS MB
FROM V$SGASTAT
WHERE POOL = ‘streams pool’ AND NAME LIKE ‘%logminer%’;
POOL NAME MB
————— ——————– ———-
streams pool logminer LCR cache 512
streams pool logminer attribute 64
streams pool logminer metadata 128
# 步骤5:监控LogMiner内存使用
SQL> SELECT * FROM V$LOGMNR_SESSION;
SESSION_ID SESSION_NAME MEMORY_USED
———- ————————- ———–
1 OGG$E_FGEDU_INT 512M
3.2 OGG Replicat进程内存优化实战
3.2.1 经典模式Replicat内存优化
GGSCI (fgedu.net.cn)> EDIT PARAMS R_FGEDU01
REPLICAT R_FGEDU01
USERIDALIAS fgedu_alias
ASSUMETARGETDEFS
— 内存优化配置
CACHEMGR CACHESIZE 1G, &
CACHEDIRECTORY /GoldenGate/app/temp/replicat/R_FGEDU01, &
CACHEBUFFERSIZE 128K
SORTHEAP 256M
— 批量处理优化
BATCHSQL BATCHESPERQUEUE 200, &
OPSPERBATCH 200, &
MAXSQLSTATEMENTS 500
— 事务处理优化
MAXTRANSOPS 50000
GROUPTRANSOPS 5000
MAP fgedu01.*, TARGET fgedu02.*;
# 步骤2:创建缓存目录
$ mkdir -p /GoldenGate/app/temp/replicat/R_FGEDU01
$ chown oracle:oinstall /GoldenGate/app/temp/replicat/R_FGEDU01
# 步骤3:重启Replicat进程
GGSCI (fgedu.net.cn)> STOP R_FGEDU01
GGSCI (fgedu.net.cn)> START R_FGEDU01
# 步骤4:验证内存配置
GGSCI (fgedu.net.cn)> SEND R_FGEDU01, GETCACHEINFO
Cache Manager Information:
Cache Size: 1073741824 (1GB)
Cache Directory: /GoldenGate/app/temp/replicat/R_FGEDU01
Cache Buffer Size: 131072 (128KB)
Current Cache Used: 524288000 (500MB)
# 步骤5:检查批量处理效果
GGSCI (fgedu.net.cn)> STATS R_FGEDU01, TOTAL
Sending STATS request to REPLICAT R_FGEDU01 …
Start of Statistics at 2026-04-10 10:00:00.
Replicating from fgedu01.fgedu_orders to fgedu02.fgedu_orders:
*** Total statistics since 2026-04-10 08:00:00 ***
Total inserts 100000.00
Total updates 50000.00
Total deletes 10000.00
Total discards 0.00
Total operations 160000.00
Total batches 800.00
Avg operations per batch 200.00
3.2.2 集成模式Replicat内存优化
GGSCI (fgedu.net.cn)> EDIT PARAMS R_FGEDU_INT
REPLICAT R_FGEDU_INT
USERIDALIAS fgedu_alias
ASSUMETARGETDEFS
— 集成模式内存配置
CACHEMGR CACHESIZE 2G, &
CACHEDIRECTORY /GoldenGate/app/temp/replicat/R_FGEDU_INT
SORTHEAP 512M
— 并行处理配置
— 集成模式Replicat使用数据库内存
MAP fgedu01.*, TARGET fgedu02.*;
# 步骤2:配置并行Replicat
GGSCI (fgedu.net.cn)> ADD REPLICAT R_FGEDU_PAR, INTEGRATED COORDINATED, &
EXTTRAIL /GoldenGate/app/dirdat/ei, &
CHECKPOINTTABLE fgedu.ogg_chkpt, &
THREADS 4
REPLICAT (Integrated) added.
# 步骤3:编辑并行Replicat参数
GGSCI (fgedu.net.cn)> EDIT PARAMS R_FGEDU_PAR
REPLICAT R_FGEDU_PAR
USERIDALIAS fgedu_alias
ASSUMETARGETDEFS
— 并行内存配置(每个线程)
CACHEMGR CACHESIZE 512M, &
CACHEDIRECTORY /GoldenGate/app/temp/replicat/R_FGEDU_PAR
SORTHEAP 128M
— 并行参数
MAP fgedu01.*, TARGET fgedu02.*;
# 步骤4:启动并行Replicat
GGSCI (fgedu.net.cn)> START R_FGEDU_PAR
# 步骤5:验证并行效果
GGSCI (fgedu.net.cn)> INFO R_FGEDU_PAR, DETAIL
REPLICAT R_FGEDU_PAR Last Started 2026-04-10 10:00:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:01 ago)
Integrated coordinated (4 threads)
3.3 OGG Manager进程内存优化实战
GGSCI (fgedu.net.cn)> EDIT PARAMS MGR
PORT 7809
PURGEOLDEXTRACTS /GoldenGate/app/dirdat/*, USECHECKPOINTS, MINKEEP 24 HOURS
— Manager内存配置
CACHEMGR CACHESIZE 256M, &
CACHEDIRECTORY /GoldenGate/app/temp/manager
— 进程启动参数
AUTOSTART ER *
AUTORESTART ER *, RETRIES 5, WAITMINUTES 2
# 步骤2:创建Manager缓存目录
$ mkdir -p /GoldenGate/app/temp/manager
$ chown oracle:oinstall /GoldenGate/app/temp/manager
# 步骤3:重启Manager
GGSCI (fgedu.net.cn)> STOP MGR
GGSCI (fgedu.net.cn)> START MGR
# 步骤4:验证Manager内存
$ ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | grep manager
1001 1 ./manager 0.5 0.1
# 步骤5:检查Manager状态
GGSCI (fgedu.net.cn)> INFO MGR
Manager is running (IP port fgedu.net.cn.7809).
Part04-生产案例与实战讲解
4.1 OGG内存优化生产案例
某电商系统OGG内存优化案例:
– 环境:OGG 19c
– 源端:Oracle 19c RAC(4节点)
– 目标端:Oracle 19c 单机
– 日均数据量:500GB
– 问题:OGG进程内存不足,频繁出现延迟
# 问题分析
# 1. 查看当前内存使用
$ free -g
total used free shared buff/cache available
Mem: 64 48 2 8 14 12
Swap: 16 4 12
# 2. 查看OGG进程内存
$ ps -eo pid,cmd,%mem –sort=-%mem | grep -E “extract|replicat”
1234 ./extract E_ORDERS 8.5
5678 ./replicat R_ORDERS 12.3
9012 ./extract E_PRODUCTS 6.2
# 3. 查看缓存使用情况
GGSCI (fgedu.net.cn)> SEND E_ORDERS, GETCACHEINFO
Cache Manager Information:
Cache Size: 536870912 (512MB)
Current Cache Used: 536870912 (512MB) — 缓存已满!
Cache Page Faults: 12345678 — 大量页面错误
# 优化方案
# 1. 增加Extract缓存
GGSCI (fgedu.net.cn)> EDIT PARAMS E_ORDERS
EXTRACT E_ORDERS
USERIDALIAS fgedu_alias
EXTTRAIL /GoldenGate/app/dirdat/eo
CACHEMGR CACHESIZE 2G, &
CACHEDIRECTORY /GoldenGate/app/temp/extract/E_ORDERS
SORTHEAP 256M
TRANLOGOPTIONS INTEGRATEDPARAMS (MAX_SGA_SIZE 2048)
TABLE fgedu_orders.*;
# 2. 增加Replicat缓存
GGSCI (fgedu.net.cn)> EDIT PARAMS R_ORDERS
REPLICAT R_ORDERS
USERIDALIAS fgedu_alias
ASSUMETARGETDEFS
CACHEMGR CACHESIZE 4G, &
CACHEDIRECTORY /GoldenGate/app/temp/replicat/R_ORDERS
SORTHEAP 512M
BATCHSQL BATCHESPERQUEUE 500, OPSPERBATCH 500
MAP fgedu_orders.*, TARGET fgedu_orders_bak.*;
# 3. 增加数据库Streams Pool
SQL> ALTER SYSTEM SET STREAMS_POOL_SIZE=4G SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
# 优化效果
优化前:
– Extract延迟:5-10分钟
– Replicat延迟:10-30分钟
– 缓存页面错误:每秒1000+
优化后:
– Extract延迟:< 1分钟
- Replicat延迟:< 2分钟
- 缓存页面错误:每秒< 10
from GoldenGate视频:www.itpux.com
4.2 OGG内存问题排查与处理
# 错误信息
ERROR OGG-00446 Cache manager ran out of memory.
# 排查步骤
# 1. 检查系统内存
$ free -m
$ vmstat 1 10
# 2. 检查OGG进程内存
$ ps -eo pid,cmd,%mem –sort=-%mem | head -20
# 3. 检查缓存配置
GGSCI (fgedu.net.cn)> SEND E_FGEDU01, GETCACHEINFO
# 解决方案
# 方案1:增加缓存大小
CACHEMGR CACHESIZE 1G
# 方案2:增加系统内存
# 方案3:减少同步表数量
# 方案4:使用缓存目录到更大磁盘
# 问题2:内存泄漏
# 现象
进程内存持续增长,不释放
# 排查步骤
# 1. 监控内存增长
$ while true; do
ps -eo pid,cmd,%mem | grep extract >> /tmp/mem.log
sleep 60
done
# 2. 分析内存增长趋势
$ cat /tmp/mem.log | awk ‘{print $3}’ | sort -n | uniq -c
# 解决方案
# 1. 定期重启进程
# 2. 升级OGG版本
# 3. 联系Oracle支持
# 问题3:缓存目录空间不足
# 错误信息
ERROR OGG-00446 No space left on device in cache directory.
# 排查步骤
$ df -h /GoldenGate/app/temp
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 50G 48G 2G 96% /GoldenGate/app/temp
# 解决方案
# 1. 清理缓存目录
$ rm -rf /GoldenGate/app/temp/extract/*
# 2. 扩展磁盘空间
# 3. 更换缓存目录到更大磁盘
CACHEMGR CACHEDIRECTORY /data/ogg_cache
4.3 OGG内存优化解决方案
#!/bin/bash
# memory_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
LOG_FILE=/GoldenGate/app/logs/memory.log
ALERT_THRESHOLD=80
log() {
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) $1” >> $LOG_FILE
}
# 检查系统内存
check_system_memory() {
TOTAL=$(free -m | grep Mem | awk ‘{print $2}’)
USED=$(free -m | grep Mem | awk ‘{print $3}’)
PERCENT=$((USED * 100 / TOTAL))
log “系统内存使用: ${PERCENT}% (${USED}MB/${TOTAL}MB)”
if [ $PERCENT -gt $ALERT_THRESHOLD ]; then
log “警告:系统内存使用超过${ALERT_THRESHOLD}%”
fi
}
# 检查OGG进程内存
check_ogg_memory() {
cd /GoldenGate/app
for pid in $(ps -eo pid,cmd | grep -E “extract|replicat” | grep -v grep | awk ‘{print $1}’); do
MEM=$(ps -p $pid -o %mem –no-headers | tr -d ‘ ‘)
CMD=$(ps -p $pid -o cmd –no-headers)
log “OGG进程内存: $CMD – ${MEM}%”
if [ $(echo “$MEM > $ALERT_THRESHOLD” | bc) -eq 1 ]; then
log “警告:OGG进程内存使用超过${ALERT_THRESHOLD}%”
fi
done
}
# 检查缓存使用
check_cache_usage() {
cd /GoldenGate/app
for process in $(./ggsci <
SEND $process, GETCACHEINFO
EOF
)
log “缓存信息: $process”
echo “$CACHE_INFO” | grep -E “Cache Size|Cache Used” >> $LOG_FILE
done
}
main() {
log “========== 内存监控开始 ==========”
check_system_memory
check_ogg_memory
check_cache_usage
log “========== 内存监控结束 ==========”
}
main
# 执行输出
$ ./memory_monitor.sh
========== 内存监控开始 ==========
2026-04-10 10:00:00 系统内存使用: 45% (28672MB/65536MB)
2026-04-10 10:00:01 OGG进程内存: ./extract E_FGEDU01 – 3.5%
2026-04-10 10:00:01 OGG进程内存: ./replicat R_FGEDU01 – 5.2%
2026-04-10 10:00:02 缓存信息: E_FGEDU01
2026-04-10 10:00:02 Cache Size: 1073741824 (1GB)
2026-04-10 10:00:02 Current Cache Used: 524288000 (500MB)
========== 内存监控结束 ==========
Part05-风哥经验总结与分享
5.1 OGG内存优化最佳实践
根据多年生产环境实战经验,总结以下内存优化最佳实践:
- 根据业务量合理配置缓存大小
- 使用独立磁盘存储缓存文件
- 定期监控内存使用情况
- 配置内存告警阈值
- 预留足够的内存增长空间
# Extract进程
CACHEMGR CACHESIZE [数据量GB数×50MB], &
CACHEDIRECTORY /ssd/ogg_cache/extract/[进程名]
SORTHEAP [数据量GB数×10MB]
# Replicat进程
CACHEMGR CACHESIZE [数据量GB数×100MB], &
CACHEDIRECTORY /ssd/ogg_cache/replicat/[进程名]
SORTHEAP [数据量GB数×20MB]
BATCHSQL BATCHESPERQUEUE 200, OPSPERBATCH 200
# 最佳实践2:内存监控建议
– 每分钟检查进程内存使用
– 每小时检查缓存使用情况
– 每天生成内存使用报告
– 配置内存使用告警
# 最佳实践3:内存问题预防
– 预留20%内存余量
– 定期清理缓存目录
– 监控内存增长趋势
– 制定内存扩容计划
5.2 OGG内存配置检查清单
[ ] 系统总内存确认
[ ] 可用内存评估
[ ] 业务数据量评估
[ ] 并发度评估
[ ] 同步模式确认
# 内存配置检查
[ ] CACHESIZE配置合理
[ ] CACHEDIRECTORY空间充足
[ ] SORTHEAP配置合理
[ ] BATCHSQL配置合理
[ ] Streams Pool配置合理(集成模式)
# 内存监控检查
[ ] 内存监控脚本部署
[ ] 内存告警配置
[ ] 日志轮转配置
[ ] 定期检查计划
5.3 风哥实战经验总结
在多年OGG项目实施过程中,总结以下内存优化实战经验:
- 内存配置不是越大越好,要根据实际需求配置
- 缓存目录使用SSD存储可显著提升性能
- 集成模式需要更多内存,但性能更好
- 定期监控内存使用,及时发现问题
- 预留足够的内存增长空间
小型系统(<50GB/天): - Extract缓存:256MB - Replicat缓存:512MB - 总内存需求:约4GB 中型系统(50-200GB/天): - Extract缓存:512MB-1GB - Replicat缓存:1GB-2GB - 总内存需求:约8-16GB 大型系统(>200GB/天):
– Extract缓存:1GB-2GB
– Replicat缓存:2GB-4GB
– 总内存需求:约16-32GB
# 经验2:内存问题诊断流程
1. 检查系统内存使用
2. 检查OGG进程内存
3. 检查缓存使用情况
4. 检查缓存目录空间
5. 分析内存增长趋势
6. 制定优化方案
# 经验3:内存优化效果评估
优化前记录:
– 延迟时间
– 内存使用率
– 缓存页面错误
– 处理吞吐量
优化后对比:
– 延迟降低比例
– 内存使用变化
– 性能提升比例
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
