Oracle 監聽程序(Listener)說明

此文件將您提供的內容整理成結構化的 HTML 檔案,包含監聽程序的定義、功能、特性、管理命令、示意圖及新增/刪除監聽程序的步驟與注意事項。

一、監聽程序(Listener)是什麼?

在 Oracle 資料庫中,監聽程序(Listener)是一個在資料庫伺服器上運行的伺服器程式,負責接收客戶端的連線請求,然後將這些請求轉交給對應的資料庫實例處理。它是客戶端與資料庫之間的中介,確保資料庫可以接受遠端或本地的連線。

二、監聽程序的功能

三、常見特性

四、常用管理命令(lsnrctl)

使用 lsnrctl 工具管理 Oracle Listener:

# 啟動監聽程序
lsnrctl start

# 停止監聽程序
lsnrctl stop

# 重啟或重新載入設定
lsnrctl reload

# 查看監聽狀態
lsnrctl status

五、簡單示意圖

[客戶端]
TCP/IP
[Oracle Listener]
[Database Instance]

監聽程序本身不處理 SQL 查詢,它只負責「接線、轉交」,真正執行查詢的是資料庫實例。

六、Oracle 監聽程序可以有多個

Oracle 預設會有一個主要的監聽程式,通常名稱為:LISTENER。但您可以依需要新增或刪除多個監聽程序(例如不同的埠口、協議或資料庫實例),這在多實例、多服務或不同安全網段的環境中非常常見。

七、新增監聽程序的方式

方法一:使用 Net Configuration Assistant(netca)

  1. 在伺服器上執行:netca
  2. 選擇「Listener configuration」。
  3. 點選 Add,輸入新監聽器名稱(例如 LISTENER2)。
  4. 選擇通訊協定(例如 TCP),設定監聽的埠號(例如 1522)。
  5. 儲存並完成設定。完成後,會在 $ORACLE_HOME/network/admin/listener.ora 中自動新增設定。

方法二:手動編輯 listener.ora

範例設定(通常放在 $ORACLE_HOME/network/admin/listener.ora):

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = mydbserver)(PORT = 1521))
    )
  )

LISTENER2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = mydbserver)(PORT = 1522))
    )
  )

然後啟動新監聽程序:

lsnrctl start LISTENER2

八、刪除監聽程序的方式

方法一:使用 netca

  1. 開啟 Net Configuration Assistant(netca)。
  2. 選擇 Listener configuration,點選 Delete
  3. 選擇要刪除的監聽器名稱。

方法二:手動刪除設定

  1. 開啟 listener.ora
  2. 刪除對應監聽器的區塊(例如 LISTENER2 的設定)。
  3. 儲存檔案,執行:
lsnrctl stop LISTENER2
lsnrctl reload

九、注意事項

注意項目說明
監聽埠號不同監聽器應使用不同埠號(例如 1521、1522)。
主機名稱 / 網卡若主機有多張網卡或多個 IP,可分別監聽不同網段。
資料庫動態註冊監聽程序啟動後,資料庫會自動向監聽器註冊(需設定 LOCAL_LISTENER 參數)。
防火牆記得開放對應的 TCP 埠號。

十、常見管理命令總表

lsnrctl start LISTENER2    -- 啟動指定監聽程序
lsnrctl stop LISTENER2     -- 停止指定監聽程序
lsnrctl status LISTENER2   -- 查看監聽狀態
lsnrctl reload             -- 重新載入 listener.ora 設定
補充:監聽程序主要負責連線管理與轉交,SQL 查詢等實際工作由後端的資料庫實例負責執行。