原帖由 qingyun 于 2010-6-21 15:44 发表 
在写pl/sql的时候,有个很重要的注意点;
比如:
begin
  update  某个sqlserver的表@dblink名字 .....;
  update 某个oracle的表...;
end;

这段pl/sql执行会报错:
错误信息是:
-----------------------------------------------------------------
执行失败:ORA-02054: 事务处理 2.12.27634 有问题
ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息: 
[Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效。
ORA-02063: 紧接着 2 lines (起自 dblink名字)
-----------------------------------------------------------------

然后你执行:
  select * from    某个sqlserver的表@dblink名字 
这个没问题;

再执行:
select * from  某个oracle的表

完了!结果提示:
执行失败:ORA-01591: 锁被有问题的分布式事务处理 2.12.27634 持有

这时候,你查询:
SELECT * FROM DBA_2PC_PENDING 
会发现,被锁的信息;

然后,你用
commit/rollback force '2.12.27634' ;  解锁;

当然这里的2.12.27634 是随机的。每次被锁,都是不同的值;

这个问题如何解决呢? 
begin
  update  某个sqlserver的表@dblink名字 .....; 
  commit; --非常重要;
  update 某个oracle的表...;
end;
这样就OK了,原因我觉得是这样的:oracle内部其实是两块事务,一个是针对sqlserver,一个针对自己的oracle;
所以必须把两端的事务独立下来;

下面这个写法也是OK的:

begin
  update  某个sqlserver的表@dblink名字 .....; 
update  某个sqlserver的表@dblink名字 .....; 
  commit; --非常重要;
  update 某个oracle的表...;
update 某个oracle的表...;
end;

终于把事务问题解决了,这个问题,如鲠在喉;困扰我半年了,如今客户的系统马上要正式使用;

我被迫又摸索了一把,终于搞定了:

解决方法:

1. 修改 initdg4msql.ora文件;

最后两行:
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
修改成

HS_FDS_RECOVERY_ACCOUNT=dbo
HS_FDS_RECOVERY_PWD=sa的密码;

这个是最简单的方法,当然也可以在mssql 建立recover用户,我觉得还是越简单越好;

2. 在sqlserver 数据库上运行:
DROP TABLE HS_TRANSACTION_LOG
go

CREATE TABLE HS_TRANSACTION_LOG(
  GLOBAL_TRAN_ID char (64) NOT NULL,
  TRAN_COMMENT char (255) NULL
)
go

grant all on HS_TRANSACTION_LOG to public
go

这样一切都搞定了;再也不用担心两个数据库间事务切换的问题了;

 
http://www.daizhicun.com

[Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效(转)的更多相关文章

  1. PowerDesigner反向数据库时遇到[Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句。SQLSTATE = 37错误解决方法

    逆向工程中,有时会出现如下错误 ... [Microsoft][ODBC SQL Server Driver][SQL Server]无法预定义语句 SQLSTATE = 37000 解决方案: 1. ...

  2. Delphi东京版FireDAC连接MSSQL2000提示对象名 'SYS.DATABASES' 无效

    在Delphi 10.2.1 东京 版中,FireDAC默认不兼容MSSQL2000,会提示“[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driv ...

  3. 对象名 'dbo.__MigrationHistory' 无效 错误解决

    // 在数据库上下文的构造方法里 public GewPeAppContext() : base(ConnectionStrings.GewPeAppConnectionString) { // 添加 ...

  4. SQL数据库对象名无效的解决方法

    对象名 'dbo.xxxx' 无效. 最后找到如下方法解决:原因是必须把所有以前的所有者改为DBO就不会出问题了. 执行下面语句,更改所有表的所有者为DBO exec sp_msforeachtabl ...

  5. 数据库 alert.log 日志中出现 "[Oracle][ODBC SQL Server Wire Protocol driver][SQL Server] 'RECOVER'"报错信息

    现象描述: (1).数据库通过调用透明网络实现分布式事务,但透明网关停用后,失败的分布式事务并未清理. (2).数据库 alert 日志 Thu Sep 06 06:53:00 2018 Errors ...

  6. 连接SQLServer2005失败--[Microsoft][ODBC SQL Server Driver][DBNETLIB]一般性网络错误。请检查网络文档

    连接SQLServer2005失败,错误信息: 错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][ODBC ...

  7. [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝

    一般连接sql数据库,IP_connstr="driver={SQL Server}; server=127.0.0.1;database=数据库名字;uid=sa;pwd=密码" ...

  8. firedac odbc sql server driver连接占线导致另一个hstmt

    firedac odbc sql server driver连接占线导致另一个hstmt 原因:FDQuery.FetchOptions.Mode=fmOnDemand.好像是为了性能问题,不设置则默 ...

  9. 使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g

    ORACLE官方提供的Sql Developer自带的Oracle Migration Workbench. 什么是Oracle SQL Developer?在官方页面上,是这样介绍它的: Oracl ...

随机推荐

  1. 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)

    转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...

  2. Listview点击事件

    listview = (ListView) findViewById(R.id.listview); // 填充data数据 data = new ArrayList<String>(); ...

  3. 逆序数 POJ 2299 Ultra-QuickSort

    题目传送门 /* 题意:就是要求冒泡排序的交换次数. 逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序. 一个排列中逆序的总数就称为这个排列的逆 ...

  4. sql 关联查询

    SELECT mms_sample_datas.* from mms_sample_datas where mms_sample_datas.mms_id in ( SELECT mms_sample ...

  5. LightOJ 1422 (区间DP)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27130 题目大意:按顺序去参加舞会.每个舞会对衣服都有要求.可以 ...

  6. Sublime Text 2配置

    gedit用了很久,终于换编辑器了T_T Sublime Text 自行百度谷歌. 一开始我在官网下载的压缩包,然后自己配置.搞了半天后果断删掉...还是用源的自动安装吧.T_T 恩.下面的命令 su ...

  7. WordPress折腾日记

    安装环境: 我开了个虚拟机xp....用xampp的整合包..下载地址https://www.apachefriends.org/zh_cn/download.html 跟着安装就行了.最后打开xam ...

  8. POJ 2891 Strange Way to Express Integers(中国剩余定理)

    题目链接 虽然我不懂... #include <cstdio> #include <cstring> #include <map> #include <cma ...

  9. SHell string操作 转

    本文也即<Learning the bash Shell>3rd Edition的第四章Basic Shell Programming之读书笔记之二,但我们将不限于此. String操作 ...

  10. thinkphp 代码执行

    相关漏洞:http://loudong.360.cn/vul/info/id/2919 ThinkPHP 开启lite模式后,会加载ThinkPHP/Extend/Mode/Lite/Dispache ...