避免 ORA-22922 的 JDBC 参数:不存在的 LOB 值

问题描述 投票:0回答:1

我正在开发一个 kafka 连接,它使用 sql 请求从数据库获取信息。 这个sql请求就像一个

select 
    X,X,X,
    JSON_ARRAYAGG(
        JSON_OBJECT(
            select X,X,X)).

我的问题似乎出在可能超过 18k 个字符的 JSON_ARRAYAGG 上。 在这种情况下,如果出现两行这样的行,则会抛出以下错误:

org.apache.kafka.connect.errors.DataException: java.sql?SQLException: ORA-22922: nonexistant LOB value at io.confluent.connect.jdbc.source.TimestampTableQuerier.doExtractRecord(TimestampTableQuerier.java:150) at ... Caused by: java;sql.SQLExeption: ORA-22922: nonexistant LOB value at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509) at ...

我设法使用 DBeaver 获得了类似的结果,并且在一些帮助下,似乎取消选中“对 CLOB 值使用缓存”可以解决该工具上的问题。

但是,我无法在 jdbc 文档中找到是否有类似的参数可以添加到我的 kafka connect yaml 中来解决问题。

有谁知道Oracle jdbc是否存在这个参数?

我已经做了什么: 我设法减少了 sql 请求的返回值数量,以便隔离似乎一起生成问题的两个值。 我设法在 DBeaver 上重现这些值的错误(“复制内容时出现 IO 错误”),然后向我解释了 Dbeaver 的解决方案:取消选中“对 CLOB 值使用缓存”。

我尝试使用 blob 并要求 Kafka connect 将其转换为文本,但结果是相同的。

oracle jdbc apache-kafka-connect
1个回答
0
投票

哪些数据库和 JDBC 版本?

ORA-22922 是在 Ask-Tom 论坛中提出的,其中包含一些与 JDBC 无关的建议。 你能检查一下吗 https://asktom.oracle.com/pls/apex/f?p=100:11:::::P11_QUESTION_ID:9543118700346635079

© www.soinside.com 2019 - 2024. All rights reserved.