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

Oracle 共享伺服器靜態註冊到 Listener 設定指南

     編輯:Oracle 教學

背景

共享伺服器預設向 Listener 動態註冊 (PMON 定期註冊)。若需透過靜態服務名 (SID_LIST_LISTENER) 讓共享伺服器被連線,必須在 DISPATCHERS 參數中明確指定 SERVICE 屬性包含該靜態服務名。

環境範例

  • 資料庫 SID: PROD3
  • 動態服務名: PROD3
  • 靜態服務名: PROD3.ORACLE.COM (在 LISTENER.ORA 定義)

Listener.ora 靜態註冊片段

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = PROD3.ORACLE.COM)   -- 靜態服務名
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = PROD3)
    )
    ...
  )

問題現象

啟用共享伺服器後,LSNRCTL SERVICES 顯示靜態服務 PROD3.ORACLE.COM 下只有 DEDICATED 處理程序,缺少 DISPATCHER,導致以 SERVER=SHARED 連線時出現 ORA-12523。

解決:指定 DISPATCHERS 服務屬性

ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(DISPATCHERS=3)(SERVICE=PROD3,PROD3.ORACLE.COM)' SCOPE=BOTH;
  • SERVICE 列出需註冊的服務名,可多個以逗號分隔。
  • 修改後 LSNRCTL SERVICES 將在 PROD3.ORACLE.COM 下顯示 D000、D001 等 Dispatcher。

驗證連線

-- TNSNAMES.ORA
PROD3_SHARED =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL=TCP)(HOST=server1)(PORT=1521))
    (CONNECT_DATA = (SERVER=SHARED)(SERVICE_NAME=PROD3.ORACLE.COM))
  )

-- 測試
SQLPLUS SYS/ORACLE@PROD3_SHARED AS SYSDBA
-- Connected successfully.

關鍵點總結

項目說明
動態註冊PMON 自動向 LISTENER 註冊 SERVICE_NAMES 參數值
靜態註冊LISTENER.ORA SID_LIST 定義 GLOBAL_DBNAME
共享伺服器需求Dispatcher 必須向同一服務名註冊,否則 SHARED 連線找不到 Dispatcher
設定參數DISPATCHERS 加 SERVICE=動態名,靜態名
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved