ORACLE RAC 監聽配置 (listener.ora tnsnames.ora)


ORACLE RAC 監聽配置 (listener.ora tnsnames.ora)

展開

    Oracle RAC 監聽器的配置與單實例稍有不同,但原理和實現方法基本上是相同的。在Oracle中 tns進程用於為指定網絡地址上的一個或多個Oracle 實例提供服務注冊,並響應來自客戶端對該服務提出的連接請求。一旦連接請求到達,並派生出一個服務器進程建立服務器與用戶端之間的連接(專有服務器dedicated server)或轉發服務請求(共享服務器模式shared server)。如果監聽器知道多於一個實例提供所請求的服務,則可能會根據客戶端與服務器端相關配置將請求定位到較低負載的實例為其提供服務。因此合理正確配置監聽器以及tnsnames是Oracle RAC實現負載均衡以及failover的前提,本文將描述基於 suse linux 10 + Oracle 10g RAC 下監聽器的配置。

 

有關Oracle 網絡配置相關基礎請參考:
   配置ORACLE 客戶端連接到數據庫
   配置非默認端口的動態服務注冊
   配置sqlnet.ora限制IP訪問Oracle
   Oracle 監聽器日志配置與管理
   設置 Oracle 監聽器密碼(LISTENER)

   配置RAC負載均衡與故障轉移
 
一、節點上監聽信息

    1、兩個節點及主機配置信息(bo2dbp,bo2dbs)
        oracle@bo2dbp:/u01/oracle/db/network/admin> cat /etc/hosts
        
        127.0.0.1       localhost.2gotrade.com   localhost
        # Public
        192.168.7.51   bo2dbp.2gotrade.com        bo2dbp
        192.168.7.52   bo2dbs.2gotrade.com        bo2dbs
        #Private
        10.10.7.51   bo2dbp-priv.2gotrade.com   bo2dbp-priv
        10.10.7.52   bo2dbs-priv.2gotrade.com   bo2dbs-priv
        #Virtual
        192.168.7.61   bo2dbp-vip.2gotrade.com    bo2dbp-vip
        192.168.7.62   bo2dbs-vip.2gotrade.com    bo2dbs-vip
     
    2、節點bo2dbp上的listener.ora
        oracle@bo2dbp:/u01/oracle/db/network/admin> more listener.ora
        # listener.ora.bo2dbp Network Configuration File: /u01/oracle/db/network/admin/listener.ora.bo2dbp
        # Generated by Oracle configuration tools.
        
        LISTENER_BO2DBP =
          (DESCRIPTION_LIST =
            (DESCRIPTION =
              (ADDRESS = (PROTOCOL = TCP)(HOST = bo2dbp-vip.2gotrade.com)(PORT = 1521)(IP = FIRST))
              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.51)(PORT = 1521)(IP = FIRST))
            )
          )
        
        SID_LIST_LISTENER_BO2DBP =
          (SID_LIST =
            (SID_DESC =
              (SID_NAME = PLSExtProc)
              (ORACLE_HOME = /u01/oracle/db)
              (PROGRAM = extproc)
            )
          )
     
    3、節點bo2dbp上的tnsnames.ora
        oracle@bo2dbp:/u01/oracle/db/network/admin> more tnsnames.ora
        #對於連接字符串GOBO1A,GOBO1B,GOBO1在此處可以省略
        #這些字符串通常用於客戶端連接到數據庫
        GOBO1B =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = GOBO1)
              (INSTANCE_NAME = GOBO1B)
            )
          )
        
        GOBO1A =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = GOBO1)
              (INSTANCE_NAME = GOBO1A)
            )
          )
        
        GOBO1 =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
            (LOAD_BALANCE = yes)
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = GOBO1)
            )
          )
        
        #下面是幾個重要的用於設置local_listener 以及remote_listener參數的定義信息
        LISTENER_BO2DB =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
          )
        
        LISTENER_BO2DBP =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.61)(PORT = 1521))
          )
        
        LISTENER_BO2DBS =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.62)(PORT = 1521))
          )  
        #Author: Robinson cheng
        #Blog  : http://blog.csdn.net/robinson_0612  
     
    4、節點bo2dbp上監聽器的信息
        #可以看出只有實例 GOBO1A 注冊到監聽器 LISTENER_BO2DBP
        oracle@bo2dbp:/u01/oracle/db/network/admin> lsnrctl status LISTENER_BO2DBP
        
        LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 25-SEP-2012 17:12:04
        
        Copyright (c) 1991, 2006, Oracle.  All rights reserved.
        
        Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=bo2dbp-vip.2gotrade.com)(PORT=1521)(IP=FIRST)))
        STATUS of the LISTENER
        ------------------------
        ..............
        Listener Parameter File   /u01/oracle/db/network/admin/listener.ora
        Listener Log File         /u01/oracle/db/network/log/listener_bo2dbp.log
        Listening Endpoints Summary...
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.61)(PORT=1521)))
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.51)(PORT=1521)))
        Services Summary...
        Service "+ASM" has 1 instance(s).
          Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
        Service "+ASM_XPT" has 1 instance(s).
          Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
        Service "GOBO1" has 1 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
        Service "GOBO1XDB" has 1 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
        Service "GOBO1_XPT" has 1 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
        Service "PLSExtProc" has 1 instance(s).
          Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
        The command completed successfully
     
    5、節點bo2dbs上的listener.ora
        oracle@bo2dbs:/u01/oracle/db/network/admin> more listener.ora
        # listener.ora.bo2dbs Network Configuration File: /u01/oracle/db/network/admin/listener.ora.bo2dbs
        # Generated by Oracle configuration tools.
        
        LISTENER_BO2DBS =
          (DESCRIPTION_LIST =
            (DESCRIPTION =
              (ADDRESS = (PROTOCOL = TCP)(HOST = bo2dbs-vip.2gotrade.com)(PORT = 1521)(IP = FIRST))
              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.52)(PORT = 1521)(IP = FIRST))
            )
          )
        
        SID_LIST_LISTENER_BO2DBS =
          (SID_LIST =
            (SID_DESC =
              (SID_NAME = PLSExtProc)
              (ORACLE_HOME = /u01/oracle/db)
              (PROGRAM = extproc)
            )
          )  
        #由於節點bo2dbs上的tnsnames.ora與節點bo2dbp內容相同,不再列出
     
    6、節點bo2dbs上的監聽器狀態
        #同樣可以看到只有一個 instance,即GOBO1B注冊到了監聽器 LISTENER_BO2DBS
        oracle@bo2dbs:/u01/oracle/db/network/admin> lsnrctl status LISTENER_BO2DBS
        
        LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 25-SEP-2012 17:12:31
        
        Copyright (c) 1991, 2006, Oracle.  All rights reserved.
        
        Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=bo2dbs-vip.2gotrade.com)(PORT=1521)(IP=FIRST)))
        STATUS of the LISTENER
        ------------------------
        .......................
        Listening Endpoints Summary...
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.62)(PORT=1521)))
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.52)(PORT=1521)))
        Services Summary...
        Service "+ASM" has 1 instance(s).
          Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...
        Service "+ASM_XPT" has 1 instance(s).
          Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...
        Service "GOBO1" has 1 instance(s).
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "GOBO1XDB" has 1 instance(s).
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "GOBO1_XPT" has 1 instance(s).
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "PLSExtProc" has 1 instance(s).
          Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
        The command completed successfully  
        
        #通過上面的觀察可知,當前的兩個實例都是在各自所在主機上的監聽器進行了注冊。


