You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改tnsname.ora和listener.ora后Oracle数据库服务异常

Oracle数据库监听器修改IP后服务无法注册问题

我在Windows虚拟机上安装了Oracle数据库,尝试从宿主机通过JDBC连接。由于监听器仅监听localhost,我将IP地址修改为虚拟机自身的IP(172.24.255.55),但修改tnsname.ora和listener.ora文件后,数据库服务停止,无法再进行连接。


修改后的tnsnames.ora文件

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.255.55)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.255.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

修改后的listener.ora文件

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\OracleApp)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\OracleApp\bin\oraclr19.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.255.55)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

修改前(HOST=localhost)的lsnrctl service输出

LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 28-MAR-2023 12:41:52

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "39497c8ffac84c17938bc17b28d587ef" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3 refused:0 state:ready
         LOCAL SERVER
Service "52448234712340b69f274bcc790ecfe0" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3 refused:0 state:ready
         LOCAL SERVER
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3 refused:0 state:ready
         LOCAL SERVER
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: DESKTOP-U6PKHQ7, pid: 8072>
         (ADDRESS=(PROTOCOL=tcp)(HOST=DESKTOP-U6PKHQ7)(PORT=49773))
Service "orclpdb" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:3 refused:0 state:ready
         LOCAL SERVER
The command completed successfully

修改HOST为IP地址后的lsnrctl service输出

LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 28-MAR-2023 12:46:14

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.24.255.55)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
The command completed successfully

解决步骤

  1. 更新数据库本地监听参数
    登录数据库执行以下SQL,修改并刷新监听注册:

    -- 查看当前监听配置
    SHOW PARAMETER local_listener;
    -- 更新为新IP的监听地址
    ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=172.24.255.55)(PORT=1521))' SCOPE=BOTH;
    -- 强制注册服务到监听器
    ALTER SYSTEM REGISTER;
    
  2. 重启/重载监听器
    在虚拟机命令行执行:

    -- 先停止监听器(如果已启动)
    lsnrctl stop
    -- 启动监听器
    lsnrctl start
    -- 或者直接重载配置(无需停止)
    lsnrctl reload
    
  3. 验证端口监听状态
    执行以下命令确认监听器是否在指定IP和端口上监听:

    netstat -ano | findstr 1521
    

    输出中应包含172.24.255.55:1521的监听记录。

  4. 检查Windows防火墙设置
    确保虚拟机防火墙允许1521端口的TCP入站连接,可临时关闭防火墙测试是否恢复正常。

  5. 确认hosts文件映射
    打开C:\Windows\System32\drivers\etc\hosts,添加或确认以下映射:

    172.24.255.55 DESKTOP-U6PKHQ7
    
  6. 重启Oracle服务
    在Windows服务列表中找到OracleServiceORCL和OracleOraDB19Home1TNSListener,先停止再启动,确保配置生效。

内容的提问来源于stack exchange,提问作者ironmanAJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:30:45