OGG安装前需正确配置GGS_HOME和LD_LIBRARY_PATH环境变量,Manager进程须设置PORT、DYNAMICPORTLIST及AUTORESTART+AUTOBIND,Extract依赖FORCE LOGGING、EXTTRAIL路径权限、SELECT ANY DICTIONARY权限,19c与21c兼容需注意UNIFIED_AUDIT_TRAIL支持、ENABLE_DDL_LOGGING关闭及tnsnames.ora全限定服务名。
OGG 安装前必须确认的环境变量
oracle goldengate 依赖特定环境变量才能正常启动进程,ggs_home 和 ld_library_path 错一个,ggsci 就直接报 command not found 或 libnnz19.so: cannot open shared object file。
-
GGS_HOME必须指向解压后的根目录(如/u01/app/ogg),不能带 trailing slash;设成/u01/app/ogg/会导致部分脚本找不到dirprm -
LD_LIBRARY_PATH要包含$GGS_HOME和 Oracle 客户端库路径(如$ORACLE_HOME/lib),顺序不能颠倒——OGG 自带的libggjava.so会优先加载自己目录下的libnnz*.so,若 Oracle 库在前,版本不匹配就 core dump - 别把
PATH里的$GGS_HOME写成相对路径或软链真实路径;ggsci启动时会用readlink -f $0推导GGS_HOME,链路断裂就 fallback 到当前目录
配置 Manager 进程必须改的三个参数
Manager 不是配完就能跑,缺一不可:端口冲突、动态端口范围、日志轮转失控,三者占其一,start mgr 就卡住或秒退。
-
PORT建议避开 7809(默认)——很多企业防火墙只放行 1521/22/80,临时开个新端口不如直接改到 1530;写成PORT 1530,别加port或引号 -
DYNAMICPORTLIST必须显式设置,比如DYNAMICPORTLIST 1531-1540;否则 Extract 报ERROR OGG-01223 Unable to bind to port,因为内部辅助端口随机失败 -
AUTORESTART和AUTOBIND要配套:只开AUTORESTART不设AUTOBIND,进程重启后可能绑定不到原端口;推荐写全AUTORESTART EXTRACT *, RETRIES 3, WAITMINUTES 2+AUTOBIND dynamic
Extract 进程启动失败最常见的三个原因
不是权限问题,也不是归档没开,而是配置和 Oracle 环境之间有三处隐性对齐要求没满足。
- 数据库必须开启
FORCE LOGGING且ADD SUPPLEMENTAL LOG DATA;只开LOGGING不够,ALTER DATABASE ADD SUPPLEMENTAL LOG DATA缺了就报OGG-01163 Bad column length(尤其碰到VARCHAR2(4000)) -
EXTTRAIL路径必须在GGS_HOME下且有写权限,不能写成/tmp/dirdat/et;OGG 会自动创建子目录,但父目录dirdat必须存在且属主为运行用户 - Oracle 用户需被显式授予
SELECT ANY DICTIONARY(不只是SELECT_CATALOG_ROLE),否则INFO EXTRACT显示STATUS: ABENDED,查ggserr.log才看到ORA-00942: table or view does not exist(实际是访问DBA_LOG_GROUPS权限不足)
OGG 19c 与 Oracle 21c 兼容的关键检查点
官方文档说支持,但实际部署中两个细节不处理,Extract 一拉取就 hang 在 RECORDS 计数上。
- OGG 19.1.0.0.0 及之后版本才真正支持 Oracle 21c 的
UNIFIED_AUDIT_TRAIL模式;旧版会反复重试解析审计记录,CPU 拉满但无数据输出 - 必须关闭 Oracle 21c 的
ENABLE_DDL_LOGGING=FALSE(默认为 TRUE);OGG 解析 DDL 时依赖DBA_SOURCE,而开启该参数后部分 DDL 不落表,导致ADD TRANDATA失败且无明确报错 -
tnsnames.ora中服务名不能用短名(如ORCL),必须带域名(如ORCL.example.com);21c 默认启用SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a,短名解析触发兼容性降级,连接延迟超 30 秒后 Extract 主动断连
OGG 的坑不在安装包本身,而在它和 Oracle 实例之间那些没写进 checklist 的握手细节。比如 ADD SCHEMATRANDATA 成功不代表真生效——得查 DBA_LOG_GROUPS 里有没有对应条目,否则上线第一天就丢数据。










