在公司安装完数据库后,EM可以正常访问,把电脑带回家EM就不能访问了。这很正常。你要是没遇到过,一定要试一次。
原因很简单,IP地址变了。要做的修改也很少。看下面的例子:
C:\Users\wj>emctl status
Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.
C:\Users\wj>set ORACLE_UNQNAME=orcl
C:\Users\wj>emctl status
EM Configuration issue. D:\app\wj\product\11.2.0\dbhome_1/10.176.73.98_orcl not found.
C:\Users\wj>set ORACLE_HOSTNAME=localhost
C:\Users\wj>emctl status
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
Oracle Enterprise Manager 10g Database Control commands:
emctl start | stop dbconsole
emctl status | secure | setpasswd dbconsole
想显示EM的状态(命令是emctl status dbconsole,汗),结果显示ORACLE_UNQNAME没有设置,这是EM启动时需要读的一个环境变量。在数据库中查到ORACLE_UNQNAME是orcl,设置后再执行一次,结果显示EM Configuration issue. D:\app\wj\product\11.2.0\dbhome_1/10.176.73.98_orcl not found ,找不到10.176.73.98_orcl这个文件(或文件夹).
打开ORACLE的主目录,发现有一个localhost_orcl,这个就是EM的配置文件所在的文件夹.再看10.176.73.98这个IP,就是当前的IP.EM在启动的时候是按照IP来读控配置文件的,所以会找10.176.73.98_orcl之个文件夹,但是却找不到,因为这个文件夹叫localhost_orcl.为什么要按IP来读配置文件?我猜是因为在RAC中,EM是按IP来存配置文件的,由于没有RAC的数据库,等以后有了再来验证.
设置ORACLE_HOSTNAME=localhost就能解决这个问题,这样就能找到配置文件.如果在命令台输入emca,也会提示这个问题:
Note: For Desktop Class Install always pass parameter ORACLE_HOSTNAME
as "localhost" to any emca command
在桌面类中,设置ORACLE_HOSTNAME=localhost
现在来启动EM
C:\Users\wj>emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved.
https://localhost:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ...OracleDBConsoleorcl 服务正在启动 ...............
OracleDBConsoleorcl 服务已经启动成功。
EM启动成功.
当然了,每次启动EM都要设置是十分麻烦的事,写个bat来启动吧
net start oracleserviceorcl
lsnrctl start
set ORACLE_UNQNAME=orcl
set ORACLE_HOSTNAME=localhost
emctl start dbconsole
这样启动数据库\监听\EM一次到位,省时省心~