database - 监听器启动失败

标签 database linux oracle listener virtual-machine

我在 VMWare Player 上有一个虚拟机:Linux Centos 上的 Oracle 11g。 因为我已经 2 年没有使用它了,所以我几乎什么都不记得了,当我尝试启动数据库时,它说监听器已关闭,当我尝试启动监听器时,它说:

TNSLSNR for Linux Version 11.2. 0.1.0 - Production
System Parameter file is /oracle/product/11gR2/network/admin/listener.ora
Log messages written to /oracle/diag/tnslsnr/srvlinux/listener/alert/log.xml
Error listening on: (ADRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12542: TNS:address already in use
 TNS-12560: TNS:protocol adater error
  TNS-00512: Address already in use
   Linux Error: 98: Address already in use

我必须准确配置什么?提前致谢。

编辑:

网络统计-tulpn | grep:1521

tcp 0 0 :::1521 :::* LIST 
EN 3369/tnslsnr

编辑:

lsnrctl状态

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 11-DEC-2012 16:09:54

sqlplus/作为 sysdba

ERROR:
ORA-12162: TNS:net service name is incorrectly specified

最佳答案

ORA-12162 通常意味着您没有设置 ORACLE_SID - 并不是说​​它错了,而是根本没有设置,或者还没有导出(取决于您的 shell)。这不会告诉您有关数据库是否已启动的任何信息,也不意味着监听器已关闭 - 因此不知道您是否从不同的连接尝试中收到了不同的消息。从您添加到问题的详细信息来看,很明显监听器在端口 1521 上。

如果您使用的是 Bourne-y(sh、ksh、bash 等),您需要设置并导出您的 ORACLE_SID:

export ORACLE_SID=my_sid

如果你不记得 SID 你可以去 grep -ef | grep ora_pmon_;如果显示任何内容,则 SID 是进程名称的末尾,并且数据库已启动。如果没有,则查看 lsnrctl status 的输出并查看是否已注册任何内容,或者查看 $ORACLE_HOME/dbs - 那里的文件可能包含 SID他们的名字也是。

如果您还没有,您可能还需要export ORACLE_HOME,但听起来您已经完成了,可能来自您的.profile/.bashrc

关于database - 监听器启动失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300464/

相关文章:

database - 如何找出不同数据库中的两个表之间的差异

java - 如何在共享数据库中存储java应用程序指标

python - 从 python 子进程运行 linux grep 命令

sql - 当触发器未发现任何错误时继续存储过程

MySQL-基于多列输出 "other"列

php - 注册页面: Storing password using PHPASS

linux - 静态链接的 gcc

java - 尝试访问服务时获取 "ConnectException"

oracle - 命令 : "GRANT EXECUTE ON USERNAME.PKG.PROCEDURE TO OTHERUSER;" 的语法错误

java - 如何从 Java 中的 SQL*Plus 以 "SYS"连接到 Oracle