二、設置remote_listener參數

    1、在節點bo2dbp上執行下列的命令
        SQL> show parameter instance_name
        
        NAME                                 TYPE        VALUE
        ------------------------------------ ----------- ------------------------------
        instance_name                        string      GOBO1A
        
        -->為節點bo2dbp設置遠程監聽器
        -->這意味着可以將實例GOBO1A上提供的服務可以注冊到LISTENER_BO2DBS定義的監聽器中
        SQL> alter system set remote_listener='LISTENER_BO2DBS' sid='GOBO1A';
        
        System altered.
        
        -->執行 register 實現注冊
        SQL> alter system register;
        
        System altered.
        
        #再次查看節點bo2dbs監聽器狀態,實例GOBO1A已經注冊到bo2dbs節點
        oracle@bo2dbs:/u01/oracle/db/network/admin> lsnrctl status LISTENER_BO2DBS
        
        LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 25-SEP-2012 17:23:03
        
        Copyright (c) 1991, 2006, Oracle.  All rights reserved.
        
        Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=bo2dbs-vip.2gotrade.com)(PORT=1521)(IP=FIRST)))
        STATUS of the LISTENER
        ------------------------
        ..............
        Listener Parameter File   /u01/oracle/db/network/admin/listener.ora
        Listener Log File         /u01/oracle/db/network/log/listener_bo2dbs.log
        Listening Endpoints Summary...
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.62)(PORT=1521)))
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.52)(PORT=1521)))
        Services Summary...
        Service "+ASM" has 1 instance(s).
          Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...
        Service "+ASM_XPT" has 1 instance(s).
          Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...
        Service "GOBO1" has 2 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "GOBO1XDB" has 2 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "GOBO1_XPT" has 2 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "PLSExtProc" has 1 instance(s).
          Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
        The command completed successfully
     
    2、節點bo2dbs上設置local_listener,remote_listener
        SQL> select instance_name from v$instance;
        
        INSTANCE_NAME
        ----------------
        GOBO1B
        
        SQL> show parameter listener
        
        NAME                                 TYPE        VALUE
        ------------------------------------ ----------- ------------------------------
        local_listener                       string
        remote_listener                      string
        
        -->按照節點bo2dbp上的操作方式將節點bo2dbs上的remote_listener只向節點bo2dbp
        SQL> alter system set remote_listener='LISTENER_BO2DBP' sid='GOBO1B';
        
        System altered.
        
        SQL> alter system register;
        
        System altered.
        
        -->在bo2dbp節點上也可以看到實例GOBO1B也注冊到了第一個節點上
        oracle@bo2dbp:/u01/oracle/db/network/admin> lsnrctl status LISTENER_BO2DBP
        
        LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 25-SEP-2012 17:32:19
        
        Copyright (c) 1991, 2006, Oracle.  All rights reserved.
        
        Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=bo2dbp-vip.2gotrade.com)(PORT=1521)(IP=FIRST)))
        STATUS of the LISTENER
        ------------------------
        ............
        Listener Parameter File   /u01/oracle/db/network/admin/listener.ora
        Listener Log File         /u01/oracle/db/network/log/listener_bo2dbp.log
        Listening Endpoints Summary...
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.61)(PORT=1521)))
          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.51)(PORT=1521)))
        Services Summary...
        Service "+ASM" has 1 instance(s).
          Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
        Service "+ASM_XPT" has 1 instance(s).
          Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
        Service "GOBO1" has 2 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "GOBO1XDB" has 2 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "GOBO1_XPT" has 2 instance(s).
          Instance "GOBO1A", status READY, has 1 handler(s) for this service...
          Instance "GOBO1B", status READY, has 1 handler(s) for this service...
        Service "PLSExtProc" has 1 instance(s).
          Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
        The command completed successfully


三、總結(缺省1521端口)
1、RAC 監聽的配置當使用缺省的監聽器時則監聽器名字為 LISTENER_${NODE}
2、如未設置remote_listener,本地實例只在本地的監聽器注冊。而當設置了正確的remote_listener,則本地實例可以實現遠程注冊
3、缺省情況下,PMON進程自動將instance_name和service_names等信息注冊到已啟動的缺省偵聽器
4、可以使用alter system register 實現快速注冊

Important:

Do not set the GLOBAL_DBNAME parameter in the SID_LIST_listener_name section of the listener.ora.
A statically configured global database name disables connect-time failover.

 

四、更多參考

有關基於用戶管理的備份和備份恢復的概念請參考

    Oracle 冷備份

    Oracle 熱備份

    Oracle 備份恢復概念

    Oracle 實例恢復

    Oracle 基於用戶管理恢復的處理(詳細描述了介質恢復及其處理)

    SYSTEM 表空間管理及備份恢復

    SYSAUX表空間管理及恢復

   Oracle 基於備份控制文件的恢復(unsing backup controlfile)

 

有關RMAN的備份恢復與管理請參考

    RMAN 概述及其體系結構

    RMAN 配置、監控與管理

    RMAN 備份詳解

    RMAN 還原與恢復

    RMAN catalog 的創建和使用

    基於catalog 創建RMAN存儲腳本

    基於catalog 的RMAN 備份與恢復

    RMAN 備份路徑困惑(使用plus archivelog時)

 

有關ORACLE體系結構請參考

    Oracle 表空間與數據文件

    Oracle 密碼文件

    Oracle 參數文件

    Oracle 聯機重做日志文件(ONLINE LOG FILE)

    Oracle 控制文件(CONTROLFILE)

    Oracle 歸檔日志

    Oracle 回滾(ROLLBACK)和撤銷(UNDO)

    Oracle 數據庫實例啟動關閉過程

    Oracle 10g SGA 的自動化管理

    Oracle 實例和Oracle數據庫(Oracle體系結構)
————————————————
版權聲明:本文為CSDN博主「Leshami」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/leshami/article/details/8020800


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM