Linux

Linux 錯誤:29:Linux 版本 11.2 的 LSNRCTL 中的非法搜尋

  • August 25, 2018

我正在嘗試在我的伺服器上設置 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=yestcp.validnode_checking=noin sqlnet.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 本地主機

我不小心刪除了這條線,因此,在安裝數據庫後啟動偵聽器時出現錯誤。此外,監聽器不是自動創建的,我必須添加監聽器。

引用自:https://dba.stackexchange.com/questions/23308