in

Darkthread

黑暗執行緒
All Tags » .NET » ORACLE (RSS)

Browse by Tags

  • 【茶包射手日記】老 Bug 新感受之 ODP.NET 版本問題

    同事報案。某個使用 Managed ODP.NET 的測試網站吐出以下錯誤 Error: The type initializer for 'OracleInternal.Common.ProviderConfig' threw an exception. 同事一度懷疑跟 ODP.NET 版本有關,但依經驗,如為版本問題錯誤訊息會確指出所需元件全名、版號等資訊。為調查問題,我直接在 IIS主機 現場撰寫 Tets.aspx 偵錯 ,測試程式一用到 new Oracel.ManagedDataAccess.Client.OralceConnection() 就吐出以下錯誤: Configuration...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 02-09-2018
  • C# 讀取 dbms_output 效能強化版

    前文 介紹過使用 C# 讀取 dbms_output 寫入內容,範例留了一個小尾巴,跑迴圈連資料庫犯了效能大忌,應改成一次執行或查詢取回才上道。 dbms_output.get_lines() 允許一次取得多筆訊息,但傳回型別為 TYPE DBMSOUTPUT_LINESARRAY IS VARRAY(2147483647) OF VARCHAR2(32767); 讀取要費點手腳,Oracle 生手經過一番研究,試出四種不同做法,就當練功吧。 使用 ODP.NET OracleParameter 接收 OracleParameter 有個 CollectionType 屬性,將屬性型別設為 OracleDbType...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-12-2018
  • TIPS - C# 讀取 Oracle dbms_output.put_line 輸出資訊

    使用 dbms_output.put_line() 列印執行資訊是常用的 Oracle Stored Procedure 偵錯技巧,以下 Procedure 範例在DELETE 及 INSERT 後透過 dbms_output.put_line() 印出影響資料筆數,概念跟在程式碼裡塞入一堆 Debug.Print、MsgBox、alert() 差不多,是執行期間追查問題的重要線索: create or replace procedure JeffDBJobTest1 is begin delete from JEFFTEST where idx = 32; dbms_output.put_line...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-11-2018
  • COALESCE 發生字元設定不符合錯誤

    同事報案,Dapper 查詢 ORACLE 時使用 COALESCE() 遇到 ORA-12704: character set mismatch(字元設定不符) 錯誤。 我用以下程式成功重現問題:(jefftest2.t 欄位為 NVARCHAR2) static void Main( string [] args) { using (var cn = new OracleConnection(csStr)) { var list = cn.Query( "select 1 from jefftest2 where coalesce(t, :text) like '%'"...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 07-18-2017
  • MS OracleClient 改用 ODP.NET 之數字型別差異

    System.Data.OracleClient 被微軟宣告為 過時不建議使用 ,是你知道我知道連獨眼龍都知道的事,硬要繼續用甚至會有 效能懲罰 。所以在維護舊專案時,看到還在用 System.Data.OracleClient 的程式,我都會順手換成 Managed ODP.NET 。(若為 .NET 3.5 平台則只能用 Unmanaged ODP.NET) 近日踩到小鐵釘一根。 如下圖,程式原本使用 System.Data.OracleClient,執行正常: 改 using Oracle.ManagedDataAccess.Client 換用 Managed ODP.NET,出現型別轉換錯誤...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 04-20-2017
  • OracleParameter 型別不符導致 ORA-03111 通訊中斷錯誤

    記錄在 Oracle 遇到的古怪錯誤。 Oracle Server 版本 10.2.0.4 64bit,Client 端用 Managed ODP.NET 12.1.24160719(取自 NuGet),某段程式碼誤傳 Varchar2 OracleParameter 與 DATE 欄位進行比對,預期應出現型別不符錯誤,但得到錯誤訊息為 ORA-03111 在通訊通道上收到中斷訊號( Break received on communication channel ): 該資料表有其他 DATE 欄位,將 WHERE 條件換成其他 DATE 欄位,也會觸發 ORA-03111。 另一個資料表也有類似...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 03-22-2017
  • ODP.NET 發行者原則檔經驗一則

    之前處理過一個 鳥問題 ,使用 ODP.NET 12.1 連線 Oracle Server 10.2.0.4 時無法參與分散式交易,傳回「Unable to enlist in a distributed transaction /無法列於分散式交易中」錯誤。依網路討論 Server 升級到 10.2.0.5 以上可解決,當時決定將資料庫移至另一台 Oracle Server 11.2 成功脫逃,安全下莊。 半年後鳥問題捲土重來,一樣是 ODP.NET 12.1 連 Oracle 10.2.0.4 無法分散式交易,但這回資料庫沒得搬也很難升級,只能乖乖面對。 確認其他機器曾有 ODP.NET 11...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-05-2017
  • 【茶包射手日記】System.Data.OracleClient更新中文變問號

    同事報案,某支在Windows 2003主機運作良好的轉檔程式,移至開發機執行更新Oracle資料庫時,中文變成問號。 比較原本執行正常的環境為Windows 2003 x86英文版 + Oracle Client 9207(真實世界永遠不乏這種與時代嚴重脫節卻維繫日常營運的中流砥柱啊),開發機則為Windows 7 x64英文版 + Oracle Client 12.1,二者存在不少差異。 寫了一段測試程式嘗試驗證問題,在我的機器(Windows 8.1 x64中文版 + Oracle Client 12.1)更新中文正常,移到同事的機器執行更新中文… 也正常。登楞! 只好回到轉檔程式用Visual...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-15-2016
  • 惱人的Managed ODP.NET ConfigSection問題

    自從學會 Managed ODP.NET ,它馬上成為我的奧林匹克指定資料庫元件。不用額外安裝Oracle Client,管它x86還是x64,只要在主機設好TNSNAMES.ORA(我慣用的做法是用%TNS_ADMIN%環境參數提供路徑,一台主機只要設一次,部署到不同主機時不需改config),用NuGet下載安裝好一切搞定,十分方便。比起傳統ODP.NET常常糾結於x84與x64與Oracle Client版號高低,Managed ODP.NET高雅先進,用過之後就回不去了。 不過,我常遇到一個小問題,使用NuGet安裝Managed ODP.NET會自動在web.config加以下區段宣告...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 09-09-2016
  • ODP.NET版本暴力解法之懶人工具

    ODP.NET的版本問題一直像鬼魅般苦苦糾纏,最近又碰上了... orz 經 前一篇文章 證實,在參考ODP.NET 10.2的ASP.NET網站,若再引用參考了ODP.NET 11.2的其他元件,將產生has a higher version than referenced assembly編譯錯誤,且無法以bindingRedirect解決。有顆共用元件要提供給多個專案使用,有些專案仍須維持ODP.NET 10.2,有些專案則已經更新到ODP.NET 11.2,且實務上無法要求大家統一。因此,要解決此一問題,我想到幾種做法: 方法一是共用元件改回參照ODP.NET 10.2,在11.2版本環境中則用bindingRedirect設定或是發行者原則檔進行...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 08-24-2012
第1頁,共4頁 (33個項目) 1 2 3 4 下一頁 >
Powered by Community Server (Non-Commercial Edition), by Telligent Systems