台灣最大程式設計社群網站
線上人數
1242
 
會員總數:243159
討論主題:187979
歡迎您免費加入會員
討論區列表 >> ASP.NET >> C# oracle 10 OracleTransaction lock table
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C# oracle 10 OracleTransaction lock table
價值 : 90 QP  點閱數:284 回應數:5

樓主

龍貓王
初學者
20 40
1265 70
發送站內信

用C# 寫webservice 做資料串接 處理
因客戶是oracle 10.2
用 OracleTransaction 替代 transactionscope

但最近有一個問題, 偶爾會等不到回應
猜測會不會是目前測試, 多次呼叫webservice
OracleTransaction 未commit 時卡住

因此想請問, 在C# 連接oracle 我要如何確認是否在lock 中
或是否可以進行解lock 等動作


搜尋相關Tags的文章: [ lock ] , [ commit ] , [ OracleTransaction ] ,
本篇文章發表於2018-03-14 13:04
== 簽名檔 ==
新手, 帥氣XD
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
如果機制上是C#起Tansaction來包Oracle
那麼,理論上就必須在C#中進行Commit時,才會釋放

如果您的問題,試依循上次您提問
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20180310201712VN2.html

而transaction已經移到Oracle中
那麼,呼叫的這一端(C#)就不要有Transaction
Transaction都交由Oracle中的SP來處理

如果還是需要在C#端處理Transaction
那麼,小喵覺得∼問題又回到原來的版本對應問題,還是要先克服解決

^.^a

本篇文章回覆於2018-03-14 16:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

龍貓王
檢舉此回應
其實還是不明白C# 用OracleTransaction 就可以, 用TransactionScope 就不行
一樣都是對oracle 10.2 版本DB

但查了一下, 似乎SqlServer 有sp_lock 之類的可以查lock
oracle 也有系統table v$locked_object
但目前客戶沒有提供到可以查此系統table 的權限user

本來是想是否C# ODP 的 OracleConnection Or OracleTransaction 等物件
有沒有能判斷是否有lock 的功能, 但看來好像是沒有XD

寫在SP, 想想要在SP重寫, 就....
不過能順便請問小貓oracle SP 有學習資源嗎? XD
不過處理xml格式等, 應該不方便吧
本篇文章回覆於2018-03-14 17:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
那部分小喵不是很熟
是否需要我幫您轉版到那邊去?

^.^a
本篇文章回覆於2018-03-14 17:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

龍貓王
檢舉此回應
Oracle 嗎? 不過我本來想問的是C# Webservice 有沒有語法判斷 lock XD

咦..不過忽然想到OracleTransaction LOCK 住的是相關整個table 嗎?
還是能針對相關的row ?
本篇文章回覆於2018-03-14 20:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

龍貓王
檢舉此回應
測試了一下, lock 住的只針對相關row
且select 不會lock 最多別的connection select 不到 或舊資料

應該是客戶測試同料號 出庫入庫 針對同料號update lock 住
本篇文章回覆於2018-03-15 10:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.