您的位置:首页 > 数据库 > Oracle

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

2007-03-09 12:06 465 查看
问题描述:
在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地址。如果机器名修改了或者其它原因导致目录名与实际情况不一致,也就找不到服务文件所在目录,所以会出错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: