首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle資料庫連線設定與常見故障排除完整指南

     編輯:Oracle 資料庫基礎

前言:建立 Oracle 用戶端連線的關鍵步驟

要讓用戶端機器成功連接 Oracle 資料庫,核心在於「安裝適當軟體」與「進行正確配置」兩大階段。除了 Java 可使用 JDBC Thin 模式直連外,一般用戶端皆需安裝 Oracle Client 軟體(含 Oracle Net 通訊元件)。若該機器已安裝 Oracle Database,則已內建 Client,無需重複安裝。

一、 軟體安裝與環境準備

用戶端機器

  1. 安裝 Oracle Net 通訊軟體(包含於 Oracle Client 內)。
  2. 設定 sqlnet.ora:
    NAMES.DIRECTORY_PATH = (TNSNAMES, ...)
    # NAMES.DEFAULT_DOMAIN = DB_DOMAIN  
  3. 設定 tnsnames.ora(網路服務名定義)。

伺服器端機器

  1. 確認 Listener 已啟動:
    lsnrctl start [listener_name]
    lsnrctl status [listener_name]
  2. 確認資料庫已啟動:
    -- Oracle 9i/10g/11g/12c/19c
    sqlplus "/ as sysdba"
    SQL> startup
    
    -- Oracle 8i (舊版)
    svrmgrl
    SVRMGR> connect internal
    SVRMGR> startup

二、 核心配置:tnsnames.ora 詳細設定

檔案位置:
Windows: ...\network\admin\tnsnames.ora
Linux/Unix: .../network/admin/tnsnames.ora

範例:假設伺服器主機名 testserver,服務名 orcl.testserver.com,監聽埠 1521。

TEST = 
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = testserver)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl.testserver.com)
    )
  )

關鍵參數說明

  • PROTOCOL:通常為 TCP,一般不需修改。
  • HOST:資料庫監聽所在主機名或 IP。務必在用戶端 ping 通該主機名,否須在 hosts 檔加入解析。
  • PORT:需與伺服器端 listener.ora 設定一致,可用 lsnrctl status 查看。
  • SERVICE_NAME:伺服器端執行 show parameter service_name 取得。

三、 連線測試與常見錯誤處理

基本測試

sqlplus system/manager@TEST

錯誤:ORA-12154 (TNS:could not resolve service name)

原因:tnsnames.ora 中找不到指定的網路服務名,或 sqlnet.ora 設定了 NAMES.DEFAULT_DOMAIN 導致自動附加網域名稱找不到對應項目。

解決方法:

  1. 確認 tnsnames.ora 服務名拼寫正確(建議大小寫一致)。
  2. 若 sqlnet.ora 有 NAMES.DEFAULT_DOMAIN,請註解掉(加 #)。
  3. 仍失敗時,將用戶端的服務名定義複製到伺服器端 tnsnames.ora,在伺服器端測試連線。若伺服器端可連、用戶端不行,則為網路問題。

錯誤:ORA-12514 (TNS:listener could not resolve SERVICE_NAME)

原因:tnsnames.ora 中的 SERVICE_NAME 與伺服器端實際服務名不符。
解決:修正 tnsnames.ora 中的 SERVICE_NAME 參數。

四、 進階觀念:SQL*Plus 連線解析機制

當執行 sqlplus user/pwd@net_service_name 時:

  1. 讀取 sqlnet.ora 的 NAMES.DEFAULT_DOMAIN(若存在)。
  2. 自動將網域值附加至服務名後(如 TEST → TEST.SERVER.COM)。
  3. 至 tnsnames.ora 尋找完整服務名。
  4. 找不到則回報 ORA-12154。

因此,若不需網域補綴,務必註解或移除 NAMES.DEFAULT_DOMAIN。

五、 總結檢查清單

  • 用戶端已安裝 Oracle Client(或使用 JDBC Thin)。
  • sqlnet.ora 無誤設 NAMES.DEFAULT_DOMAIN 干擾。
  • tnsnames.ora 服務名、HOST、PORT、SERVICE_NAME 全數正確。
  • 用戶端可 ping 通資料庫主機名/IP。
  • 伺服器端 Listener 與 Database 均處於啟動狀態。
  • 防火牆已開放 Listener 埠(預設 1521)。

依循上述步驟,即能系統化排除 Oracle 連線問題,建立穩定可靠的資料庫存取環境。

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