Linux 錯誤:29:Linux 版本 11.2 的 LSNRCTL 中的非法搜尋
我正在嘗試在我的伺服器上設置 Oracle Database 11g Express,以便可以從外部訪問它。我可以使用 SQLPlus 在本地與數據庫通信,因此數據庫肯定正在執行。我認為我的問題與聽眾有關。
這是我得到的:
$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 27-AUG-2012 16:14:38 Copyright (c) 1991, 2011, Oracle. All rights reserved. Starting /u01/app/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
我嘗試了在網上找到的兩種解決方案,但似乎都不起作用。第一個來自dba-oracle.com,建議更改
tcp.validcode_checking=yes
為tcp.validnode_checking=no
insqlnet.ora
。沒有這樣的行,所以我添加了它,但沒有運氣。我sqlnet.ora
在其他方面與我安裝時沒有變化。請注意,這指的是版本 10.2。第二個建議添加
127.0.0.1 localhost.localdomain localhost
到/etc/hosts
,我也這樣做了,沒有任何變化。沒有程序正在偵聽埠 1521(netstat -aopn | grep 1521
不返回任何內容)。任何建議都將受到歡迎。
更新
看來我誤解了我在看什麼。該
sqlnet.ora
文件位於samples
目錄中,因此偵聽器實際上並未讀取它。相反,它使用的是listener.ora
文件,如下所示:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe) (PROGRAM = extproc) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) DEFAULT_SERVICE_LISTENER = (XE)
該
tnsnames.ora
文件如下所示:XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
這些又是應用程序附帶的文件。我需要在這裡更改什麼嗎?
我遇到了完全相同的問題,進行了很多搜尋並嘗試了所有建議(例如正確設置 /etc/hosts)。
就我而言(OEL6、11gR2 XE),它通過以下方式解決:
export LD_BIND_NOW=1
這個執行緒很老了,但我也遇到了同樣的問題。這可以通過在 /etc/hosts 中添加以下行來解決。
127.0.0.1 localhost.localdomain 本地主機
我不小心刪除了這條線,因此,在安裝數據庫後啟動偵聽器時出現錯誤。此外,監聽器不是自動創建的,我必須添加監聽器。