我使用bash shell在我的Linux机器上为我的Oracle XE DB启动TNS Listener时遇到了问题:
LSNRCTL> start
Starting /oracle/product/11.2.0/xe/bin/tnslsnr: please wait...
TNS-12537: TNS:connection closed
TNS-12560: TNS:protocol adapter error
TNS-00507: Connection closed
Linux Error: 29: Illegal seek
LSNRCTL> exit
我尝试了很多在互联网上给出的不同解决方案,最后在提到https://dba.stackexchange.com/questions/23308/linux-error-29-illegal-seek-in-lsnrctl-for-linux-version-11-2之后问题得到了解决
我案例的解决方案是:
export LD_BIND_NOW=1
我已经在多个Linux机器中安装了Oracle XE DB,但我只用了一个盒子就遇到了这个问题.这个变量是什么以及它如何解决非法寻求问题?
我的Linux机箱详细信息如下:
bash-4.1$uname -a
Linux
最佳答案
今天我遇到了同样的问题.问题似乎是二进制tnslsnr可执行文件中的错误.
我的解决方案是将主机名更改为位于/oracle/product/11.2.0/xe/network/admin/listener.ora中的listener.ora中的IP地址.
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
调整文件/ etc / hosts并覆盖localhost语句(如其他答案中所述)不起作用.
我不知道是否建议使用IP地址而不是主机名,但对我来说,它可以解决问题.