Oracle DPY-6005连接错误求助:目标机器主动拒绝连接
问题:Oracle DPY-6005 连接错误(WinError 10061 目标机器主动拒绝)
使用Python的oracledb库连接Oracle数据库时,触发DPY-6005错误,具体报错信息:
[WinError 10061] 由于目标机器主动拒绝,无法建立连接
已尝试以下操作但未解决问题:
- 关闭防火墙
- 核对
tnsnames.ora中的端口号并在代码中使用该端口 - 通过
ipconfig获取IPv4地址用于连接
连接代码
import oracledb # Create a table in Oracle database try: print("############") #con = oracledb.connect('userid/password@XXX.XXX.XXX.XXX/ORCL') con = oracledb.connect(user="userid", password='password', host="XXX.XXX.XXX.XXX", port=1521, service_name="orcl.lan") print("############") print(con.version) # Now execute the sqlquery cursor = con.cursor() # Creating a table employee cursor.execute("create table employee(empid integer primary key, name varchar2(30), salary number(10, 2))") print("Table Created successfully") except oracledb.DatabaseError as e: print("There is a problem with Oracle", e) # by writing finally if any error occurs # then also we can close the all database operation finally: if cursor: cursor.close() if con: con.close()
排查与解决方向
- 确认Oracle核心服务状态
打开Windows服务管理器(运行services.msc),检查OracleServiceORCL(实例名可能不同)和OracleOraDBXXXHome1TNSListener是否处于运行状态,未启动则手动启动。 - 验证监听配置
执行命令lsnrctl status查看监听状态,确认1521端口正常监听,且orcl.lan服务已注册到监听中。若服务未注册,修改listener.ora后重启监听服务。 - 核对服务名准确性
本地登录数据库后执行SQL:SELECT value FROM v$parameter WHERE name='service_names';,确认返回的服务名与代码中service_name参数完全一致(Oracle服务名区分大小写)。 - 测试端口连通性
用PowerShell命令Test-NetConnection XXX.XXX.XXX.XXX -Port 1521或telnet XXX.XXX.XXX.XXX 1521测试端口是否真的可达,若不通需排查数据库服务器端的网络路由、端口占用情况。 - 检查用户权限
确认连接用的userid具备远程连接权限,未被IP访问限制。可先在数据库服务器本地用该账号连接,验证账号有效性。 - 版本兼容性检查
确认oracledb库版本与Oracle数据库版本兼容,比如Oracle 19c建议搭配oracledb 2.x及以上版本。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

