配置非默认端口的动态服务注册

本文介绍如何在Oracle数据库中配置非默认端口的动态服务注册,包括服务器端和客户端的配置步骤,以及常见错误的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--==============================

-- 配置非默认端口的动态服务注册

--==============================

 

    Oracle客户端连接到服务器,除了使用静态注册方式之外,9i后续的版本支持动态注册服务,同时可以将服务注册到非默认的端口。将服务注册到非默认端口可以提高数据库系统的安全性。

    关于Oracle从客户端连接到数据库的详细配置方法可以参考:配置ORACLE客户端连接到数据库 

   

一、服务器端的配置

    1.配置非默认的listener.ora,即侦听器为list2,且端口号改为,可以使用netcanetmgrvim等来完成,配置的内容如下:

        [oracle@oradb admin]$ cat listener.ora

        # listener.ora Network Configuration File: /u01/app/oracle/10g/network/admin/listener.ora

        # Generated by Oracle configuration tools.

 

        LIST2 =

          (DESCRIPTION =

            (ADDRESS = (PROTOCOL = TCP)(HOST = oradb.robinson.com)(PORT = 1421))

          )

    2.配置tnsnames.ora,同样可以使用netcanetmgrvim等来完成,配置的内容如下:

        [oracle@oradb admin]$ cat tnsnames.ora

        # tnsnames.ora Network Configuration File: /u01/app/oracle/10g/network/admin/tnsnames.ora

        # Generated by Oracle configuration tools.

 

        list2 =

          (DESCRIPTION =

            (ADDRESS_LIST =

              (ADDRESS = (PROTOCOL = TCP)(HOST = oradb.robinson.com)(PORT = 1421))

            )

            (CONNECT_DATA =

              (SERVICE_NAME = orcl.robinson.com)

            )

          )

 

    3.启动非默认的侦听器

        [oracle@oradb admin]$ lsnrctl start list2

 

        LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 15-SEP-2010 19:49:31

 

        Copyright (c) 1991, 2005, Oracle.  All rights reserved.

 

        Starting /u01/app/oracle/10g/bin/tnslsnr: please wait...

 

        TNSLSNR for Linux: Version 10.2.0.1.0 - Production

        System parameter file is /u01/app/oracle/10g/network/admin/listener.ora

        Log messages written to /u01/app/oracle/10g/network/log/list2.log

        Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oradb.robinson.com)(PORT=1421)))

 

        Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oradb.robinson.com)(PORT=1421)))

        STATUS of the LISTENER

        ------------------------

        Alias                     list2

        Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production

        Start Date                15-SEP-2010 19:49:31

        Uptime                    0 days 0 hr. 0 min. 0 sec

        Trace Level               off

        Security                  ON: Local OS Authentication

        SNMP                      OFF

        Listener Parameter File   /u01/app/oracle/10g/network/admin/listener.ora

        Listener Log File         /u01/app/oracle/10g/network/log/list2.log

        Listening Endpoints Summary...

          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oradb.robinson.com)(PORT=1421)))

        The listener supports no services

        The command completed successfully     

   

    4.设定local_listener参数

        SQL> show parameter local_listener;

 

        NAME                                 TYPE        VALUE

        ------------------------------------ ----------- ------------------------------

        local_listener                       string

        SQL> alter system set local_listener = 'list2';

 

        System altered.

 

    5.查看侦听器list2的状态,orcl.robinson.com服务已成功注册

      如果没有成功注册,执行这个语句alter system register;

        [oracle@oradb admin]$ lsnrctl status list2

        ----------------------------中间部分省略-----------------------------------

        Listening Endpoints Summary...

          (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oradb.robinson.com)(PORT=1421)))

        Services Summary...

        Service "orcl.robinson.com" has 1 instance(s).

          Instance "orcl", status READY, has 1 handler(s) for this service...

        Service "orclXDB.robinson.com" has 1 instance(s).

          Instance "orcl", status READY, has 1 handler(s) for this service...

        Service "orcl_XPT.robinson.com" has 1 instance(s).

          Instance "orcl", status READY, has 1 handler(s) for this service...

        The command completed successfully 

 

二、客户端配置

    客户端为OSWinxpOracle客户端软件为Oracle 10g 客户端

    可以使用Winxp上的配置工具配置tnsnames.ora,也可以将服务器上的tnsnames.ora配置文件复制到本地OS或将内容更新到本地的tnsnames.ora文件

    演示中为从服务器上的tnsnames.ora的内容更新到本地客户端的tnsnames.ora

        C:/>sqlplus /nolog

 

        SQL*Plus: Release 10.2.0.1.0 - Production on 星期二914 20:05:23 2010

 

        Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

        SQL> conn scott/tiger@list2;

        Connected. 

       

    将客户端的网络服务名更新为abc,如下

        abc =

          (DESCRIPTION =

            (ADDRESS_LIST =

              (ADDRESS = (PROTOCOL = TCP)(HOST = oradb.robinson.com)(PORT = 1421))

            )

            (CONNECT_DATA =

              (SERVICE_NAME = orcl.robinson.com)

            )

          )

    尝试再次连接,可以成功连接,由此可以看出跟网络服务名无关,重要的连接描述信息

        SQL> conn system/redhat@abc

        Connected. 

 

三、常见故障(ORA-00119ORA-00132错误解决)

    1.启动实例时收到如下错误提示

        SQL> startup

        ORA-00119: invalid specification for system parameter LOCAL_LISTENER

        ORA-00132: syntax error or unresolved network name 'list2'

       

        方法一

            --从描述中可以看到参数local_listener设置的值list2无效

                SQL> ho oerr ora 00132

                00132, 00000, "syntax error or unresolved network name '%s'"

                // *Cause:  Listener address has syntax error or cannot be resolved.

                // *Action: If a network name is specified, check that it corresponds

                //          to an entry in TNSNAMES.ORA or other address repository

                //          as configured for your system. Make sure that the entry

                //          is syntactically correct.

           

            --根据提示检查服务器端的tnsnames.ora

                [oracle@oradb admin]$ cat tnsnames.ora

                # tnsnames.ora Network Configuration File: /u01/app/oracle/10g/network/admin/tnsnames.ora

                # Generated by Oracle configuration tools.

 

                list =           --此处为list,将其改为list2

                  (DESCRIPTION =

                    (ADDRESS_LIST =

                      (ADDRESS = (PROTOCOL = TCP)(HOST = oradb.robinson.com)(PORT = 1421))

                    )

                    (CONNECT_DATA =

                      (SERVICE_NAME = orcl.robinson.com)

                    )

                  )

            --改为list2后,实例正常启动

       

        方法二

            也可以先使用pfile启动,pfile中指定spfile的路径,然后再增加一行local_listener=''如下:

            spfile='/u01/app/oracle/10g/dbs/spfileorcl.ora'

            local_listener = ''

启动实例后再使用alter system set local_listener = '' scope = spfile;来修改spfile 文件,重启即可

            关于pfile的常见故障可以参考:

                Oracle 参数文件

                SPFILE 错误导致数据库无法启动(ORA-01565)

                又一例SPFILE设置错误导致数据库无法启动

 

    2.修改参数local_listener时出现的错误提示

        假定此处中的侦听为默认的侦听器,但端口号使用的是非默认端口,而是使用的.

        服务器端的listener.oratnsnames.ora的配置信息如下:

            [oracle@oradb admin]$ cat listener.ora

            # listener.ora Network Configuration File: /u01/app/oracle/10g/network/admin/listener.ora

            # Generated by Oracle configuration tools.

 

            LISTENER =

              (DESCRIPTION =

                (ADDRESS = (PROTOCOL = TCP)(HOST = oradb.robinson.com)(PORT = 1522))

              )

 

            [oracle@oradb admin]$ cat tnsnames.ora

            # tnsnames.ora Network Configuration File: /u01/app/oracle/10g/network/admin/tnsnames.ora

            # Generated by Oracle configuration tools.

 

            orcl.robinson.com =

              (DESCRIPTION =

                (ADDRESS_LIST =

                  (ADDRESS = (PROTOCOL = TCP)(HOST = oradb.robinson.com)(PORT = 1522))

                )

                (CONNECT_DATA =

                  (SERVICE_NAME = orcl.robinosn.com)

                )

              )    

 

        对于非默认端口,我们需要修改local_listener,如下

            SQL> alter system set local_listener ='listener'; --修改时收到了ORA-02097ORA-00119错误

            alter system set local_listener ='listener'

            *

            ERROR at line 1:

            ORA-02097: parameter cannot be modified because specified value is invalid

            ORA-00119: invalid specification for system parameter LOCAL_LISTENER

            ORA-00132: syntax error or unresolved network name 'listener'  

       

        对于默认的侦听器,同样需要修改服务器端tnsnames.ora的网络服务名,使得与侦听器的名字相同

        tnsnames.ora修改后的内容为:

            listener =

              (DESCRIPTION =

                (ADDRESS_LIST =

                  (ADDRESS = (PROTOCOL = TCP)(HOST = oradb.robinson.com)(PORT = 1522))

                )

                (CONNECT_DATA =

                  (SERVICE_NAME = orcl.robinosn.com)

                )

              )    

        再次修改local_listener参数

            SQL> alter system set local_listener = 'listener';

 

            System altered.

        修改完毕后,可以看到服务已经注册

            Services Summary...

            Service "orcl.robinson.com" has 1 instance(s).

              Instance "orcl", status READY, has 1 handler(s) for this service...

            Service "orclXDB.robinson.com" has 1 instance(s).

              Instance "orcl", status READY, has 1 handler(s) for this service...

            Service "orcl_XPT.robinson.com" has 1 instance(s).

              Instance "orcl", status READY, has 1 handler(s) for this service...

            The command completed successfully     

四、总结

       

    1.对于使用非默认端口的动态注册,需要手工指定端口号。

    2.不管服务器段使用的是缺省的侦听器还是非缺省的侦听器,只要使用到了非默认端口,则需要修改服务器端的tnsnames.ora中的网络服务名使其与侦听器的名字相同。

    3.修改local_listener 参数设置本地侦听器的名称。因为pmon进程仅仅会轮询检查默认号端口的侦听器,并在查找到时进行注册。

        alter system set local_listener = 'listener_name';

    4.成功修改local_listener参数后,如果还没有看到注册的服务名,使用下面的命令来实现注册(10g不需要)

        alter system register;

    5.客户端的tnsnames.ora可以使用服务器端tnsnames.ora中的网络服务名,也可以使用其他的名字,即可以任意命名。

 

五、更多参考

 

Oracle 备份

 

SPFILE错误导致数据库无法启动

 

Oracle 用户、对象权限、系统权限

 

Oracle 角色、配置文件

 

  Oracle 联机重做日志文件(ONLINE LOG FILE)

 

  Oracle 控制文件(CONTROLFILE)

 

  Oracle 表空间与数据文件

 

Oracle 归档日志

 

<think>嗯,用户问我关于iSCSI服务默认端口的问题。我需要先确认自己对这个协议的理解是否正确。iSCSI是一种基于IP网络的存储协议,允许通过TCP/IP传输SCSI命令,把远程存储设备映射到本地,对吧? 接下来,iSCSI的默认端口是多少呢?我记得iSCSI主要使用两个端口。一个是用于控制连接的,另一个是数据传输的。常见的默认端口应该是3260,这个端口是iSCSI Target监听的,客户端(Initiator)通过这个端口连接。对吗?不过有没有其他相关的端口呢?比如,在早期的文档中可能提到过不同的端口,或者是其他辅助服务使用的端口? 然后,我需要确认这些信息是否准确。可能RFC文档里有说明,或者官方文档中的端口分配。例如,IANA的端口注册表中,3260确实是分配给iSCSI的。此外,iSNS(Internet存储名称服务)使用的端口是3205和3260,但iSNS是可选的,不是iSCSI协议本身必须的,所以用户可能问的是核心服务的端口。 用户可能是在配置防火墙或者网络策略时需要这些信息,所以需要明确说明默认端口以及可能的其他相关端口。比如,在设置安全组规则时,除了3260是否还需要开放其他端口?或者iSCSI是否使用动态端口范围?根据记忆,iSCSI通常固定使用3260,而数据传输可能使用其他端口,具体取决于实现方式。例如,微软的iSCSI Initiator可能会使用动态端口,但Target端还是固定在3260。 另外,是否需要提到iSCSI的发现阶段?比如,SendTargets发现是否使用同一端口?一般来说,发现过程也是通过3260端口进行的,所以可能不需要额外的端口。但如果有其他发现机制,比如iSNS,就需要相应的端口。 总结一下,iSCSI服务默认使用TCP端口3260,用于Target和Initiator之间的通信。其他相关服务如iSNS使用3205,但iSCSI核心服务主要依赖3260。用户可能需要确保防火墙允许该端口的流量,特别是在跨网络使用iSCSI时。另外,某些实现可能会有不同的配置,但默认情况下应遵循IANA分配的端口。</think>iSCSI(Internet Small Computer System Interface)服务的默认端口及相关信息如下: ### 核心端口 1. **TCP 3260** - **用途**:iSCSI Target(存储设备端)的默认监听端口。 - **说明**:所有iSCSI Initiator(客户端)通过此端口与Target建立控制连接和数据传输。 --- ### 其他相关端口(可选) 1. **TCP 3205** - **用途**:iSNS(Internet Storage Name Service服务端口。 - **说明**:用于存储设备的自动发现和管理,非必需但可简化大规模部署。 2. **动态高端口(如49152-65535)** - **用途**:某些实现(如Microsoft iSCSI Initiator)可能使用动态端口进行数据传输。 - **说明**:需在防火墙中开放此类端口或限制为特定范围。 --- ### 关键注意事项 1. **防火墙配置** - 必须开放 **TCP 3260** 以允许客户端与存储设备通信。 - 若使用iSNS,需额外开放 **TCP 3205**。 - 动态端口场景需根据具体实现调整规则。 2. **发现协议** - 通过 **SendTargets** 发现存储设备时,仍依赖 **3260** 端口,无需额外配置。 --- ### 示例场景 ```plaintext iSCSI Initiator(客户端) → TCP 3260 → iSCSI Target(存储端) iSNS服务器(可选) → TCP 3205 → iSCSI设备注册与发现 ``` 如果需要更详细的网络配置建议,请补充说明具体使用环境(如公有云、本地数据中心等)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风智语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值