我在虚拟机中启动数据库。在开始的时候启动监听,发现监听起不来。报错说是地址被占用。当时没有明白是怎么回事,搞了一会儿发现问题了。现在把解决方法分享一下。
启动监听:
[root@ENMOEDU ~]# su - oracle
[oracle@ENMOEDU ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.3.0 -Production on 24-SEP-2015 21:29:23
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Starting/u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.3.0 -Production
System parameter file is/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to/u01/app/oracle/diag/tnslsnr/ENMOEDU/listener/alert/log.xml
Error listening on:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ENMOEDU)(PORT=1521)))
TNS-12542: TNS:address already in use
TNS-12560: TNS:protocol adapter error
TNS-00512: Address already in use
Linux Error: 98: Address already in use
Listener failed to start. See the errormessage(s) above...
看到报错信息我当时就蒙圈了。
查看端口信息,发现并没有啊。
可用[netstat]命令,也可以这样:
然后我想到,我做过虚拟机快照恢复。我又重新查看了一下/etc/hosts .发现,里面的IP地址与我的主机地址不匹配,赶紧改了过来。重新试一下,ok,解决了。
幸好是单实例……如果要是RAC,那我不就炸了,出些莫名的错误。
最后想想也真是醉了。