一个数据库如何在不同端口上监听

    技术2025-05-20  48

    如题,周五在客户现场,看到客户在baidu搜索相关的信息,就讨论下他的需求:

    由于收市后(证券公司),默认的1521端口会被切断,但是出于维护需要连接上这个数据库。

    客户的想法是同一个监听2个端口,我的想法是2个监听。在此记录下2中不同的方式。

    原listener.ora配置文件:

    # listener.ora Network Configuration File: /opt/oracle/db/db_1/network/admin/listener.ora # Generated by Oracle configuration tools.

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

    ADR_BASE_LISTENER = /opt/oracle/db

    1、一个监听对应2个端口 1521 1522

    listener.ora配置如下:

    # listener.ora Network Configuration File: /opt/oracle/db/db_1/network/admin/listener.ora # Generated by Oracle configuration tools.

    SID_LIST_LISTENER =   (SID_LIST =     (SID_DESC =       (GLOBAL_DBNAME = TEST)       (ORACLE_HOME = /opt/oracle/db/db_1)       (SID_NAME = TEST)     )   )

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

    ADR_BASE_LISTENER = /opt/oracle/db

    tnsnames.ora配置如下:

    # tnsnames.ora Network Configuration File: /opt/oracle/db/db_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools.

    TEST =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))     )     (CONNECT_DATA =       (SERVICE_NAME = TEST)     )   )

    TEST2 =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))     )     (CONNECT_DATA =       (SERVICE_NAME = TEST)     )   ) 测试

    通过TEST和TEST2均能够连接和使用,但是stop掉监听listener之后2个端口无法都无法使用。

    2、2个监听对应2个端口1521 1522

    listener.ora配置如下:

    # listener.ora Network Configuration File: /opt/oracle/db/db_1/network/admin/listener.ora # Generated by Oracle configuration tools.

    SID_LIST_LISTENER =   (SID_LIST =     (SID_DESC =       (GLOBAL_DBNAME = TEST)       (ORACLE_HOME = /opt/oracle/db/db_1)       (SID_NAME = TEST)     )   )

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

    SID_LIST_TEST =   (SID_LIST =     (SID_DESC =       (GLOBAL_DBNAME = TEST)       (ORACLE_HOME = /opt/oracle/db/db_1)       (SID_NAME = TEST)     )   )

    TEST =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = TCP)(HOST = gtlions)(PORT = 1522))     )   )

    ADR_BASE_LISTENER = /opt/oracle/db

    tnsnames.ora配置不变。 测试

    通过TEST和TEST2均能够连接和使用,而且因为2个端口分别由2个listener管理,单独停掉或被封住一个端口并不影响另一个端口使用。

    小结

    第1种方式一个监听对应2个端口,带来的问题是无法单独关掉这个端口的监听。

    -The End-

    最新回复(0)