2020-02-19 09:30 PM 5 2,998
近日參與古蹟翻修,遇到第一個問題是 Web Site Project 網站仍在使用過時的 System.Data.OracleClient,出現之前交手過的中文變問號狀況,加上它有效能不佳的前科,心一橫決定把它改寫成 ODP.NET。(原想直上 Managed ODP.NET,但系統仍依賴用 Unm...
2020-02-18 10:28 PM 0 8,286
今天在兩台 Oracle 資料庫間搬資料時踩到地雷。 一模一樣的 Table Schema,從 A 資料庫 SELECT 取出資料塞入 B 資料庫,竟有幾筆冒出字串長度過長錯誤。進一步分析,關鍵在某個 VARCHAR2(30) 欄位,內容包含中文理應設成 NVARCHAR2(30) 才合理,但它被設...
2020-01-01 08:00 AM 2 2,267
最近又被 ODP.NET 版本問題搞得很煩。 故事是我有顆公用程式元件最近改版(假設名稱叫 MyLibrary.dll 好了),專案參照的 ODP.NET 已升級到 2.122.1.0。移交給同事使用時,同事的 ASP.NET 為配合其他元件仍在使用 ODP.NET 2.112.2.0,這種狀況下,...
2019-08-21 09:57 PM 0 8,240
接獲報案,其他系統匯入簡體中文資料寫入 Oracle 資料表後部分字元無法顯示。 追查轉擋程式是使用 System.Data.OracleClient 執行 UPDATE Table SET C2=N'...' WHERE C1=1 進行更新。 (註:N'...' 寫法的術語為 NChar Lite...
2019-07-18 09:02 PM 4 10,257
Managed ODP.NET 讓 .NET 程式擺脫對 Oracle Client 的依賴, 對常被 11.2 或是 12.1?32 或 64 bit 等版本鬼問題糾纏過的人就知道這點有多好, 故除非專案有不得已的限制,Managed ODP.NET 成為我寫 Oracle 相關 .NET 程式的...
2019-06-22 11:22 AM 0 5,462
再遇到加裝 Oracle Client 其他版本後 ODP.NET 壞掉的案例,已不是第一次發生,但沒能歸納出明確規則,故留個記錄。 問題主機是 Windows Server 2016,原本已經裝好 Oracle Client 11.2 及 12.1 的 32 位元版本。但因為上面有 SQL Ser...
2019-01-12 11:50 AM 0 2,528
ODP.NET 茶包連擊第二發,這回輪到 Managed ODP.NET,程式冒出 Unable to resolve ORA-12154: TNS:could not resolve the connect identifier specified 錯誤。 不需要安裝 Oracle Client,...
2019-01-11 08:57 PM 0 2,917
前言 這兩天協助處理幾個狀況複雜又緊急的 Oracle 版本茶包,感覺自己診斷 ODP.NET 版本問題的功力連升好幾級。(揠苗助長式的成長,我不想要呀~) 覺得自己走了狗屎運,幾天前好巧不巧讓我搞懂 ASP.NET /bin/Oracle.DataAccess.dll 其實是幌子的事實,還想到用 ...
2019-01-08 09:20 PM 1 3,274
同事報案,某段 Oracle Package 更新 Script 檔 (.pkb) 送交 DBA 執行有錯,回報訊息如下: SQL> @test.pkb SP2-0734: unknown command beginning "CREATE ..." - rest of ...
2018-06-11 07:59 AM 15 22,877
同事分享在 Oracle 踩到 NVarChar2 中文字數上限的地雷,一句話點醒我夢中人,嚇得我屁滾尿流失了魂,原來我也搞錯多年。 不囉嗦,直接看圖。 我們都知道,NVarChar2 的長度上限是 4000,而 NVarChar2 支援 Unicode,不管是中文或英數字,一個字元都算...
2018-04-20 10:06 PM 1 29,771
很久很久以前(轉眼已十年惹)學會用 SQL 2005 Common Table Expression 呈現資料表中的階層式資料(組織圖、BOM表),當時還學到 ORACLE 有個 CONNECT BY 語法效果類似。說來慚愧,對它只停在「知道」的層次,沒實地玩過,直到今天遇到必須使用 ORACL...
2018-02-26 09:17 PM 0 6,011
.NET Core 版本已推進到 2.0,但對我而言,相關元件、程式庫的支援度才是能否用於工作的關鍵。最近有則好消息 – Oracle 在這個月推出 ODP.NET Core 12.2 Beta,感覺在工作專案使用 .NET Core 的日子又更近了~ 工作環境常會存取 Oracle 資料庫...
2018-02-10 08:15 AM 0 8,672
同事報案。某個使用 Managed ODP.NET 的測試網站吐出以下錯誤 Error: The type initializer for 'OracleInternal.Common.ProviderConfig' threw an exception. 同事一度懷疑跟 ODP.NET ...
2018-01-12 10:32 PM 1 6,443
前文介紹過使用 C# 讀取 dbms_output 寫入內容,範例留了一個小尾巴,跑迴圈連資料庫犯了效能大忌,應改成一次執行或查詢取回才上道。 dbms_output.get_lines() 允許一次取得多筆訊息,但傳回型別為 TYPE DBMSOUTPUT_LINESARRAY IS VARR...
2018-01-12 07:01 AM 0 8,897
使用 dbms_output.put_line() 列印執行資訊是常用的 Oracle Stored Procedure 偵錯技巧,以下 Procedure 範例在DELETE 及 INSERT 後透過 dbms_output.put_line() 印出影響資料筆數,概念跟在程式碼裡塞入一堆 D...
2017-10-30 07:51 AM 1 11,985
在 SELECT 指令對欄位執行自訂函式行運算通常很傷效能,但實務上無法完全避免。查詢一萬筆資料代表要呼叫自訂函式一萬次,若函式包含資料表查詢,如同在迴圈裡跑 SQL,是典型的效能殺手,經驗裡也是許多複雜查詢逾時的主因。 見識到同事露了一手,簡單加幾個字元一口氣將內含自訂函式的 Oracle ...