日期:2014-05-18  浏览次数:20686 次

存储过程中使用 database link
s:= 'select   aa   from   table1@aaa ';
execute   immediate   s     into   Rst;


调用这个存储过程的时候怎么提示


ORA-02041:   客户数据库未开始一个事务处理\nORA-06512


再pl/sql工具中执行是没有问题的

------解决方案--------------------
估计要求启动一个分布式的事务。
------解决方案--------------------
改成这样不好吗?
s:= 'select aa from table1@aaa into Rst ';
execute immediate s ;

------解决方案--------------------
启用分布式事务:
1、运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC。
添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1。
2、重启MS DTC服务。
3、打开“管理工具”的“组件服务”。
a. 浏览至 "启动管理工具 "。
b. 选择 "组件服务 "。
c. 展开 "组件服务 "树,然后展开 "我的电脑 "。
d. 右键单击 "我的电脑 ",然后选择 "属性 "。
在 MSDTC 选项卡中,确保选中了下列选项:
网络 DTC 访问
网络管理
网络事务
XA 事务
另外, "DTC 登录帐户 "一定要设置为 "NT Authority\NetworkService "。
4、重启MS DTC服务。
5、再次运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC,然后删除 TurnOffRpcSecurity 项。
------解决方案--------------------
建議樓主到百度www.baidu.com
搜一搜“ORA-02041: 客户数据库未开始一个事务处理\nORA-06512”
有很多類似樓主的問題