2021-04-29 09:31 PM 0 3,497
Oracle 遇難字出錯不算新鮮事,現象不外乎中文字變空白變方格變問號變亂碼,老司機們一眼便知,該怎麼做心裡有數,但這回我遇到超不一樣的變種。(這樣算有吸引詭異茶包的特殊體質嗎?) 碰到一個神奇案例,資料寫入 Oracle NVARCHAR2 時結尾會多出一個 \u0000 (ASCII 0) 字元...
2021-04-20 10:55 PM 10 3,251
同事報案,有個 ASP.NET 網站「偶爾」會出現提供者與 Oracle 從屬版本不相容錯誤。這是 Unmanaged ODP.NET 的經典茶包, 舉凡 Oracle Client 沒裝好、存取權限跑掉、多版本並存都很容易踩到雷。(由衷建議大家改用 Managed ODP.NET,能有效改善生活品...
2021-03-30 09:29 PM 1 1,098
今天解決掉一件糾纏近十年的困擾,敲開薰! 過去我分享過不少組件重新導向的技巧,其實十之八九都是 ODP.NET 引起的(為此我還曾研發過暴力解法、暴力解法懶人工具、核武級 ODP.NET 版號暴力破解工具,看我怨念有多深),版號衝突問題大多可藉由在 config 加入 bindingRedirect...
2021-03-25 07:26 PM 2 2,381
有讀者問到 ODP.NET CommandText 跑多行指令的花式應用,包含在 Script Block DECLARE 宣告變數以及傳回暫存資料表結果。 透過多組 PL/SQL 邏輯組裝資料存進暫存資料表再一次傳回結果的做法,實務上還蠻常見的,但大多情況會寫成 Procedure。如果能讓 .N...
2021-01-31 09:18 AM 1 14,119
從 Log 或參數拿到成串未分行的 SQL 指令,或是查程式碼遇到複雜的 SQL 指令,會讓它規則化一點方便閱讀,除了手工整理,自動排版工具也是種選擇。 例如以下這段縮排、大小寫無規則的 T-SQL:(我猜有 Coding-Style 潔癖的人會想把作者的頭扭下來) ;WITH SupportCTE...
2020-11-12 08:27 PM 2 12,637
SQL Server 跟 Oracle 是企業常用的資料庫,但軟體授權費用頗為可觀,針對測試開發情境甚至部分的正式營運環境,倒是可考慮採用它們的免費版本,想合法省錢?這篇文章是簡單整理。 以 SQL Server 2019 為例,共分為 Enterprise、Standard、Web、Develop...
2020-10-20 09:47 PM 0 2,311
接獲問題通報,某轉擋排程寫入 Oracle NVARCHAR2 欄位時中文難字變成亂碼。查看原始碼,其使用 ODP.NET 讀取來源資料表內容後,轉換成 INSERT 或 UPDATE 指令,以 N'...' 傳值寫入 NVARCHAR2,依據十年前的研究心得,只要搭配 ORA_NCHAR_LITE...
2020-06-29 10:55 PM 0 2,602
與 Unmanged ODP.NET 纏鬥多年,自以為看遍各種球路,今天再遇上沒見過的變種新球路 - 四縫線變速深卡球,經驗值再加一。 同事將程式部署到測試環境,網站所引用的程式庫參照了 ODP.NET 版,噴出Unable to load DLL 'OraOps12.dll': Access is...
2020-04-27 09:15 PM 0 1,740
前幾天分享我踩到 Dapper DynamicParameters + ODP.NET NVarchar2 產生中文亂碼的坑,有趣的是問題只發生在使用 DynamicParameters 傳值,若改用匿名型別則沒問題。推測是二者處理參數對映時邏輯有別,因時程壓力先找到 Workaround 避開問題...
2020-04-25 09:44 AM 1 2,026
自從在 Hacking 樂無窮:修正 Dapper+ODP.NET 無法寫入 Unicode 問題想出 FixOdpNetDbTypeStringMapping 大絕,以為我已經收服 ODP.NET + Dapper Unicode 妖魔,並沒有,昨天又被咬一口。 踩中的是 DynamicParam...
2020-04-14 08:31 PM 2 2,600
對 ODP.NET 如何跑 Oracle 多行指令,我始終一知半解。何時可以加分號「;」?何時該用 begin end?為何冒出 Encountered the symbol "xxx" when expecting one of the following: ... 錯誤?我...
2020-04-13 09:21 PM 0 5,095
在 Oracle XE 18c 新建帳號 CREATE USER 出現 "ORA-64096 invalid common user or role name",胡亂爬文設好帳號密碼,卻又 "ORA-01017 invalid username/password;log...
2020-04-12 10:55 AM 0 4,306
在家想測試 Oracle,手邊沒有活體做實驗心癢難耐,來裝個 XE 版玩玩好了。 Oracle 有所謂的 Express Edition,XE 版,有 3 個使用者 PDB、2 個 CPU Core、2GB 記憶體、12GB 總資料量的限制,但可免費安裝使用,甚至可用在正式環境,只是不提供修補更新及...
2020-03-04 08:43 PM 0 2,069
先前談過防禦式 SQL 更新 - 用更嚴謹的態度執行正式資料庫更新作業,滿足保留資料更新前後對照、過程與預期不同自動煞車、方便檢閱複核... 等要求。純 SQL 語法簡單明瞭,但施行有些前題:操作環境必須有安裝 GUI 或 Command Line 的 SQL Client 工具、操作人員必須具備 ...
2020-02-19 09:30 PM 4 2,475
近日參與古蹟翻修,遇到第一個問題是 Web Site Project 網站仍在使用過時的 System.Data.OracleClient,出現之前交手過的中文變問號狀況,加上它有效能不佳的前科,心一橫決定把它改寫成 ODP.NET。(原想直上 Managed ODP.NET,但系統仍依賴用 Unm...
2020-02-18 10:28 PM 0 5,424
今天在兩台 Oracle 資料庫間搬資料時踩到地雷。 一模一樣的 Table Schema,從 A 資料庫 SELECT 取出資料塞入 B 資料庫,竟有幾筆冒出字串長度過長錯誤。進一步分析,關鍵在某個 VARCHAR2(30) 欄位,內容包含中文理應設成 NVARCHAR2(30) 才合理,但它被設...