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

重装Oracle后VSCode连接报错ORA-12541: TNS:no listener求助

Oracle连接报错ORA-12541及TNS监听问题解决

问题描述

此前在VSCode中运行Python脚本可正常连接本地Oracle数据库并写入数据,格式化机器重装Oracle数据库及实例客户端后,连接失败,报错:

Traceback (most recent call last):
File "c:\Users\ChiNedu\Documents\python\Oracle\oracle.py", line 10, in <module>
  cnx = cx_Oracle.connect(conStr)
cx_Oracle.DatabaseError: ORA-12541: TNS:no listener

执行lsnrctl stat命令返回:

LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 09-FEB-2023 17:33:46

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DESKTOP-QPAJR53)(PORT=1521)))
 TNS-12545: Connect failed because target host or object does not exist
  TNS-12560: TNS:protocol adapter error
   TNS-00515: Connect failed because target host or object does not exist
    64-bit Windows Error: 1001: Unknown error
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
 TNS-12541: TNS:no listener
  TNS-12560: TNS:protocol adapter error
   TNS-00511: No listener
    64-bit Windows Error: 2: No such file or directory

尝试修改HOST NAME,但找不到%ORACLE_HOME%/network/admin目录。

解决步骤

1. 检查并启动Oracle监听服务

  • 按下Win+R输入services.msc打开服务管理器
  • 找到名称包含TNSListener的服务(例如OracleOraDB19Home1TNSListener,名称随Oracle版本略有差异)
  • 若服务未启动,右键选择启动;若已启动,尝试重启服务

2. 配置ORACLE_HOME环境变量

  • 打开命令提示符,执行以下命令查看当前ORACLE_HOME路径:
    echo %ORACLE_HOME%
    
  • 若返回为空,手动配置环境变量:
    1. 右键此电脑→属性→高级系统设置→环境变量
    2. 在系统变量区点击新建,变量名填ORACLE_HOME,变量值填Oracle安装根目录(示例:C:\app\你的用户名\product\19.0.0\dbhome_1,需根据实际安装路径调整)
    3. 编辑系统变量中的Path,添加%ORACLE_HOME%\bin

3. 创建并配置network/admin目录及文件

  • 若%ORACLE_HOME%\network\admin目录不存在,手动创建该路径
  • 在admin目录下创建tnsnames.ora和listener.ora文件:
    • listener.ora示例内容:
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
        )
      
      ADMIN_RESTRICTIONS_LISTENER = ON
      
    • tnsnames.ora示例内容(替换ORCL为你的数据库实例名):
      ORCL =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = ORCL)
          )
        )
      

4. 重启监听并验证状态

  • 在命令提示符执行以下命令重启监听:
    lsnrctl stop
    lsnrctl start
    
  • 再次执行lsnrctl stat,若返回正常的监听状态信息则配置生效

5. 调整Python连接字符串

  • 将连接字符串中的HOST改为localhost或127.0.0.1,避免主机名解析问题,示例:
    conStr = "用户名/密码@localhost:1521/ORCL"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:35:19