具有CLOB查询的Oracle RAC故障转移

用户名

所有。我们已经安装了Oracle RAC集群,并且正在使用TAF在SELECT上测试RAC故障转移。我们使用OCI驱动程序即时客户端版本11.2和带有2个副本节点的RAC。

我们尝试了用C编写的基于OCI的简单应用程序,以连接到数据库并从表中检索所有记录。如果在SELECT中不包含CLOB列,则一切正常。

如果我们在CLOB列上执行SELECT并遍历结果集以打印其内容,则当节点发生故障时,OCI驱动程序似乎无法正确恢复查询。

始终引发以下错误代码:

ORA-25408: can not safely replay call

在OCILobLocatorIsInit / OCILobGetLength / OCILobRead中。

发生此错误后,将恢复OCIStmtFetch上的迭代,但不会恢复具有故障转移异常的记录。

这是OCI驱动程序故障转移实施的预期行为吗?还是我们需要修改/增强从CLOB检索缓冲区数据的方式?

这是我们正在使用的OCI调用的摘要:

checkerr(errhp, 
   OCIStmtExecute(svchp, stmthp, errhp, (ub4)1, (ub4)0, 
                  (OCISnapshot*)NULL, (OCISnapshot*)NULL, (ub4)OCI_DEFAULT), 
   __LINE__);

do { 
   checkerr(errhp, 
      OCILobLocatorIsInit((dvoid*)envhp, errhp, lobl, &flag), 
      __LINE__); 

   checkerr(errhp, 
      OCILobGetLength(svchp, errhp, lobl, &loblen), 
      __LINE__); 

   amtp = loblen;

   checkerr(errhp, 
      OCILobRead(svchp, errhp, lobl, &amtp, 1, (dvoid*)buf, 
                (loblen < MAX_SIZE ? loblen : MAX_SIZE), 0, 0, 0, SQLCS_IMPLICIT),
      __LINE__); 

   buf[amtp]='\0';   
   printf("value=%d, text=%s\n", custno, buf); 
} while (
    (status = OCIStmtFetch(stmthp, errhp, (ub4)1, (ub4)OCI_FETCH_NEXT, (ub4)OCI_DEFAULT)) == OCI_SUCCESS || 
    status == OCI_SUCCESS_WITH_INFO);

典型的程序输出类似于:

value = 306, text=ID_#306
value = 307, text=ID_#307
Error - ORA-25408: can not safely replay call
value = 308, text=
value = 309, text=ID_#309

非常感谢,

路卡

西蒙

这是预期的行为。如果LOB列是选择列表的一部分,则故障转移将不起作用。

在这种情况下,您可能需要手动重新运行查询(请参阅文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Oracle-故障转移表或查询操作

来自分类Dev

Apache Apollo是否具有故障转移支持?

来自分类Dev

Oracle数据库故障转移春季启动处理

来自分类Dev

成功进行Oracle节点故障转移后,临时lob的行为

来自分类Dev

向我现有的集群添加自动故障转移?

来自分类Dev

Log4j2的FailoverAppender错误:追加程序故障转移没有与元素故障转移匹配的参数

来自分类Dev

具有复制功能的物理机和虚拟机的故障转移。可能吗?

来自分类Dev

具有故障转移或冗余功能的 mongo 主路由服务器

来自分类Dev

问:具有故障转移功能的 Azure S2S VNet VPN

来自分类Dev

故障转移与高可用性之间有什么区别?

来自分类Dev

OpenLayers(或其他方式)是否可以拥有故障转移WMS源?

来自分类Dev

带有Lighttpd的故障转移群集Couchbase在machine2上失败

来自分类Dev

PXE引导故障转移到预安装的GRUB,而没有错误消息

来自分类Dev

为什么没有在Azure Traffic Manager中根域负载平衡或故障转移?

来自分类Dev

是否可以在没有仲裁的情况下执行 Redis 故障转移?

来自分类Dev

RedShift节点故障转移

来自分类Dev

Postgresql 9.2故障转移

来自分类Dev

Redis哨兵故障转移

来自分类Dev

路由故障转移

来自分类Dev

Oracle快速连接故障转移不适用于ODP.NET。获取连接请求超时错误

来自分类Dev

有没有办法获取Google Cloud SQL故障转移副本实例的详细信息?

来自分类Dev

Redis故障转移和分区?

来自分类Dev

Elasticsearch和Logstash的故障转移

来自分类Dev

Laravel中的Beanstalkd故障转移

来自分类Dev

PDO版本的DB故障转移?

来自分类Dev

Yugabyte故障转移时间

来自分类Dev

ActiveMQ Artemis故障转移与群集

来自分类Dev

Weblogic HTTP会话故障转移

来自分类Dev

Hazelcast故障转移和备份

Related 相关文章

  1. 1

    Oracle-故障转移表或查询操作

  2. 2

    Apache Apollo是否具有故障转移支持?

  3. 3

    Oracle数据库故障转移春季启动处理

  4. 4

    成功进行Oracle节点故障转移后,临时lob的行为

  5. 5

    向我现有的集群添加自动故障转移?

  6. 6

    Log4j2的FailoverAppender错误:追加程序故障转移没有与元素故障转移匹配的参数

  7. 7

    具有复制功能的物理机和虚拟机的故障转移。可能吗?

  8. 8

    具有故障转移或冗余功能的 mongo 主路由服务器

  9. 9

    问:具有故障转移功能的 Azure S2S VNet VPN

  10. 10

    故障转移与高可用性之间有什么区别?

  11. 11

    OpenLayers(或其他方式)是否可以拥有故障转移WMS源?

  12. 12

    带有Lighttpd的故障转移群集Couchbase在machine2上失败

  13. 13

    PXE引导故障转移到预安装的GRUB,而没有错误消息

  14. 14

    为什么没有在Azure Traffic Manager中根域负载平衡或故障转移?

  15. 15

    是否可以在没有仲裁的情况下执行 Redis 故障转移?

  16. 16

    RedShift节点故障转移

  17. 17

    Postgresql 9.2故障转移

  18. 18

    Redis哨兵故障转移

  19. 19

    路由故障转移

  20. 20

    Oracle快速连接故障转移不适用于ODP.NET。获取连接请求超时错误

  21. 21

    有没有办法获取Google Cloud SQL故障转移副本实例的详细信息?

  22. 22

    Redis故障转移和分区?

  23. 23

    Elasticsearch和Logstash的故障转移

  24. 24

    Laravel中的Beanstalkd故障转移

  25. 25

    PDO版本的DB故障转移?

  26. 26

    Yugabyte故障转移时间

  27. 27

    ActiveMQ Artemis故障转移与群集

  28. 28

    Weblogic HTTP会话故障转移

  29. 29

    Hazelcast故障转移和备份

热门标签

归档