OGG-15051 错误
前言
启动 Replicat 进程的时候出现 OGG-15051 错误的解决方法,在网上搜索到的解决方法并不适用于我的环境,所以记录一下
OGG-15051 错误
在目标端 ogg Kafka 环境 Replicat 进程启动时,遇到以下错误: ```shell 2025-02-26 22:07:45 INFO OGG-03059 Operating system character set identified as UTF-8.
2025-02-26 22:07:45 INFO OGG-02695 ANSI SQL parameter syntax is used for parameter parsing.
2025-02-26 22:07:45 INFO OGG-03528 The source database character set, as determined from the table definition file, is UTF-8. REPLICAT r_ftest sourcedefs ./dirdef/mapping_uat_ka.def TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka_wms_ftest.props
2025-02-26 22:07:45 INFO OGG-15052 Using Java class path: ./ggjava/ggjava.jar:dirprm:.dirprm/:/opt/datasophon/kafka-2.4.1/:/home/ogg/ogg21/:/home/ogg/ogg21/lib/.
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Producer
at oracle.goldengate.handler.kafka.impl.KafkaProperties.getProducerInstance(KafkaProperties.java:152)
at oracle.goldengate.handler.kafka.KafkaHandler.init(KafkaHandler.java:162)
at oracle.goldengate.datasource.AbstractDataSource.addDataSourceListener(AbstractDataSource.java:592)
at oracle.goldengate.datasource.factory.DataSourceFactory.getDataSource(DataSourceFactory.java:161)
at oracle.goldengate.datasource.UserExitDataSourceLauncher.
2025-02-26 22:07:46 WARNING OGG-00869 java.lang.ClassNotFoundException: org.apache.kafka.clients.producer.Producer.
Source Context : SourceModule : [gglib.ggdal.adapter.java] SourceID : [ggdal/Adapter/Java/JavaAdapter.cpp] SourceMethod : [HandleJavaException] SourceLine : [274] ThreadBacktrace : [16] elements : [/home/ogg/ogg21/libgglog.so(CMessageContext::AddThreadContext())] : [/home/ogg/ogg21/libgglog.so(CMessageFactory::CreateMessage(CSourceContext, unsigned int, …))] : [/home/ogg/ogg21/libgglog.so(_MSG_String(CSourceContext, int, char const, CMessageFactory::MessageDisposition))] : [/home/ogg/ogg21/libggjava.so()] : [/home/ogg/ogg21/libggjava.so(ggs::gglib::ggdal::CJavaAdapter::Open())] : [/home/ogg/ogg21/replicat(ggs::gglib::ggdal::CDALAdapter::Open(ggs::gglib::ggunicode::UString const&))] : [/home/ogg/ogg21/replicat(GenericImpl::Open(ggs::gglib::ggunicode::UString const&))] : [/home/ogg/ogg21/replicat(odbc_param(char, char, ggs::gglib::ggapp::ReplicationContextParams const&))] : [/home/ogg/ogg21/replicat(get_infile_params(ggs::gglib::ggapp::ReplicationContextParams&, ggs::gglib::ggdatasource::DataSourceParams&, ggs::gglib::ggdatatarget::DataTargetP arams&, ggs::gglib::ggmetadata::MetadataContext&))] : [/home/ogg/ogg21/replicat()] : [/home/ogg/ogg21/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain())] : [/home/ogg/ogg21/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs))] : [/home/ogg/ogg21/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))] : [/home/ogg/ogg21/replicat(main)] : [/lib64/libc.so.6(__libc_start_main)] : [/home/ogg/ogg21/replicat()]
2025-02-26 22:07:46 ERROR OGG-15051 Java or JNI exception: java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Producer.
2025-02-26 22:07:46 ERROR OGG-01668 PROCESS ABENDING. ~~~
解决方法
1. 确认 Kafka 客户端 JAR 文件存在
- 操作步骤:
- 登录到 OGG 服务器,检查 Kafka 客户端 JAR 文件路径:
1
ls /opt/datasophon/kafka-2.4.1/libs/kafka-clients-*.jar
- 如果文件不存在,需下载匹配的 Kafka 客户端 JAR(版本需与 Kafka 服务端一致):
- 从 Maven 仓库下载(例如 kafka-clients 2.4.1
- 将文件复制到目标路径:
1
cp kafka-clients-2.4.1.jar /opt/datasophon/kafka-2.4.1/libs/
- 登录到 OGG 服务器,检查 Kafka 客户端 JAR 文件路径:
2. 调整 OGG 的 Java 类路径配置
- 操作步骤:
- 编辑 OGG 的 Kafka Handler 配置文件
dirprm/kafka_wms_ftest.props
,确保包含以下内容:1
gg.classpath=/opt/datasophon/kafka-2.4.1/libs/*:/path/to/other/dependencies/*
示例:
1
gg.classpath=/opt/datasophon/kafka-2.4.1/libs/*:/home/ogg/ogg21/lib/*
- 保存文件并重启 Replicat 进程。
我的原因是因为在配置文件中指定的类路径错误,导致无法加载
Producer
类 - 编辑 OGG 的 Kafka Handler 配置文件
3. 验证 Kafka 客户端版本兼容性
- 操作步骤:
- 检查 OGG 21c 官方文档支持的 Kafka 版本
- 如果版本不兼容,升级 Kafka 客户端 JAR 文件:
1 2 3
# wget https://repo1.maven.org/maven2/org/apache/kafka/kafka-clients/3.0.0/kafka-clients-3.0.0.jar cp kafka-clients-3.0.0.jar /opt/datasophon/kafka-2.4.1/libs/
- 如果版本不兼容,升级 Kafka 客户端 JAR 文件:
- 检查 OGG 21c 官方文档支持的 Kafka 版本
4. 检查文件权限
- 操作步骤:
- 确认 OGG 安装的用户(如
ogguser
)对 Kafka JAR 文件有读取权限:1
chmod -R 755 /opt/datasophon/kafka-2.4.1/libs/
- 验证权限:
1
ls -l /opt/datasophon/kafka-2.4.1/libs/kafka-clients-*.jar
- 确认 OGG 安装的用户(如
5. 更新 GLOBALS 文件(可选)
- 操作步骤:
- 在 OGG 安装目录下的
GLOBALS
文件中,显式指定 Java 类路径:1
JVMCLASSPATH /opt/datasophon/kafka-2.4.1/libs/*
- 在 OGG 安装目录下的
6. 验证环境变量
- 操作步骤:
- 设置环境变量(临时生效):
1
export CLASSPATH=/opt/datasophon/kafka-2.4.1/libs/*:$CLASSPATH
- 启动 Replicat 进程测试。
- 设置环境变量(临时生效):
7. 重启 Replicat 进程
- 操作步骤:
- 在 GGSCI 命令行中停止并重启 Replicat:
1 2
GGSCI> stop replicat r_ftest GGSCI> start replicat r_ftest
- 在 GGSCI 命令行中停止并重启 Replicat:
8. 查看详细日志
- 操作步骤:
- 检查 Replicat 日志文件(位于
dirrpt/r_ftest.rpt
):1
cat dirrpt/r_ftest.rpt
- 根据日志中的具体错误调整配置。
- 检查 Replicat 日志文件(位于
总结
- 根本原因:
OGG 的 Java 类路径未正确包含 Kafka 客户端 JAR 文件(如
kafka-clients-xxx.jar
),导致运行时无法加载Producer
类。 - 关键解决步骤:
- 确认 Kafka 客户端 JAR 文件存在且版本兼容。
- 在 OGG 配置文件或
GLOBALS
中显式指定类路径。 - 检查权限和环境变量设置。