主机名变动后不能启动Oracle DBConsole服务的处理

问题描述:
    在XP HOME上安装完ORACLE 10G后, oracledbconsoleorcl 服务起不来。ORACLE_SID=orcl。用
EMCLT  START DBCONSOLE命令报错如下:D:/oracle/product/10.1.0/db_1/oc4j/j2ee/OC4J_DBConsole_ACER-LEO.mshome.net_orcl   not found。

问题分析与解决:
         主机名为:ACER-LEO.mshome.net,PING主机IP地址显示192.168.0.219。查看%ORACLE_HOME%目录,发现确实不存在D:/oracle/product/10.1.0/db_1/oc4j/j2ee/OC4J_DBConsole_ACER-LEO.mshome.net_orcl。只存在D:/oracle/product/10.1.0/Db_1/192.168.0.219_orcl和D:/oracle/product/10.1.0/Db_1/oc4j/j2ee/OC4J_DBConsole_192.168.0.219_orcl。查看其它机子上装的ORACLE,发现其它机子用的是主机名而不是IP地址,如:D:/oracle/product/10.1.0/Db_1/FJTA-PC203_orcl和D:/oracle/product/10.1.0/Db_1/oc4j/j2ee/OC4J_DBConsole_FJTA-PC203_orcl。可见问题在于ACER-LEO.mshome.net与192.168.0.219的对应上。
    经查该服务启动时执行了D:/oracle/product/10.1.0/db_1/BIN/EmctlCommon.pm文件,其中用到getLocalHostName函数生成主机名。本问题取巧的解决办法是让该函数返回值为IP址“192.168.0.219”,如此oracledbconsoleorcl服务就会去寻找D:/oracle/product/10.1.0/db_1/oc4j/j2ee/OC4J_DBConsole_192.168.0.219_orcl而不是D:/oracle/product/10.1.0/db_1/oc4j/j2ee/OC4J_DBConsole_ACER-LEO.mshome.net_orcl。

getLocalHostName函数修改如下:
sub getLocalHostName
{
  my $localHost;

  if(defined($ENV{EMHOSTNAME}))
  {
    $localHost = $ENV{EMHOSTNAME};
  }
  else
  {
    my $localHostCmd;
    $localHostCmd = "$JAVA_HOME/bin/java ".
                    "-jar $ORACLE_HOME/jlib/emConfigInstall.jar ".
                    "getlocalhost";

    $localHost = `$localHostCmd`;

    $localHost=~ s/^/s+|/s+$//;
  }

  #add here
 $localHost='192.168.0.219';
  return $localHost;
}

结论:
WINDOWS下ORACLE安装时使用主机名建立相应的目录,有时候甚至用的是IP地址。如果机器名修改了或者其它原因导致目录名与实际情况不一致,也就找不到服务文件所在目录,所以会出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值