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

Oracle 監聽器與網絡配置圖文教程:Net Manager 實戰指南

     編輯:Oracle 資料庫基礎

架構認知:Listener 與 TNSNAMES 的角色分工

組件運行端核心職責
Listener (監聽器)Server 端監聽網絡端口,驗證連接請求,派生 Server Process
TNSNAMES (本地服務名)Client 端將連接別名解析為 (Host, Port, Service_Name) 三元組

連接流程: Client 讀取 tnsnames.ora → 構建連接描述符 → TCP 連接 Server:Port → Listener 接手 → 驗證 Service_Name → 創建 Server Process → 會話建立。

圖形化配置工具:Net Manager (netmgr)

Windows: 開始 → 程序 → Oracle - OraHome → Configuration and Migration Tools → Net Manager
Linux/Unix: $ netmgr (需 X11 轉發或 VNC)

第一部分:服務端 Listener 配置

步驟 1:創建監聽器

  • 選中左側樹「監聽程序」 → 點「+」新增 → 默認名 LISTENER

步驟 2:配置監聽地址

  • 選中「監聽位置」標籤 → 「添加地址」
  • 協議:TCP/IP
  • 主機:建議填 IP 地址(避免主機名解析失敗),若本機雙角色可填 hostname
  • 端口:默認 1521,可自定義(防火牆需放行)

Listener Address Config

步驟 3:註冊數據庫服務

  • 選中「數據庫服務」標籤 → 「添加數據庫」
  • 全局數據庫名:myoracle.192.168.1.5(域名格式保證唯一性)
  • Oracle Home:可留空(默認當前)
  • SID:myoracle(實例名)

Database Service Config

步驟 4:保存生成 listener.ora

默認路徑:$ORACLE_HOME/network/admin/listener.ora

# 典型 listener.ora 內容
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = myoracle.192.168.1.5)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = myoracle)
    )
  )

第二部分:客戶端 TNSNAMES 配置

步驟 1:啟動 Net Manager → 服務命名 → 「+」新增

Net Service Name Wizard

步驟 2:協議選擇 TCP/IP

Select Protocol

步驟 3:輸入服務端監聽主機與端口

關鍵:必須與服務端 listener.ora 中的 HOST/PORT 完全一致

Host Port Config

步驟 4:指定服務名與連接類型

  • 服務名:等於服務端的全局數據庫名 (如 myoracle.192.168.1.5)
  • 連接類型:專用服務器 (默認),除非服務端配置了共享服務器

Service Name Config

Finish

生成的 tnsnames.ora 範例

MYORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = myoracle.192.168.1.5)
    )
  )

驗證與故障排查

操作命令預期結果
啟動監聽lsnrctl startTNSLSNR for Linux: Version ... STARTED
查看狀態lsnrctl status顯示 Service "myoracle..." has 1 instance(s)
客戶端測試連接tnsping MYORACLEOK (msec)
實際登錄sqlplus user/pwd@MYORACLEConnected.

常見錯誤對照表

  • TNS-12541 / ORA-12541:監聽未啟動、端口錯誤、防火牆攔截
  • ORA-12514:Listener 不知道請求的 Service_Name → 檢查 SID_LIST_LISTENER 或動態註冊
  • ORA-12545:Host/IP 不可達 → 檢查 tnsnames.ora 中 HOST 拼寫、DNS、防火牆
  • ORA-12154:客戶端找不到服務名 → 檢查 TNS_ADMIN 環境變量、tnsnames.ora 路徑、別名拼寫

總結: Net Manager 圖形化配置直觀且不易出錯,核心在於服務端 Service_Name 與客戶端 SERVICE_NAME 完全一致、Host/Port 雙向匹配。掌握 lsnrctl、tnsping 兩大排查神器,90% 網絡連接問題可在分鐘級定位解決。

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