Category: oracle

Oracle Client 版本問題像鬼魂般揮之不去,x86/x64、11.2/12.1...,歷經多年糾纏,現在遇到 .NET 要連 Oracle,我一律力推改用 Managed ODP.NET。 但老系統多如牛毛,老鳥都知道「If it works, don't touch it!」是有益身心健...

Oracle 遇難字出錯不算新鮮事,現象不外乎中文字變空白變方格變問號變亂碼,老司機們一眼便知,該怎麼做心裡有數,但這回我遇到超不一樣的變種。(這樣算有吸引詭異茶包的特殊體質嗎?) 碰到一個神奇案例,資料寫入 Oracle NVARCHAR2 時結尾會多出一個 \u0000 (ASCII 0) 字元...

同事報案,有個 ASP.NET 網站「偶爾」會出現提供者與 Oracle 從屬版本不相容錯誤。這是 Unmanaged ODP.NET 的經典茶包, 舉凡 Oracle Client 沒裝好、存取權限跑掉、多版本並存都很容易踩到雷。(由衷建議大家改用 Managed ODP.NET,能有效改善生活品...

今天解決掉一件糾纏近十年的困擾,敲開薰! 過去我分享過不少組件重新導向的技巧,其實十之八九都是 ODP.NET 引起的(為此我還曾研發過暴力解法、暴力解法懶人工具、核武級 ODP.NET 版號暴力破解工具,看我怨念有多深),版號衝突問題大多可藉由在 config 加入 bindingRedirect...

有讀者問到 ODP.NET CommandText 跑多行指令的花式應用,包含在 Script Block DECLARE 宣告變數以及傳回暫存資料表結果。 透過多組 PL/SQL 邏輯組裝資料存進暫存資料表再一次傳回結果的做法,實務上還蠻常見的,但大多情況會寫成 Procedure。如果能讓 .N...

從 Log 或參數拿到成串未分行的 SQL 指令,或是查程式碼遇到複雜的 SQL 指令,會讓它規則化一點方便閱讀,除了手工整理,自動排版工具也是種選擇。 例如以下這段縮排、大小寫無規則的 T-SQL:(我猜有 Coding-Style 潔癖的人會想把作者的頭扭下來) ;WITH SupportCTE...

SQL Server 跟 Oracle 是企業常用的資料庫,但軟體授權費用頗為可觀,針對測試開發情境甚至部分的正式營運環境,倒是可考慮採用它們的免費版本,想合法省錢?這篇文章是簡單整理。 以 SQL Server 2019 為例,共分為 Enterprise、Standard、Web、Develop...

與 Unmanged ODP.NET 纏鬥多年,自以為看遍各種球路,今天再遇上沒見過的變種新球路 - 四縫線變速深卡球,經驗值再加一。 同事將程式部署到測試環境,網站所引用的程式庫參照了 ODP.NET 版,噴出Unable to load DLL 'OraOps12.dll': Access is...

前幾天分享我踩到 Dapper DynamicParameters + ODP.NET NVarchar2 產生中文亂碼的坑,有趣的是問題只發生在使用 DynamicParameters 傳值,若改用匿名型別則沒問題。推測是二者處理參數對映時邏輯有別,因時程壓力先找到 Workaround 避開問題...

對 ODP.NET 如何跑 Oracle 多行指令,我始終一知半解。何時可以加分號「;」?何時該用 begin end?為何冒出 Encountered the symbol "xxx" when expecting one of the following: ... 錯誤?我...

在 Oracle XE 18c 新建帳號 CREATE USER 出現 "ORA-64096 invalid common user or role name",胡亂爬文設好帳號密碼,卻又 "ORA-01017 invalid username/password;log...

在家想測試 Oracle,手邊沒有活體做實驗心癢難耐,來裝個 XE 版玩玩好了。 Oracle 有所謂的 Express Edition,XE 版,有 3 個使用者 PDB、2 個 CPU Core、2GB 記憶體、12GB 總資料量的限制,但可免費安裝使用,甚至可用在正式環境,只是不提供修補更新及...

先前談過防禦式 SQL 更新 - 用更嚴謹的態度執行正式資料庫更新作業,滿足保留資料更新前後對照、過程與預期不同自動煞車、方便檢閱複核... 等要求。純 SQL 語法簡單明瞭,但施行有些前題:操作環境必須有安裝 GUI 或 Command Line 的 SQL Client 工具、操作人員必須具備 ...