Thinkin Markdown

什麼是 Oracle Data Access Components?

深入了解 Oracle Data Access Components

發佈時間 2020-01-01
閱讀時間 5 分鐘
主題 Oracle
標籤
ODACOracle Client資料存取
什麼是 Oracle Data Access Components?

前言

小弟剛進公司時,前輩們已有準備開發用 VM (很多設定我們都不需要再處理),接著很快就下專案維運了,但也因此少知道了很多事情,其中一件事就是這個 ODAC (Oracle Data Access Components),那時候就在想···

  1. .NET 應用程式怎麼操作 Oracle 資料庫?
  2. 為什麼裝完 ODAC 並設置完就可以運作?
  3. 到底是要裝 Oracle Client 還是 ODAC 好呢?

相信你/妳應該有類似的疑問,於是這篇文章就誕生了,讓我們往下看吧!

Oracle Data Access Components 官方描述

From Oracle Data Access Components Documentation 12c Release 3 (12.1.0.2.1) Overview

Oracle Data Access Components (ODAC) are a set of Windows and .NET data access drivers and tools. They include support for .NET, COM, and ODBC data access; Microsoft Visual Studio tools for developing Oracle database applications; ASP.NET providers; and .NET stored procedure support. ODAC provides comprehensive client support for advanced Oracle database functionality, including performance, high availability, and security, among other features. It is tightly integrated with Visual Studio and Windows to provide a seamless development experience for Windows developers.

簡單來說當我們在開發 .NET 應用程式時會需要對 Oracle 資料庫進行相關操作時則會需要使用到此組件的相關服務協助我們做到這件事。

Oracle Data Access Components 安裝方案

ODAC-1

Oracle 針對 “使用情況” 給出幾種安裝方案

1️⃣ 專案開發期各版本所需(較輕量)

  • Oracle Developer Tools for Visual Studio
  • Oracle Data Provider for .NET, Managed Driver
  • Oracle Providers for ASP.NET

2️⃣ 專案開發期全版本通用及一些 Oracle 資料庫擴充套件(較重量)

  • Oracle Developer Tools for Visual Studio
  • Oracle Data Provider for .NET
  • Oracle Providers for ASP.NET
  • Oracle Database Extensions for .NET — available in 12.2 and earlier for upgrade only
  • Oracle Provider for OLE DB
  • Oracle OLAP Provider for OLE DB — 18c and higher
  • Oracle Services for Microsoft Transaction Server
  • Oracle ODBC Driver
  • Oracle SQL*Plus
  • Oracle Instant Client

3️⃣ 專案後期上線輕量部署( XCopy 版本 )

  • Oracle Data Provider for .NET
  • Oracle Providers for ASP.NET
  • Oracle Provider for OLE DB
  • Oracle OLAP Provider for OLE DB — 18c and higher
  • Oracle Services for Microsoft Transaction Server
  • Oracle Instant Client

從上可以得知[1️⃣、2️⃣]和3️⃣有一蠻明顯的不同點,就是少了 Oracle Developer Tools for Visual Studio

Oracle Developer Tools for Visual Studio(ODT)

From Visual Studio Marketplace – Oracle Developer Tools for Visual Studio 2017

Oracle Developer Tools for Visual Studio 2017 is a free VS addin that makes it easy to browse and modify Oracle schema objects and data, edit and debug PL/SQL, generate SQL deployment scripts, perform schema comparisons, tune SQL and .NET app performance, and much more. .

簡單來說就是在 IDE 內讓 Oracle Database 可以像是 SQL Server 那樣簡易操作資料。

ODAC-2

資料連接選擇介面

ODAC-4

嘗試測試連接

因為對於 Server 端而言確實不需要因為需要安裝 Data Provider 就把整個 ODT 給安裝上去,一是我們很少會在 Server 端開發,二是避免造成管理不易

💭 Oracle ODAC + ASP.NET MVC 佈署

連線手段

