原帖由 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. 把Chrome浏览器变成文本编辑器

    CoderWall 分享的一个小技巧. 在浏览器地址栏中输入一行代码:data:text/html, <html contenteditable> ,回车即可把浏览器变临时编辑器. 按f1 ...

  2. 【转】reduce端缓存数据过多出现FGC,导致reduce生成的数据无法写到hdfs

    转自  http://blog.csdn.net/bigdatahappy/article/details/41726389 转这个目的,是因为该贴子中调优思路不错,值得学习 搜索推荐有一个job,1 ...

  3. 2016.6.17 kali Linux 隧道工具

    隧道工具的基本概念: 1.在计算机网络中,隧道工具是指使用一种网络协议去封装另一种网络协议的技术. 2.通常用来数据伪装或者穿越防火墙,在入侵目标系统后,可用来提升权限和权限维持. Kali中的隧道工 ...

  4. documnent.getElementbyId(‘myId’)和$(‘#myId’)哪种更高效?

    第一种更高效,直接调用javascript引擎.

  5. 简单几何(圆与多边形公共面积) UVALive 7072 Signal Interference (14广州D)

    题目传送门 题意:一个多边形,A点和B点,满足PB <= k * PA的P的范围与多边形的公共面积. 分析:这是个阿波罗尼斯圆.既然是圆,那么设圆的一般方程:(x + D/2) ^ 2 + (y ...

  6. ural 1272. Non-Yekaterinburg Subway

    1272. Non-Yekaterinburg Subway Time limit: 1.0 secondMemory limit: 64 MB A little town started to co ...

  7. 浅谈Apache Spark的6个发光点(CSDN)

    Spark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析.Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala开发开发,其核心部分的代码只有63个Scala文件 ...

  8. javascript生成n至m的随机整数

    摘要: 本文讲解如何使用js生成n到m间的随机数字,主要目的是为后期的js生成验证码做准备. Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包 ...

  9. 【BZOJ】2435: [Noi2011]道路修建(树形dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2435 我怎么感觉那么水.. 坑的是,dfs会爆...好吧..用bfs.. //upd:我的智商也是醉 ...

  10. CSS实现样式布局

    使用CSS建站时,您肯定遇到过形形色色的布局问题,最后可能被搞得焦头烂额.本文的目的是让您的设计过程更为容易,当您遇到困难时为您提供快速参考. 1.有疑问,先验证 在调试时,先对您的代码进行验证往往能 ...