首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 存取 Oracle 資料庫完整指南:客戶端安裝、Net 服務配置、OBA 角色授權

     編輯:關於ASP.NET

ASP.NET 應用程式連接 Oracle 資料庫,需完成三層基礎建設:伺服器端 Oracle Client 安裝、Net 服務名稱配置、資料庫使用者權限授予。本文提供圖文並茂的逐步操作指南,適用 Oracle 9i/10g/11g/12c/19c/21c 環境。

第一層:Web 伺服器安裝 Oracle Client

  1. 下載 Oracle Database Client (含 ODAC / ODP.NET)
  2. 執行安裝程式,選擇 **「Administrator」或「Runtime」** 安裝類型 (非 Instant Client)
  3. 安裝路徑建議:`C:\app\oracle\product\19.0.0\client_1`
  4. 完成後驗證:`tnsping ` 應回傳 OK

第二層:配置 Net 服務 (tnsnames.ora)

  1. 開啟 **Net Configuration Assistant** (NetCA) 或手動編輯 `tnsnames.ora`
  2. 檔案位置:`%ORACLE_HOME%\network\admin\tnsnames.ora`
  3. 新增服務條目:
MYORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )
  1. 測試:`tnsping MYORCL` → 應顯示 `OK (0 msec)`

第三層:建立資料庫使用者並授予 OBA 角色

  1. 使用 **PL/SQL Developer** / **SQL*Plus** / **SQL Developer** 以 `SYS AS SYSDBA` 登入
  2. 建立使用者:
CREATE USER myapp_user IDENTIFIED BY strong_password
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users;
  1. 授予 **OBA (Oracle Business Application) 角色** 或必要權限:
GRANT CONNECT, RESOURCE TO myapp_user;
GRANT CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER TO myapp_user;
-- OBA 角色 (若存在)
GRANT OBA TO myapp_user;
-- 或授予特定物件權限
GRANT SELECT, INSERT, UPDATE, DELETE ON schema.table TO myapp_user;
  1. 設定密碼永不過期 (視安全政策):
    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
    

ASP.NET 連線字串配置 (web.config)

<connectionStrings>
  <add name="OracleConn" 
       connectionString="Data Source=MYORCL;User Id=myapp_user;Password=strong_password;Pooling=true;Min Pool Size=5;Max Pool Size=100;" 
       providerName="System.Data.OracleClient" />
  <!-- 或使用 Oracle.ManagedDataAccess (ODP.NET Managed) -->
  <add name="OracleConnManaged" 
       connectionString="Data Source=MYORCL;User Id=myapp_user;Password=strong_password;" 
       providerName="Oracle.ManagedDataAccess.Client" />
</connectionStrings>

核心命名空間與類別對照

舊版 (System.Data.OracleClient - 已棄用)新版 (Oracle.ManagedDataAccess.Client - 建議)
OracleConnectionOracleConnection
OracleCommandOracleCommand
OracleDataReaderOracleDataReader
OracleDataAdapterOracleDataAdapter
OracleParameterOracleParameter
OracleTransactionOracleTransaction
OracleType 枚舉OracleDbType 枚舉

常見問題排查

錯誤現象可能原因解決方案
ORA-12154: TNS:could not resolve the connect identifiertnsnames.ora 路徑錯誤/服務名拼寫錯誤檢查 TNS_ADMIN 環境變數、tnsping 測試
ORA-12541: TNS:no listenerListener 未啟動 / IP/Port 錯誤 / 防火牆服務端 `lsnrctl status`、開放 1521 port
ORA-01017: invalid username/password帳密錯誤 / 大小寫 / 密碼過期確認帳號狀態、解鎖、重設密碼
System.Data.OracleClient 不支援 .NET Core舊版組件僅支援 .NET Framework遷移至 Oracle.ManagedDataAccess.Core
中文亂碼NLS_LANG 環境變數未設定設定 `NLS_LANG=TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950`

現代化遷移建議

  • **全面改用 ODP.NET Managed Driver** (`Oracle.ManagedDataAccess.Core`),無需安裝 Client,單一 DLL、支援 .NET Core/5/6/7/8、效能更好
  • 使用 **Entity Framework Core + Oracle Provider** (`Oracle.EntityFrameworkCore`),享受 LINQ、遷移、追蹤等 ORM 優勢
  • 連線池參數調優:`Min Pool Size`、`Max Pool Size`、`Connection Lifetime`、`Validate Connection`
  • 啟用 **Fast Application Notification (FAN)** / **Runtime Connection Load Balancing** 達成高可用

Oracle 資料庫以穩定、功能強大著稱,但連線配置向來被視為「門檻」。掌握 Client 安裝、TNS 配置、權限模型、連線字串參數、驅動程式選型這五大關鍵,即可在 ASP.NET 專案中輕鬆駕馭 Oracle,享受企業級資料庫的威力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved