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

Azure云Oracle数据库1521端口连接Oracle SQL Developer故障求助

Azure Oracle VM 次日无法连接的排查与解决

问题概述

在Azure创建Oracle虚拟机(测试过Oracle 19c、Azure应用商店Oracle 12c版本),首日可通过家中固定IP的Oracle SQL Developer正常连接,次日连接失败,报错:

Status : Failure -Test failed: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
(CONNECTION_ID=JlvBiUG7RNGM+9vvi3c3Sg==)

已配置Azure网络安全组(NSG)仅允许固定IP访问1521端口,封禁其他所有端口;VM与Oracle服务均设置为24小时持续运行,数据库SID未修改,怀疑/etc/init.d/dbora自启脚本配置存在问题。

排查步骤

  • 验证Oracle监听器状态
    登录Azure Oracle VM,执行以下命令检查监听器运行状态及服务注册情况:

    lsnrctl status
    

    如果监听器未运行,执行lsnrctl start启动;如果输出中未显示目标数据库服务,说明服务未注册,需检查数据库实例状态。

  • 检查数据库实例状态
    以sysdba身份登录数据库:

    sqlplus / as sysdba
    

    执行查询确认实例状态:

    select status from v$instance;
    

    若实例状态不为OPEN,执行startup启动实例,之后手动注册服务:

    alter system register;
    
  • 检查dbora自启脚本配置
    查看/etc/init.d/dbora脚本内容,确认包含监听器和数据库实例的启动逻辑,示例正确逻辑:

    case "$1" in
      start)
        echo "Starting Oracle Database..."
        su - oracle -c "lsnrctl start"
        su - oracle -c "sqlplus / as sysdba <<EOF
        startup
        exit
        EOF"
        ;;
      stop)
        echo "Stopping Oracle Database..."
        su - oracle -c "sqlplus / as sysdba <<EOF
        shutdown immediate
        exit
        EOF"
        su - oracle -c "lsnrctl stop"
        ;;
      *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;
    esac
    

    确认脚本已设置开机自启:

    • CentOS/RHEL系统:chkconfig --list dbora,确保各运行级别均为启用状态,未启用则执行chkconfig dbora on
    • Ubuntu系统:执行update-rc.d dbora defaults设置开机自启
  • 验证网络规则有效性
    检查Azure NSG的1521端口入站规则,确认固定IP未被移除或规则被禁用;同时检查VM操作系统防火墙(如firewalld、ufw),确保1521端口的允许规则为永久生效状态。

  • 核对TNS配置文件
    查看$ORACLE_HOME/network/admin/listener.ora,确认监听器监听所有IP:

    LISTENER =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
      )
    

    查看$ORACLE_HOME/network/admin/tnsnames.ora,确保服务名与数据库实例名一致。

解决方案

  1. 修复dbora自启脚本
    补充脚本中缺失的监听器/实例启动逻辑,并设置开机自启,确保系统重启后Oracle服务自动恢复。

  2. 配置监听器自动注册
    执行以下SQL命令设置local_listener参数,让数据库启动后自动向监听器注册服务:

    alter system set local_listener='LISTENER' scope=both;
    

    (LISTENER需与listener.ora中定义的监听器名一致)

  3. 设置实例开机自启
    编辑/etc/oratab文件,将目标数据库条目最后一位改为Y,示例:

    ORCL:/u01/app/oracle/product/19c/dbhome_1:Y
    

    这样dbstart脚本可自动识别并启动该实例。

终端连接验证方法

  • 端口连通性测试
    在家中PC执行以下命令,验证1521端口是否可访问:

    telnet <VM公网IP> 1521
    

    若能建立连接,说明网络层无问题;若连接失败,重新检查NSG及防火墙规则。

  • SQLPlus终端连接
    使用以下命令直接连接数据库:

    sqlplus username/password@<VM公网IP>:1521/<服务名或SID>
    

    示例:

    sqlplus sys/yourpassword@20.xx.xx.xx:1521/ORCL as sysdba
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:40:51