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

Oracle Net 監聽器與本地服務名稱配置全攻略:從圖形工具到命令列實戰

     編輯:Oracle 資料庫基礎

Oracle 客戶端與伺服器的網路連線,核心在於**監聽器**與**本地服務名稱**的正確配置。本文採用「圖形化工具優先、命令列驗證」的實戰路徑,手把手教您完成伺服器端監聽部署、客戶端 TNS 配置與連線測試,並解決常見連線失敗陷阱。

核心架構概念

  • Listener (監聽器):運行於**資料庫伺服器端**,預設 Port 1521,負責接收、驗證客戶端連線請求,啟動專用/共用伺服器進程。
  • Local Naming (本地服務名稱/TNSNAMES):客戶端解析連線字串的關鍵,對應 tnsnames.ora 條目,包含協議、主機、Port、Service Name/SID。

一、伺服器端:監聽器配置 (LISTENER)

使用 Net Manager 圖形化操作 (強烈建議)

  1. 啟動:Windows 開始 > 程式集 > Oracle - OraHome > Configuration and Migration Tools > Net Manager;Linux/Unix 執行 netmgr。
  2. 左側樹選「監聽程式」→ 點「+」新增 → 名稱預設 LISTENER(可自訂)。
  3. 選「監聽位置」→「新增地址」→ 協議 TCP/IP → 主機填 **IP 位址**(跨網段必填 IP) → Port 1521(或自訂)。
  4. 選「資料庫服務」→「新增資料庫」→ 全域資料庫名(如 myORACLE.192.168.1.5,含域名確保唯一)→ Oracle Home 可留空 → SID(如 myOracle)。
  5. 儲存 → 自動產生 $ORACLE_HOME/network/admin/listener.ora。

關鍵參數說明

# listener.ora 範例
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = myORACLE.192.168.1.5)
      (ORACLE_HOME = /u01/app/oracle/product/19c)
      (SID_NAME = myOracle)
    )
  )

二、客戶端:本地服務名稱配置 (TNSNAMES)

  1. 同樣在 Net Manager 中,切換至「服務命名」→「新增」。
  2. 服務名稱自訂(如 MYDB_TNS,前勿加空格)→ 協議 TCP/IP → 主機填伺服器 IP → Port 1521 → 服務名稱填伺服器端 GLOBAL_DBNAME 或 SID。
  3. 點「測試」驗證(預設用 scott/tiger,若無此帳號請改用有效帳號)。
  4. 儲存 → 產生 $ORACLE_HOME/network/admin/tnsnames.ora。

tnsnames.ora 範例

MYDB_TNS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = myORACLE.192.168.1.5)
    )
  )

三、服務啟動與連線驗證

Linux/Unix 環境

# 啟動監聽器
$ lsnrctl start           # 預設 LISTENER
$ lsnrctl start aListener # 自訂名稱

# 啟動資料庫實例
SQL> conn sys@MYDB_TNS as sysdba
SQL> startup
# 或本機 OS 驗證
SQL> conn / as sysdba
SQL> startup

Windows 環境

C:\> lsnrctl start
C:\> oradim -startup -sid myOracle   # 啟動實例服務
C:\> oradim -shutdown -sid myOracle  # 關閉實例服務

注意:監聽器與資料庫實例**必須同時啟動**,客戶端才能成功連線。

常見連線失敗排查清單

現象排查方向
ORA-12541: TNS:no listener監聽器未啟動、Port 錯誤、防火牆攔截
ORA-12514: Listener does not know servicelistener.ora 缺 SID_LIST、服務名稱拼寫錯誤、資料庫未向監聽器註冊 (PMON)
ORA-12154: TNS could not resolvetnsnames.ora 路徑錯、服務名稱拼寫錯、TNS_ADMIN 環境變數未設定
ORA-01017: invalid username/password帳號鎖定、密碼過期、大小寫敏感 (11g+ SEC_CASE_SENSITIVE_LOGON)

進階技巧

  • 動態註冊:10g+ 資料庫啟動後 PMON 會自動向預設監聽器註冊,無需靜態 SID_LIST(除非需在資料庫關閉時也能連線,如 Data Guard)。
  • 多監聽器管理:不同 Port 隔離業務(如 1521 給應用,1522 給管理),啟動時指定名稱 lsnrctl start LISTENER_APP。
  • Easy Connect:簡易連線無需 tnsnames.ora:sqlplus user/pwd@192.168.1.10:1521/myORACLE。

掌握監聽器與 TNSNAMES 的配置邏輯,是 Oracle DBA 與開發人員的必修基本功。建議優先使用 Net Manager 圖形化操作,再以命令列驗證,養成「配置即驗證」的習慣。

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