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

Oracle 監聽器安裝與配置完整指南

     編輯:Oracle 資料庫基礎

前言

Oracle Net Services 是 Client/Server 架構下資料庫連線的核心中介軟體。本文系統說明監聽器與本地服務名的配置流程、常見錯誤排查與啟動驗證步驟,適用於 Windows 與 Linux/Unix 環境。

一、核心概念

本地服務名

客戶端透過 tnsnames.ora 定義連線描述符,包含協定、主機、埠號、服務名。監聽器驗證請求合法性後建立連線。

二、圖形化配置工具:Net Manager

Windows:開始 → 程式集 → Oracle - OraHome → Configuration and Migration Tools → Net Manager
Linux/Unix:$ netmgr
強烈建議使用 GUI 完成配置,避免手動編輯語法錯誤。

三、監聽器配置

  1. 樹狀目錄選「監聽程式」→ 點「+」新增,預設名 LISTENER。
  2. 「監聽位置」→ 新增位址 → 協定 TCP/IP → 輸入主機名/IP(跨網段建議 IP)→ 埠號(預設 1521)。
  3. 「資料庫服務」→ 新增資料庫 → 全域資料庫名(如 myoracle.192.168.1.5,含網域確保唯一)→ SID(如 myOracle)。
  4. 儲存,產生 $ORACLE_HOME/network/admin/listener.ora。

四、本地服務名配置

  1. 樹狀目錄選「服務命名」→ 新增 → 服務名自訂(無前導空格)。
  2. 協定 TCP/IP → 主機 IP、埠號 → 服務名(需與監聽器 GLOBAL_DBNAME 一致)。
  3. 若服務已啟動,可點「測試」(需有效帳號,預設 scott/tiger 可能不存在)。
  4. 儲存,產生 $ORACLE_HOME/network/admin/tnsnames.ora。

五、服務啟動與連線驗證

Linux/Unix

$ lsnrctl start           # 啟動監聽器
$ lsnrctl status          # 檢查狀態
SQL> conn sys@myOracle as sysdba
SQL> startup               # 啟動資料庫實例

Windows

C:\> lsnrctl start
C:\> oradim -startup -sid myOracle
SQL> conn sys@myOracle as sysdba
SQL> startup

注意: 非預設監聽器名稱需指定:lsnrctl start aListener。

六、常見連線錯誤與排查

錯誤代碼原因解決方向
ORA-12541無監聽器啟動監聽器;檢查 IP/埠號
ORA-12500無法啟動專用伺服器進程Windows 啟動實例服務 oradim -startup
ORA-12535操作逾時檢查網路連通、防火牆阻擋
ORA-12154無法解析服務名核對 tnsnames.ora 服務名拼寫;首行勿有空格
ORA-12514監聽器無法解析 SERVICE_NAME確認客戶端服務名 = 監聽器 GLOBAL_DBNAME
Windows 找不到路徑註冊表 ImagePath 遺失HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener 設定 ImagePath=D:\Oracle\ora92\BIN\TNSLSNR

七、核心配置檔範例

listener.ora

LISTENER =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC = (SID_NAME = Oracle)(ORACLE_HOME = /usr/oracle))
  )

tnsnames.ora

ora =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
    (CONNECT_DATA = (SID = Oracle)(SERVER = DEDICATED))
  )

sqlnet.ora

NAMES.DIRECTORY_PATH = (TNSNAMES, HOSTNAME)

控制名稱解析順序:優先 tnsnames.ora,找不到再嘗試主機名解析。

八、連線模式差異

  • sqlplus / as sysdba:OS 認證,不經監聽器,資料庫可關閉。
  • sqlplus sys/pwd:本機 Bequeath 連線,不經監聽器。
  • sqlplus sys/pwd@tns_alias:網路連線,**需監聽器啟動**,最通用模式。

總結

監聽器與 tnsnames.ora 參數必須**完全一致**(主機、埠、服務名/SID)。排查原則:先驗證網路連通 → 檢查監聽器狀態 → 核對雙端配置 → 依錯誤代碼定向解決。善用 lsnrctl status 與 tnsping 快速隔離問題層級。

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