Browse by Tags

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 欄位...
Posted 22 March 2017 10:05 PMJeffrey | 2 comment(s) 961
Filed under: ,
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...
Posted 06 January 2017 06:39 AMJeffrey | with no comments 2,819
Filed under: ,
【茶包射手日記】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...
Posted 15 September 2016 01:28 PMJeffrey | with no comments 2,061
Filed under: ,
惱人的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高雅先進,用過之後就回不去了。 不過,我常遇到一個小問題...
Posted 10 September 2016 05:49 AMJeffrey | with no comments 2,557
Filed under: ,
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 6,341
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 9,575
ODP.NET OracleBulkCopy
嫌棄使用OracleCommand批次更新大量資料效能不佳,爬文找到ODP.NET有個 OracleBulkCopy類別 支援將整個ADO.NET DataTable一次送至資料庫更新(與SQL 2008的 Table Value Parameter 有異曲同工之妙),於是做了Lab測試效果。 在Oracle資料庫建了一個TABLE BIGONE (N DECIMAL(6,0), T NVARCHAR2(64))資料表,在.NET程式中產生五萬筆資料,分別使用以下兩種方法寫入資料庫: 1) 建立OracleCommand...
Posted 19 August 2011 07:19 PMJeffrey | 2 comment(s) 18,124
Filed under: , ,
OracleCommand Visualizer for VS2010
前陣子開發系統時,常在抓OracleCommand的執行期錯誤,有時是SQL語法寫錯,有時是參數數目不符,有時則是參數值給錯... (列原因寫到自己都汗顏,寫程式明明就要心思細膩,我的心思... 應該粗如電線桿吧?) 雖然VS2010在偵錯階段提供了很強的物件檢視功能,能逐一檢視物件的每個屬性且能逐層展開,必要時還可用即時運算視窗下指令做進一步操作分析,但每次要逐一檢查OracleCommand.Parameters還是有些麻煩,心想,如果能一次列出CommandText及所有參數的型別跟內容就太好了...
Posted 16 July 2011 08:22 AMJeffrey | 5 comment(s) 9,365
Filed under: , , ,
依Dictionary產生INSERT Script
工作上有些場合需要將變更資料庫的過程以Script方式保存,方便交給其他人執行。 有不少工具可以協助從現有資料庫轉出INSERT Script,例如: SQL Dumper 、 Database Publish Wizard 、 Toad ... 都辦得到。不過剛好有個小需求是希望直接由.NET組成資料輸出INSERT Script,於是我寫了個很陽春的工具函數,將Dictionary<string, object>轉成Oracle用的INSERT Script,其中會再依object的型別做不同的處理...
Posted 17 May 2011 06:15 AMJeffrey | 6 comment(s) 7,898
Filed under: , ,
ODP.NET 9.2版相容問題的暴力解法
話說ODP.NET在10.2版 搞了一個飛機 --Oracle.DataAccess.dll的版號原本已到了9.2.0.700,卻在ODP.NET 10.2時砍掉重練,重新從2.102.2.20編起,而依照.NET的版本法則,原本參照ODP.NET 9.2編譯的程式,在只有ODP.NET 10.2+的環境下,會因2.102小於9.2而被視為更舊的版本,無法改參照ODP.NET 10.2+而爆出以下的錯誤: (下例發生在安裝了ODP.NET 11.2的Windows 2008 R2 x64) CS1705...
Posted 04 April 2011 05:28 PMJeffrey | with no comments 5,512
Filed under: ,
組件繫結重新導向功能的實地觀察--以ODP.NET為例
有個網站專案,原本使用ODP.NET 9.2,在主機安裝ODP.NET 10.2後,出現了"ORA-12154: TNS: 無法解析指定的連線ID"錯誤,訊息很單純,一定因為新增ODP.NET 10.2後還沒設定NETWORK\ADMIN\TNSNAMES.ORA檔案的緣故。 不過,等一下! 網站專案元件用的是ODP.NET 9.2並沒有重新編譯,為什麼會自動改用ODP.NET 10.2呢? 原來這是.NET的 組件繫結重新導向 功能,意指我們可以透過以下三種方式之一強迫特定組件改用指定版本...
Posted 31 March 2011 06:21 AMJeffrey | with no comments 7,608
Filed under: ,
為dotConnect資料類別產生器加入客製邏輯
雖然Oracle已經釋出 ODAC for Microsoft Entity Framework 11.2.0.2.30 ,但尚在Beta階段,加上平台侷限.NET 4.0,目前工作專案如需在Oracle上使用LINQ,還是以 devart的dotConnect for Oracle 為主。 最近在使用dotConnect for Oracle開發時,發現預設產生Model類別會自動抓取Oracle欄位的註解欄位,用 XML Documentation 加註在類別屬性上: /// <summary>...
Posted 20 March 2011 10:56 AMJeffrey | with no comments 4,558
Filed under: , ,
SQL與ORACLE處理IsolationLevel.Serializable的行為差異
接觸ORACLE之前,玩過好一陣子的SQL,對Serializable 隔離等級 的認知是: 在隔離範圍內,所有讀取資料的動作都會產生鎖定,將資料保護起來避免外界更動 雖然Serializable隔離等級的代價高昂,對效能殺傷力極大應盡量避免,但因其執行邏輯簡單不易出錯,還是會有其適用時機。 以下是在SQL上實現Serializable隔離的示範: 使用Visual Studio逐行偵錯功能,在兩次讀取間設定中斷點,中斷時用SSMS試圖更動同一筆資料,就可發現UPDATE指令會擋住,要等到.NET程式完成或放棄Transaction後才會繼續執行...
Posted 27 January 2011 02:30 PMJeffrey | with no comments 6,525
Filed under: , ,
讓OracleCommand.CommandText中N'...'正確被解讀
今天是值得紀念的一天!! 多年以來,我 一直以為 在非Unicode編碼ORACLE資料庫中正確塞入難字的唯一方法,只能透過OracleParameter... 手上有個應用,我寫的.NET程式要接收其他程式傳來的CommandText執行,而其中包含以N'...'方式新增難字內容的指令。無力改變這個協同運作方式,只能被逼著要解開這個謎團---到底要怎樣才能讓N'...'的難字正確送到ORACLE上執行呢? 不抱太大希望地在網路爬文,大概是多年來為了ORACLE Unicode問題煞費苦心孝感動天...
System.Data.OracleClient將走入歷史
印象中有看過微軟未來將不再建議使用System.Data.OracleClient,昨天無意翻到正式 宣告文 ,特別PO文整理一下。 主要考量是有很大比例的使用者,實務上用的都是夥伴廠商提供的ADO.NET Provider,一方面是配合Oracle改版的更新腳步較快,能較快用到資料庫的新功能,另一方面這些廠商都提供了不錯的軟體品質及客服支援。ADO.NET Team評估之後,認為即便繼續投注心力強化,也很難將使用者拉回ADO.NET OracleClient。(頗有"閃開! 讓專業的來"的感覺...
Posted 14 May 2010 09:49 AMJeffrey | 2 comment(s) 27,003
Filed under: ,
更多文章 下一頁 »

搜尋

Go

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

Tags 分類檢視
關於作者

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

文章典藏
其他功能

這個部落格


Syndication