[Oracle][ODBC SQL Server Driver][SQL Server]對象名 'RECOVER.HS_TRANSACTION_LOG' 無效

來源:互聯網
上載者:User

標籤:

原帖由  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' 無效(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.