> Linux故障 >

Linux下监听程序TNS-12543错误解决方法

遇到的问题:安装虚拟机Vmware之后,打开系统项目虚拟机,经过以下处理步骤

  1) root (123456)

  2)启动Oracle

  2.1 su - oracle (oracle)

  2.2 lsnrctl start --启动Listener

  2.3 sqlplus / as sysdba

  2.4 startup

  2.5 exit

  3)启动JBOSS

  3.1 su - portal (portal)

  3.2 cd Jboss/bin

  3.3 ./startup.sh

  在处理 lsnrctl start 启动监听器的时候,控制台抛出以下错误信息:

  LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 15-10??-2010 12:32:19

  Copyright (c) 1991, 2005, Oracle. All rights reserved.

  Starting /home/oracle/10.2.0/db_1/bin/tnslsnr: please wait...

  TNSLSNR for Linux: Version 10.2.0.1.0 - Production

  System parameter file is /home/oracle/10.2.0/db_1/network/admin/listener.ora

  Log messages written to /home/oracle/10.2.0/db_1/network/log/listener.log

  Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=cmms)(PORT=1521)))

  Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

  TNS-12543: TNS:destination host unreachable

  TNS-12560: TNS:protocol adapter error

  TNS-00513: Destination host unreachable

  Linux Error: 101: Network is unreachable

  处理过程:

  Oracle 的 listener.ora 文件里面HOST后面应该输入IP地址还是主机名呢?最好使用主机名。很多时候,一个机器绑定的不止一个IP地址,如果HOST后面是IP地址,那么Oracle的Listener只会监听指定的IP地址的访问请求,本机其他的IP地址的连接都会拒绝的。当创建监听的时候,listener.ora 文件里面默认创建的是主机名。那么,企业、邮局,如果没有特别的需要,如果没有特别的需要就不要画蛇添足的去修改host_name为IP地址了。但是,如果HOST后面是主机名,那么就会与/etc/hosts 这个文件扯上关系了。

  第一种情况:/etc/hosts文件oracle没有权限访问

  在etc下打开终端

  [root@localhost etc]# l hosts

  这时候oracle用户去启动listener,

  [oracle@localhost admin]$ lsnrctl start

  [oracle@localhost admin]$ lsnrctl start

  第二种情况,就是现在遇到的情况是:2、/etc/hosts文件里面的主机名对应的IP地址没有在本机绑定

  查看本机/etc/hosts文件里面主机定义的IP信息,用以下命令

  [root@localhost etc]# cat /etc/hosts

  查找本机的IP地址有没有指定的IP,用以下命令

  [root@localhost etc]# ifconfig|grep xxxx.xxxx.xxxx.xxxx

  现在问题明朗了,通过cat /etc/hosts命令查看etc/hosts文件中主机对应的ip为192.168.238.128

  但是我安装虚拟机的时候,virtual network editor (虚拟网络编辑器)中类型为Host-only的VMnet1 定义的子网IP为192.168.89.0,与192.168.238.128中的网段有冲突,

  因此更改为192.168.89.128,问题解决。

  因此当吧虚拟机中的项目拷贝到另一个电脑中时,由于虚拟机的安装环境更改需要更改以下虚拟网络IP

(责任编辑:IT)