听众无法启动

时间:2013-08-18 15:08:38

标签: database linux oracle listener virtual-machine

我在VMWare Player上有一个虚拟机:Linux Centos上的Oracle 11g。 由于我已经两年没有使用它,我几乎没有记住任何东西,当我尝试启动数据库时,它表示监听器已关闭,当我尝试启动监听器时,它说:

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

我需要准确配置什么?提前谢谢。

编辑:

netstat -tulpn | grep:1521

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

编辑:

lsnrctl status

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

sqlplus / as sysdba

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

1 个答案:

答案 0 :(得分:1)

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等。