【发布时间】:2013-04-02 19:10:30
【问题描述】:
我尝试通过 cx_Oracle 连接到远程 oracle 服务器:
db = cx_Oracle.connect('用户名', '密码', dsn_tns)
但它说 databaseError: ORA-12541 tns no listener
【问题讨论】:
我尝试通过 cx_Oracle 连接到远程 oracle 服务器:
db = cx_Oracle.connect('用户名', '密码', dsn_tns)
但它说 databaseError: ORA-12541 tns no listener
【问题讨论】:
我能够通过 db 客户端(例如 datagrip)进行连接,但是当我从 python 脚本连接时出现 No Listener 错误,因为我的原始连接字符串没有指定端口。我在关注cx_Oracle doc
post 帮助我通过这种方式指定端口:
ip = '192.168.0.1'
port = 1521
SID = 'YOURSIDHERE'
dsn_tns = cx_Oracle.makedsn(ip, port, SID)
db = cx_Oracle.connect('username', 'password', dsn_tns)
【讨论】:
dsn 解决了我的问题。
makedsn() 也接受 service_name='foo' 而不是我需要的 SID。 cx-oracle.readthedocs.io/en/6.4/module.html#cx_Oracle.makedsn
如果将 listener.ora 文件(在 Oracle 服务器本身上)配置为侦听“localhost”而不是机器名,则可能会发生此错误。
听众= (DESCRIPTION_LIST = (描述= (地址 =(协议 = IPC)(密钥 = EXTPROC1521)) (地址 =(协议 = TCP)(主机 = WN700014)(端口 = 1521)) ) )
【讨论】:
在我的情况下,这是由于我的服务器端口错误:
./install_database_new.sh localhost:1511 XE full
我将端口更改为“1521”,我可以连接。
【讨论】: