环境:linux,oracle服务器,使用docker里的python访问oracle数据库。
报错:ORA-12541:TNS:no listener
排查:
su - oracle切换成oracle用户后,用sqlplus可以连接到数据库,说明数据库本身是没问题的。
运行:lsnrctl status,发现监听终端是localhost。
明白了,这是限制了远程连接。
解决方法:
修改配置服务端listener.ora,加上HOST=0.0.0.0,如果不加,默认只能运行在本机的程序才能访问。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =0.0.0.0)(PORT = 1521))
)
重启一下监听:lsnrctl stop
、lsnrctl start