【发布时间】:2020-01-11 05:36:16
【问题描述】:
我正在尝试在 Windows 10 系统(基于 https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#installing-cx-oracle-on-windows)上使用 cx_Oracle 和 python 连接到 oracle 数据库,例如下面:
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('host', 'port', service_name='name')
conn = cx_Oracle.connect(user='username', password='passwd', dsn=dsn_tns)
我有一个错误:
cx_Oracle.OperationalError: ORA-03135: 连接失去联系
进程 ID:0 会话 ID:0 序列号:0
我还在 sqlnet.ora 中添加了 2 个参数(基于来自:https://www.vitalsofttech.com/ora-03135-connection-lost-contact/ 的信息):
- SQLNET.EXPIRE_TIME=10
- SQLNET.INBOUND_CONNECT_TIMEOUT=3
仍然报同样的错误。
我在想这可能是防火墙的问题,但事实并非如此。我也可以使用 sqlplus 从命令行连接到数据库。
Tnsping 从我的本地机器到数据库返回 OK。
【问题讨论】:
-
您需要提供更多信息——比如在产生错误之前需要多长时间?每次都在完全相同的时间段内发生吗?该错误表明网络故障。你能排除这种情况吗?
-
如果此错误发生在连接时,请确保您的数据库用户已被授予 CREATE SESSION 权限。
-
@ChristopherJones 感谢您的回答。我有 CREATE SESSION 权限。
-
@AnthonyTuinga 肯定不是网络故障的问题。当我尝试通过我的 python 脚本连接到数据库时,每次都会发生这种情况。
标签: python python-3.x oracle12c cx-oracle