24

lsnrctl status从命令中出现以下错误:

C:\Users\pna105>lsnrctl stat

 LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 08-OCT-2014 17:53
 :55

 Copyright (c) 1991, 2010, Oracle.  All rights reserved.

 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
 TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   64-bit Windows Error: 2: No such file or directory
 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
 TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
 TNS-00511: No listener
 64-bit Windows Error: 61: Unknown error

它在重新启动之前工作正常,但现在无法正常工作,我也无法访问我的 Oracle 主页。

tnsnames.ora的是:

  ORACLE = 
  (DESCRIPTION =  
    (ADDRESS_LIST =  
      (ADDRESS = (PROTOCOL = TCP)(HOST = Localhost)(PORT = 1521))  
    )  
    (CONNECT_DATA =  
      (SERVICE_NAME = ORACLE)  
    )  
   )

   LISTENER_ORACLE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


  ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  )
   (CONNECT_DATA =
   (SID = CLRExtProc)
   (PRESENTATION = RO)
  )
  )

listener.ora的是:(这里出现错误,因为括号放错位置添加了几个空格解决了问题 TNS-12518)

   SID_LIST_LISTENER =
   (SID_LIST =
   (SID_DESC =
    (SID_NAME = ORACLE)
    (ORACLE_HOME = C:\app\PNA105\product\11.2.0\dbhome_1)
  )  
  (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ORACLE_HOME = C:\app\PNA105\product\11.2.0\dbhome_1)
    (PROGRAM = extproc)
   )
   (SID_DESC =
  (SID_NAME = CLRExtProc)
  (ORACLE_HOME = C:\app\PNA105\product\11.2.0\dbhome_1)
  (PROGRAM = extproc)
  (ENVS = "EXTPROC_DLLS=ONLY:C:\app\PNA105\product\11.2.0\dbhome_1\bin\oraclr11.dll")
  )
  )

  LISTENER =
 (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  )
  )

  ADR_BASE_LISTENER = C:\app\PNA105

以下是lsnrctl start命令的输出

C:\Users\pna105>lsnrctl start

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 08-OCT-2014 18:26
:22

 Copyright (c) 1991, 2010, Oracle.  All rights reserved.

 Starting tnslsnr: please wait...

  TNS-12560: TNS:protocol adapter error
   TNS-00530: Protocol adapter error

以下是日志文件中需要的最后一个条目。

 Started with pid=14784
 Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
 Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
 Listener completed notification to CRS on start

 09-OCT-2014 15:46:01 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=INL007306$))
(SERVICE_NAME=oracle)) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=57389)) * 
establish * oracle * 12518
TNS-12518: TNS:listener could not hand off client connection
TNS-12560: TNS:protocol adapter error
 TNS-00530: Protocol adapter error
 64-bit Windows Error: 203: Unknown error
 Dynamic address is already listened on (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) 
 (HOST=127.0.0.1)(PORT=1521)))
 09-OCT-2014 15:46:06 * service_register * oracle * 0
 Thu Oct 09 15:46:11 2014
 09-OCT-2014 15:46:11 * service_update * oracle * 0
 09-OCT-2014 15:46:12 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=INL007306$))
 (SERVICE_NAME=oracle)) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=57393)) * 
  establish * oracle * 0
 09-OCT-2014 15:46:12 * service_update * oracle * 0
 09-OCT-2014 15:46:13 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=INL007306$))
 (SERVICE_NAME=oracle)) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=57394)) * 
 establish * oracle * 0

尝试解决 TNS-12518 并启动侦听器,但仍无法访问 Oracle 主页

lnsrctl stat 的输出

C:\Users\pna105>lsnrctl stat

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 09-OCT-2014 17:16
:56

 Copyright (c) 1991, 2010, Oracle.  All rights reserved.

 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
 STATUS of the LISTENER
  ------------------------
 Alias                     LISTENER
 Version                   TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ
 ction
 Start Date                09-OCT-2014 15:45:58
 Uptime                    0 days 1 hr. 30 min. 58 sec
 Trace Level               off
 Security                  ON: Local OS Authentication
 SNMP                      OFF
 Listener Parameter File   C:\app\PNA105\product\11.2.0\dbhome_1\network\admin\li
 stener.ora
 Listener Log File         c:\app\pna105\diag\tnslsnr\INL007306\listener\alert\lo
 g.xml
 Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
  Services Summary...
  Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
  Service "ORACLE" has 2 instance(s).
  Instance "ORACLE", status UNKNOWN, has 1 handler(s) for this service...
  Instance "oracle", status READY, has 1 handler(s) for this service...
  Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
  Service "oracleXDB" has 1 instance(s).
  Instance "oracle", status READY, has 1 handler(s) for this service...

命令成功完成

4

14 回答 14

23

我有同样的问题。我的解决方案:以管理员身份运行 CMD。然后键入并执行:“lsnrctl start”等待大约 2 分钟然后应该可以工作。(在我的情况下只有 50 秒,但为了安全起见)

于 2015-04-20T04:49:20.893 回答
7

1.检查环境变量(必须为系统设置而不是为用户设置):

ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server
ORACLE_SID = XE

2.检查listener.ora中的定义是否正确

XE =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

3.重启服务(服务> OracleServiceXE)

之后,您可能会看到一个名为 OracleXETNSListenerXE 的新服务。
已经有一个旧的 OracleXETNSListener。

我都开始了,然后我能够成功建立连接。

编辑:

如果一切都在运行,但您仍然无法连接,请检查是否没有错误:ORA-12557: TNS:protocol adapter not loadable

要更正错误,请返回环境变量,这次编辑名为:Path的变量。确保C:\oraclexe\app\oracle\product\11.2.0\server\bin位于开头的某个位置,绝对在指向不同版本 Oracle DB 的任何其他路径之前。

于 2018-03-06T13:04:13.430 回答
6

我通过更新 oracle 目录 oraclexe\app\oracle\product\11.2.0\server\network\ADMIN 中的 listener.ora 文件解决了这个问题。

为什么它发生在我身上是因为我更改了我的系统名称,但在 listener.ora 中有 HOST 的旧名称。

这可能是原因之一……对于那些仍然面临此类问题的人,可能也会想到这种可能性。

于 2017-02-24T07:38:22.190 回答
3

我在 Windows 上的 11.201 上遇到了同样的问题。之后:在新文件夹中额外安装 11.203 64 位服务器和客户端。PATH 环境变量在安装后立即更改。监听服务重启后出现监听错误。在我的情况下,有一个晚上的时间和 Windows 更新的数量,所以 Windows 服务器重启帮助了我们。我还根据http://pavandba.com/tag/tns-12560-tns-protocol-adapter-error/清理了 listener.log 文件,它非常大。

于 2014-10-17T10:32:35.280 回答
3

检查 ORACLE_HOME 环境变量是否指向正确的 oracle home。在我的情况下,它被另一个软件安装改变了。

于 2014-10-30T10:54:58.203 回答
2

我更改计算机名称后也发生了同样的情况。要解决这个问题,只需找到 listener.ora 文件并将旧计算机名称替换为新名称

于 2016-10-08T20:45:22.883 回答
1

我在 Windows 2012 服务器上安装 oracle 11gR2 时遇到了类似的问题。当我以管理员权限运行 cmd.exe 并运行“lsnrctl start LISTENER”时,问题就解决了。

于 2015-12-21T11:27:11.633 回答
1

我遇到了同样的问题,原因是:我的是个人windows PC。而且我已经修改了计算机名称,但在 listener.ora 中没有反映出来。使用更新的主机名更新 ORACLE_HOME\network\ADMIN\listener.ora 修复了该问题。

于 2016-03-29T13:59:24.923 回答
1

就我而言,我尝试通过控制台启动监听器:

> lsnrctl star

此命令打印以下错误:

TNS-12560: TNS:protocol adapter error
TNS-00583: Valid node checking: unable to parse configuration parameters

因此,我执行了以下操作:

  1. 检查 Oraclelistener.orasqlnet.ora文件是否包含特殊字符
  2. 检查 Oraclelistener.ora或 sqlnet.ora` 文件的格式或语法是否错误
  3. 检查 Oraclelistener.orasqlnet.ora文件是否有一些不被 Oracle 解析器接受的左对齐括号。

查看这些文件并检查正确的语法。如果可能,删除/重命名 sqlnet.ora 并尝试重新启动侦听器。或者删除/重命名 listener.ora 或 sqlnet.ora 文件并正确重新创建它。这些肯定会解决问题。

于 2016-11-17T15:59:25.003 回答
1

在我的情况下,Windows 侦听器服务以某种方式停止工作,因此我无法使用 SQL Developer 连接到 Qracle。但是我能够通过sqlplus.

以下解决方案对我有用:

首先,确保您的侦听器服务正在运行。

C:\Documents and Settings\ME>lsnrctl status 

如果侦听器服务未运行,请使用 Windows 任务管理器重新启动侦听器服务,或使用 DOS 命令行实用程序使用以下命令重新启动 Windows 服务net start

C:\Documents and Settings\ME>net start OracleOraDb10g_home1TNSListener 

尝试使用lsnrctl从 DOS 提示符启动侦听器服务。

lsnrctl start
于 2017-01-03T09:23:29.407 回答
0

我设法解决了导致在运行 Hortonworks HDP 2.6 沙盒的 docker 容器上配置失败的问题。

如果初始配置失败,监听器将运行并且必须首先被杀死:

ps -aux | grep tnslsnr
kill {process id identified above}

然后下一步是修复导致配置过程失败的共享内存问题。

根据https://blogs.oracle.com/oraclewebcentersuite/implement-oracle-database-xe-as-docker-containers,Oracle XE 需要 1 Gb 的共享内存,否则会失败(我没有尝试 512 mb)。

vi /etc/fstab

将行更改/添加到:

tmpfs    /dev/shm     tmpfs   defaults,size=1024m 0 0

然后通过以下方式重新加载配置:

mount -a

请记住,下次重新启动 docker 容器时,您可能必须执行“mount -a”。

于 2017-11-08T14:06:15.227 回答
0

在我的情况下,侦听器服务不会启动,因为它被设置为侦听 VPN 连接以及其他服务器接口。

一旦我连接到 VPN,它就开始了。

然而,@Imre 的“lsnrctl start”技巧让我走上了正轨。

于 2017-11-28T12:08:46.493 回答
0

问题

侦听器服务在 中停止services.msc

原因

用户密码已更改。

解决方案

  • 打开services.msc.
  • 右键单击特定的侦听器服务。
  • 单击属性。
  • 单击登录选项卡。
  • 更改密码。
  • 单击确定。
  • 启动服务。
于 2019-08-22T12:10:28.320 回答
0

在我的 Windows 情况下,监听器不会启动,并且“lsnrctl start”会永远挂起。解决方案是杀死 extproc 的所有进程。我怀疑这与我的 vpn 有什么关系

于 2020-07-09T14:10:50.377 回答