gpt4 book ai didi

java - Oracle RDF 表在保存三元组时抛出 ORA-22835 错误

转载 作者:行者123 更新时间:2023-11-29 06:00:31 26 4
gpt4 key购买 nike

我们正在运行一个使用 Jena 适配器将数据保存到 Oracle RDF 三重存储的 Java 应用程序。我们的 Oracle 版本是 11gR2。

最近,我们在保存大型三元组时遇到此错误。

ERROR http-bio-8080-exec-4 oracle.spatial.rdf.client.jena.GraphOracleSem:
Could not add triple java.sql.SQLException:
ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 5223, maximum: 4000)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1008)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OraclePreparedStatement.sendBatch(OraclePreparedStatement.java:3753)
at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2112)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3444)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
at oracle.spatial.rdf.client.jena.GraphOracleSem.performAdd(GraphOracleSem.java:3509)
at oracle.spatial.rdf.client.jena.OracleBulkUpdateHandler.add(OracleBulkUpdateHandler.java:1226)
at oracle.spatial.rdf.client.jena.OracleBulkUpdateHandler.addIterator(OracleBulkUpdateHandler.java:1257)
at oracle.spatial.rdf.client.jena.OracleBulkUpdateHandler.add(OracleBulkUpdateHandler.java:1278)
at oracle.spatial.rdf.client.jena.OracleBulkUpdateHandler.add(OracleBulkUpdateHandler.java:1268)
at com.hp.hpl.jena.sparql.modify.UpdateProcessorVisitor$1.exec(UpdateProcessorVisitor.java:51)
at com.hp.hpl.jena.sparql.modify.GraphStoreUtils.action(GraphStoreUtils.java:60)
at com.hp.hpl.jena.sparql.modify.UpdateProcessorVisitor.visit(UpdateProcessorVisitor.java:48)
at com.hp.hpl.jena.sparql.modify.op.UpdateInsertData.visit(UpdateInsertData.java:16)
at com.hp.hpl.jena.sparql.modify.UpdateProcessorMain.execute(UpdateProcessorMain.java:34)
at com.hp.hpl.jena.update.UpdateAction.execute(UpdateAction.java:253)
at com.hp.hpl.jena.update.UpdateAction.parseExecute(UpdateAction.java:176)
at com.hp.hpl.jena.update.UpdateAction.parseExecute(UpdateAction.java:143)
at com.hp.hpl.jena.update.UpdateAction.parseExecute(UpdateAction.java:105)

如错误所述,它发生在数据字符串大于 4000 个字符时。虽然它没有在错误中指定表/列,但 Oracle 文档表明它应该在内部自动处理:

RDF_VALUE$ Table:

LONG_VALUE: CLOB - The character string if the length of the lexical value is greater than 4000 bytes. Otherwise, this column has a null value.

VALUE_NAME: VARCHAR2(4000) - This is a computed column. If length of the lexical value is 4000 bytes or less, the value of this column is the concatenation of the values of VNAME_PREFIX column and the VNAME_SUFFIX column.

有些用户没有看到此错误,尽管可能是他们没有尝试保存足够大的内容。我们已经尝试清除用户的三重存储模型,这似乎工作了几天但后来又回来了。

有人知道从哪里开始调试吗?谢谢。

最佳答案

几年前我遇到过同样的问题。您使用的是哪个版本的 jena-adapter?我有一个补丁解决了这个问题,也许你可以试试看它是否仍然可以在 oracle 支持上使用。这是我收到的指示:

  1. 登录到 support.oracle.com,
  2. 然后点击补丁和更新选项卡
  3. 在“补丁搜索”面板中,单击“搜索”选项卡,在“补丁名称”或“补丁编号”按钮后的文本框中键入 10186312。
  4. 点击搜索按钮。它应该返回一个匹配项。
  5. 点击补丁名称 10186312,然后点击下载。

关于java - Oracle RDF 表在保存三元组时抛出 ORA-22835 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10300104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com