System.Data.OracleClient(微軟)

元件依然存在 .NET Framework 4.0 內,但該元件已不再被維護,但一定程度內仍能使用該元件功能,但不建議再繼續使用囉!!

💭 System.Data.OracleClient將走入歷史

Oracle.DataAccess.Client(甲骨文,ODP.NET)

既然第一種手段已宣告往後不再被維護,則我們將焦點移動到 Oracle 自家推出的 ODP.NET,也因 Oracle 時常會更新,所以相較於微軟推出的元件,自然會持續維護元件程式碼。

ODP.NET 有幾點可以特別注意:

  1. 不需裝肥肥的 Oracle Client
  2. 需配置 tnsnames.ora
  3. 使用上有區分 32 bit / 64 bit

ODAC-3

tnsnames.ora

Oracle.ManagedDataAccess.dll(甲骨文,Managed ODP.NET)

因為已有先知道 ODP.NET 會自己去找 32 bit / 64 bit 對應 Oracle Client 版本的機制(找註冊表)。

💭 【茶包射手日記】ODP.NET如何找對Oracle Client檔案?

那假設 Server 端有很多 Oracle Client 版本,可能會因為 ODP.NET 自有的找檔機制,然後又因為 Server 端人員行為管理不慎,很可能導致預期外的問題···

所以 Oracle 自家推出了 Managed ODP.NET 來改善上述可能會發生的狀況。

Managed ODP.NET 有幾點可以特別注意:

  1. 不需安裝 ODAC(相當等於不用去裝 Oracle Client)
  2. 一顆 Oracle.ManagedDataAccess.dll 就能搞定連線
  3. 不必再區分 32 bit / 64 bit

💭 Managed ODP.NET簡介

比較

從上述三種連線手段分析下來,推薦使用依序排的話:

Managed ODP.NET ➡ ODP.NET

近期開發的應用現在都主打 Managed ODP.NET ,因為它本身目標平台放在 Any CPU,而且也因為它自己有一套解析 TNS 名稱的順序,所以不會像 ODP.NET 會去依賴註冊表,提高蠻大的彈性空間,方便集中控管。

看到這裡你/妳會覺得奇怪,怎麼 System.Data.OracleClient 的手段不在排序上?因為阿······現在已不推薦使用,所以就沒有列上去囉。

結尾

感謝各位花時間看完此篇小文,如果本文中有描述錯誤,還請各位指教。

自己對 ODAC 有了新的認識,然後從原本的 VM 開發環境搬回本機開發環境,終於不用再分效能給 VM 了ヽ(・×・´)ゞ

雖然多數內容都已有詳細資料參考,所以本文列出了關於 ODAC 幾點較重要的部分,希望可以幫助對 ODAC 有疑惑的人快速去了解,可以視情況去應用所知,省時又省力呢◝( ゚∀ ゚ )◟

如果這篇文章對你有幫助,歡迎分享給更多人!

贊助支持

如果你喜歡我們的文章,或是這些內容對你有幫助,歡迎透過以下平台請我們喝杯咖啡,支持我們持續創作!

Ko-fi

作者

NE

Neil Tsai

樂於分享所見所聞所覺所知的全端工程師

留言功能需要 Cookie 授權

為了載入留言功能,我們需要您同意使用「功能性 Cookie」。您可以隨時在設定中調整。

免責聲明

本網站對於任何使用或引用本網站網頁資料引致之損失或損害,概不負責。本網站亦有權隨時刪除、暫停或編輯本網站所登載之各項資料,以維護本網站之權益。除法律有強制規定外,在任何情況下,本網站對於 (1) 使用或無法使用本網站之各項服務;(2) 經由本網站取得訊息或進行交易;(3) 第三人在本網站上之陳述或作為;以及 (4) 其他與本網站服務有關之事項所致生之任何直接、間接、附帶、特別、懲罰性或衍生性損害,一概不負賠償責任。

CopyRight © 2026 Thinkin Markdown