Browse by Tags

【茶包射手日記】LINQ Contains查詢引發ORA-01425錯誤
網友報案:使用 ODAC112030 與 Visual Studio 建立 Entity Framework Model ,在 C# 使用 LINQ 語法.Where(o => o.ColName.Contains(someVar)),被轉換成以下SQL語法: WHERE ("Extend1"."FOO" LIKE :p__linq__0 ESCAPE '\') 送到Oracle 9i執行(是的,侏儸紀時代的Oracle 9),冒出ORA...
Posted 09 May 2015 07:55 AMJeffrey | with no comments 14,837
Filed under: ,
【茶包射手日記】Managed ODP.NET在ASP.NET發生ORA-12154錯誤
故事要從前幾天學會 讓ODP.NET查詢加速10倍的密技 說起,原始問題在於 Dapper 查詢效能不佳,正想把新發現套用在Dapper上… 登楞!Dapper透過IDbConnection擴充方法提供功能,根本沒機會對OracleCommand或OracleDataReader動手腳啊!(抱頭) 打開Dapper原始碼,想研究有沒有地方傳FetchSize參數(還在裡面看到華麗的Emit特技,嘆為觀止),由於FetchSize非通用ADO.NET屬性,無功而返。 另一條路從環境設定著手,倒有點收獲...
Posted 01 May 2015 08:25 AMJeffrey | with no comments 22,335
Filed under: ,
讓ODP.NET查詢快10倍的小密技-FetchSize
同事報案,某專案使用ODP.NET+ Dapper 查詢一萬筆資料要耗時三分鐘,而同樣查詢丟到PL/SQL Developer跑只要15秒。為了洗刷.NET效能不佳的罪名,立刻出發調查。 我實做一個簡單測試重現問題,在我的i7機器執行,查詢取回10,691筆耗時34.794秒;用PL/SQL Developer查詢測得11.453秒,足足慢了3倍。 using Oracle.DataAccess.Client; using System; using System.Collections.Generic;...
Posted 28 April 2015 09:05 PMJeffrey | 2 comment(s) 12,185
Filed under:
Managed ODP.NET簡介
被 Oracle Client版本問題 困擾過很多次,之前由網友回饋得知Managed ODP.NET,一直沒深入研究過,直到今天完成評估,新武器一枚入手。 過去我們常用的Oracle.DataAccess(ODP.NET),骨子裡其實是走Unmanaged,得靠oci.dll那堆程式庫才能連上資料庫,因此安裝時必須一併安裝Oracle Client,而Unmanaged Oracle Client有32位元跟64位元之分,許多開發者還因此學會IIS Application Pool啟用32位元模式的技巧呢...
Posted 31 March 2015 09:46 PMJeffrey | 9 comment(s) 51,943
Filed under:
【茶包射手日記】ODP.NET如何找對Oracle Client檔案?
同事報案,某網站部署至新主機出現錯誤: [OracleException (0x80004005): 提供者與 Oracle 從屬端版本不相容]    Oracle.DataAccess.Client.OracleInit.Initialize() +517    Oracle.DataAccess.Client.OracleParameter..cctor() +29 [TypeInitializationException: The type initializer...
Posted 17 March 2015 09:20 PMJeffrey | with no comments 12,911
Filed under: ,
【茶包射手日記】OracleDataReader數字型別對應陷阱(ODP.NET)
接獲報案,由Oracle資料庫讀取NUMBER(14,6)欄位,原值為1.997748,JSON轉換送至Client端變成1.9977479999999999! 判斷這是典型浮點數問題(順便複習: 算錢用浮點,遲早被人扁 ),但檢視程式,OracleCommand執行查詢,由NUMBER(14,6)欄位直接SELECT取值,未經過任何計算,資料由OracleDataReader讀取交給JsonConvert轉換,程式寫法沒有可議之處,決定使用浮點型別(double)的犯人--顯然是OracleDataReader...
Posted 25 June 2014 10:17 PMJeffrey | 2 comment(s) 6,979
Filed under:
Let It Go吧! System.Data.OracleClient
記得四年前微軟就 正式宣告 建議大家不要再用System.Data.OracleClient,改用ODP.NET。當時Oracle對LINQ支援還不太好,想用LINQ或EF得尋求3rd Party解決方案,從 ODAC 11.2 起,Entity Framework已是ODP.NET標準配備,System.Data.OracleClient的存在就更只剩下向前相容。 今天幫忙射掉茶包一枚: 使用SQLPlus執行SELECT * FROM BIGTABLE查詢約3萬6千筆資料耗時50秒,執行以下...
Posted 20 June 2014 09:25 PMJeffrey | with no comments 5,791
Filed under:
SQLPlus執行UTF-8編碼指令檔
作業環境有個需求: 有一些PL/SQL DDL指令需先匯成sql檔,再透過程式呼叫SQLPlus.exe執行。 SQLPlus.exe可讀入SQL Script檔案直接執行,例如: sqlplus –s user/pwd @script.sql,而透過程式啟動外部EXE也不是問題,一切看似小菜一碟... BUT! 人生最厲(ㄐㄧ)害(ㄨㄞ)的就是這個BUT! 問題出在SQLPlus在命令提示視窗(Command Prompt)執行,只支援ANSI編碼,而script.sql可能包含Unicode文字...
Posted 24 May 2014 09:40 AMJeffrey | with no comments 20,099
Filed under: ,
SQL Server x64建立Oracle Linked Server筆記
過去已有很多在SQL 2005/SQL 2008建立Oracle Linked Server的經驗,本屬稀鬆平常小事,今天第一次在SQL 2008 R2 x64執行,發現有些眉角,特筆記之。 需安裝64位元版Oracle Provider for OLE DB 明明機器每天在跑.NET程式連Oracle,卻發現Linked Server的Provider中沒有Oracle Provider for OLE DB可選! 這才想到,原本只裝了32位元版ODAC 11.2,.NET程式也都切成x86執行...
Posted 26 October 2012 11:23 PMJeffrey | 4 comment(s) 33,496
Filed under: ,
【茶包射手日記】安裝ODAC 11.2 Release 5後Visual Studio無法使用Oracle資料來源
使用Visual Studio 2012已經好一陣子,手上的專案也逐一改用VS2012維護開發。今天處理的專案剛好涉及Oracle,想當然爾,要用 Entity Framework 才是王道! 此時發現原先安裝的ODAC 11.2 Release 4,只支援到VS2010,在VS2012新增ADO.NET Entity Data Model時,Data source沒有"Oracle Database (Oracle ODP.NET)"可選,所幸Oracle已於9/11推出 ODAC...
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,且實務上無法要求大家統一。因此...
Posted 25 August 2012 11:00 AMJeffrey | with no comments 9,097
Filed under: , ,
【茶包射手日記】詭異的Oracle Client錯誤
接獲報案,某台開發機器首次以.NET連接Oracle時出現問題(SqlPlus及PL/SQL Developer等工具運作正常),使用System.Data.OracleClient測試,在OracleConnection.Open()時彈出例外: System.Exception: OCIEnvCreate 失敗並傳回代碼 -1 但錯誤訊息文字不可用。    於 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection...
Posted 28 July 2012 11:58 AMJeffrey | with no comments 13,557
ODAC-在Entity Framework加入其他Schema的Table
得知Oracle推出正式版Entity Framework元件後,ODP.NET及System.Data.OracleClient就被我打入冷宮,專案需要存取Oracle時幾乎都改用EF處理。 今天遇到新狀況: 有個Oracle資料庫提供了讀取權限的專屬帳號(例如: NRMQRY),實際的資料表在另一個GB Schema中,但有GRANT SELECT權限。在專案新增了ADO.NET Entity Data Model、指定Oracle伺服器名稱、用NRMQRY帳號建好連線( 步驟參考 ),正準備要將資料表加入...
Posted 03 July 2012 07:35 PMJeffrey | 1 comment(s) 7,440
Filed under: ,
測試ODAC 11.2.0.3 + EF4自動跳號
剛好有網友 提到 ODAC 11.2.0.3 + EF4配合自動跳號的問題,之前曾用Devart EF元件實現過(且當時發現有SSDL無法自動更新的Bug),現在有了ODAC EF,又有 Oracle Developer Tools for Visual Studio (ODT)加持,決定用新元件、新工具重新演練一次。 用ODT建立資料表上回就已示範,這次略過操作步驟,直接建好一個具有ID DECIMAL(10, 0), MTEXT VARCHAR2(100)兩個欄位的資料表MEMO。要在Oracle實現自動跳號...
Posted 08 May 2012 06:08 AMJeffrey | with no comments 8,579
Filed under: ,
MEMO-ASP.NET偶發ORA-12571 TNS封包寫入器失敗
第二次遇到,近年因孟婆湯飲用過量,花了點時間才回憶起,特PO文備忘。 ASP.NET網站伺服器遷移後,查詢Oracle資料庫時偶爾會出現" ORA-12571: TNS:封包寫入器失敗(TNS:packet writer failure) ",但重新整理網頁後則又正常。 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx...
Posted 10 April 2012 10:50 AMJeffrey | 4 comment(s) 17,186
Filed under:
更多文章 « 上一頁 - 下一頁 »

搜尋

Go

<March 2023>
SunMonTueWedThuFriSat
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication