如果您想继续以 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 也是最新的。或者它现在可以正常工作了。