我在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
答案 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
等。