【问题标题】:Oracle Listener not startingOracle 侦听器未启动
【发布时间】:2017-01-31 15:05:00
【问题描述】:

我正在尝试启动我的 oracle 服务,但它没有启动。它向我展示了:

我正在执行以下命令:sudo ./lsnrctl start

适用于 Linux 的 LSNRCTL:版本 11.2.0.2.0 - 2017 年 1 月 31 日 20:31:26 生产

版权所有 (c) 1991、2011、甲骨文。保留所有权利。

未找到消息 1070;没有产品=网络的消息文件,设施=TNSTNS-12545:未找到消息 12545;没有产品=网络、设施=TNS 的消息文件 TNS-12560:未找到消息 12560;没有产品=网络、设施=TNS 的消息文件 TNS-00515:未找到消息 515;没有产品=网络、设施=TNS 的消息文件 Linux 错误:2:没有这样的文件或目录


之前它工作正常,但在更改我的系统名称后,它停止工作。

【问题讨论】:

  • 这些消息通常意味着您尚未设置(和导出)ORACLE_HOME,可能还有其他环境变量。
  • 一切都设置好了。 ORACLE_HOME、ORACLE_SID
  • 我不同意。它们可能已设置,但如果设置了,则不会导出,或者未设置为正确的值。执行export | grep ORA 并检查一切是否正确。如果您真的确信这不是问题,那么请显示您运行的实际命令(也许您正试图通过 sudo/su 运行并丢失环境,或其他什么)。
  • 是通过 sudo 运行
  • 它不允许我在没有 sudo 的情况下运行

标签: oracle oracle11g


【解决方案1】:

试着跑起来

sudo su - oracle -c "ORACLE_SID=your_db_name; ORACLE_HOME=/orahome/Database/db11g; export ORACLE_SID ORACLE_HOME; export PATH=$ORACLE_HOME/bin:$PATH;$ORACLE_HOME/bin/lsnrctl start"

请根据您的环境更改 ORACLE_HOME,your_db_name 的值

【讨论】:

  • sudo su - oracle -c "ORACLE_SID=db_name; ORACLE_HOME=path; export ORACLE_SID ORACLE_HOME; export PATH=$ORACLE_HOME/bin:$PATH;$ORACLE_HOME/bin/lsnrctl start" 不,还在不工作
  • @NitinNandankar - 只是说“不工作”不是很有帮助 - 现在会发生什么? (我会在没有破折号的情况下使用sudo su oracle,因此它不会尝试启动登录shell;而且您可能需要转义$,即以... \$ORACLE_HOME/bin/lsnrctl start" 结束 - 否则将在sudo 调用,不在其中。
【解决方案2】:

如果您想继续以 root 身份运行侦听器,您可以使用以下命令查看错误消息:

sudo ORACLE_HOME=$ORACLE_HOME $ORACLE_HOME/bin/lsnrctl start

... 它使用您的起始(非root)环境的$ORACLE_HOME;否则,您可以明确设置和使用该值:

sudo ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe /u01/app/oracle/product/11.2.0/xe/bin/lsnrctl start

来自绕过消息错误并向您展示更有用的内容的聊天:

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

Starting /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr: please wait... 

TNSLSNR for Linux: Version 11.2.0.2.0 - Production 
System parameter file is /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora 
Log messages written to /u01/app/oracle/product/11.2.0/xe/log/diag/tnslsnr/localhost/listener/alert/log.xml 
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE))) 
TNS-12555: TNS:permission denied 
TNS-12560: TNS:protocol adapter error 
TNS-00525: Insufficient privilege for operation 
Linux Error: 1: Operation not permitted 

Listener failed to start. See the error message(s) above...

您的 /etc/hosts 文件将您的机器名称 sam.samson 链接到 localhost/127.0.0.1,并且还从您的侦听器包含的聊天中链接:

LISTENER = 
(DESCRIPTION_LIST = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
(ADDRESS = (PROTOCOL = TCP)(HOST = sam.samson)(PORT = 1521)) 
) 
) 

由于错误消息涉及 EXTPROC_FOR_XE,并且删除该行显然允许 TCP 端口启动,Oracle 似乎已将其链接到旧主机名(现在无法正确解析)或类似的内容。您可能可以将密钥名称更改为新的名称,但完全删除它可能对您来说没问题。


以 root 身份运行任何 Oracle 进程不是必需的,也不是一个好主意。有一个专用的oracle 帐户和dba 组是正常的。但是您将有很多日志文件等现在拥有 y root,因此为了更改以在不同帐户下运行,您需要关闭所有内容,删除或更改所有相关文件的所有权,然后在正确的帐户下重新启动。


您的数据库可能继续尝试使用旧名称注册。如果lsnrctl services 没有显示XE 服务,在启动数据库或发出alter database register 之后,那可能是下一个问题。如果您通过 SQL*Plus 在本地登录(通过设置 ORACLE_SID,不使用 TNS 别名),您可以检查 show parameters listener 显示的内容,如果 LOCAL_LISTENER 指的是旧机器名,请将其更改为与新名称匹配。它也可能使用 TNS 别名作为侦听器,因此请确保您的 tnsnames.ora 也是最新的。或者它现在可以正常工作了。

【讨论】:

    【解决方案3】:

    https://youtu.be/zxyXlYgrzJc 的演练很好地解释了为什么会发生权限错误以及如何修复它。

    【讨论】:

    • 应该是评论吧?
    猜你喜欢
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2016-06-14
    • 2015-08-30
    • 1970-01-01
    相关资源
    最近更新 更多