我在 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/