问题描述
嗨,汤姆,
我有一个返回ref游标的存储过程,该过程在DB.1 (10g) 中运行,从DB.2 (11g) 上的远程视图中读取,该视图正在从DB.2中选择2个表的并集,另一个表来自远程DB.3 (11g)。
该过程是通过连接池从java程序调用的。最初,我不时收到错误 “ORA-02046分布式事务已经开始”,然后在光标打开之前添加以下行:
回滚;
设置事务只读;
立即执行 “alter session close dblink _ to _ db_2”;
打开cur1 for
选择 .....
现在,我不时收到另一个错误,ora-01453设置事务必须是事务的第一个语句,然后是ORA-02063: LINK_TO_DB_2的前一行。
使用sql plus或TOAD调用过程时,只有从Java程序调用时,才会发生此错误。请问有什么建议吗?
谢谢。
我有一个返回ref游标的存储过程,该过程在DB.1 (10g) 中运行,从DB.2 (11g) 上的远程视图中读取,该视图正在从DB.2中选择2个表的并集,另一个表来自远程DB.3 (11g)。
该过程是通过连接池从java程序调用的。最初,我不时收到错误 “ORA-02046分布式事务已经开始”,然后在光标打开之前添加以下行:
回滚;
设置事务只读;
立即执行 “alter session close dblink _ to _ db_2”;
打开cur1 for
选择 .....
现在,我不时收到另一个错误,ora-01453设置事务必须是事务的第一个语句,然后是ORA-02063: LINK_TO_DB_2的前一行。
使用sql plus或TOAD调用过程时,只有从Java程序调用时,才会发生此错误。请问有什么建议吗?
谢谢。
专家解答
很难通过互联网诊断这类问题。但听起来您在远程数据库上仍然有一个打开的事务。当你在SQL * Plus,TOAD等中运行你的代码时,你可能有一个新的会话。但是您的连接池可能在代码之前运行 “任何内容”,这会导致错误。
要深入了解它,请在代码中添加更多日志记录。具体捕获返回的内容:
在本地和远程数据库上运行 “set transaction...” 语句之前和之后。
如果您仍在挣扎,请发布您正在运行的确切代码的详细信息以及从这些查询中获得的调试信息。
要深入了解它,请在代码中添加更多日志记录。具体捕获返回的内容:
select * from v$transaction select * from v$dblink复制
在本地和远程数据库上运行 “set transaction...” 语句之前和之后。
如果您仍在挣扎,请发布您正在运行的确切代码的详细信息以及从这些查询中获得的调试信息。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
594次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
560次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
482次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
472次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
457次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
430次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
430次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
414次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
358次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
356次阅读
2025-04-15 14:48:05