Oracle无法登陆EM问题解决方案
说起oracle,每个oracle DBA都是很头疼的,为什么?oracle软件本身就是很大的,动不动就是这里出问题,要么就是那里出问题了,总之,就是各种问题。小弟我在oracle这个领域还是新手了,没有任何经验,在自己的本子上玩玩oracle了。花了重金买了本《Oracle DBA宝典》这本书,从头开始学习oracle。呵呵,我是下了决心的。
问题是说来就来,今天准备打开Em,管理一下数据库。无法进入,反正就是无法进入。错误提示如下:
手工启动:emctl start dbconsole
Environment variable ORACLE_SID not defined. Please define it.
当执行set OARCLE_SID=orcl,继续报错
Unable to determine local host from URL REPOSITORY_URL=http://localhost:%EM_UPLOAD_PORT%/em/upload/
于是乎,我有着一股劲,一定要把这个整明白了。如果,你也有这个问题,看我的这篇博文,那就找对人了。
在你创建数据库的时候,如果出错了,到最后弹出一个对话框,那你就要按照对话框的内容运行一个bat文件,那个文件的路径它指定了。因为我现在懂了,这个问题,我才写的这篇博文。呵呵。
找到listener.ora打开。
# listener.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = vipygd)
(ORACLE_HOME = d:/oracle/product/10.2.0/db_1)
(SID_NAME = vipygd)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = WWW-0328DD44B9B)(PORT = 1521))
)
)
该成这样子的,为什么?你会发现,我把host字段的改了,以前是localhost而我现在改成了我的主机名,同时,你也可以改成你的主机名,为什么这么改。如果你的Ip是改变的,那么你的em就可能登陆不上去。其中的缘由就更多了,那是我不懂的。你会想,localhost不是固定的127.0.0.1吗,我也是这么想的,它应该是不会变的,我也想是这样的。但是,oracle就是这么抽风,你改成你的主机名,就万无一失了。同时也要把tnsnames.ora中的host字段也改成一样的。刚刚说了,如果你在创建数据库的最后弹出了一个对话框的话,你会发现在你的这个文件夹下是少文件的D:/oracle/product/10.2.0/db_1/oc4j/j2ee。当然了,我是安装在D盘的。少什么文件呢?安装正确的话是有7个文件的,如果你安装错误的话最多有6个文件,此时,你就需要运行我说的那个错误提示下的文件了。
OC4J_DBConsole_10.32.60.41_vipygd
OC4J_DBConsole_WWW-0328DD44B9B_vipygd
这是两个重要的文件夹的名字,当然了,我的sid是vipygd了。你会发现,有一个是包含IP地址的,有一个是包含主机名的。这就对了,当你登录不上em的时候。
即使你set oracle_sid=XXX的时候,再emctl start dbconsole的时候,还是错的,根据错误提示,你会发现,它会指定这个文件下没有上面两个文件其中的一个,就是说缺少一个文件了。如果你运行了错误提示的文件,那么这两个文件就不会缺了。
当然了,你也可以删除一个EM配置,然后重新配置一个,但是如果就是你配置了,它还是可能会抽风的出错的,注意,我这里说的是可能,说明它也可能不会了,但是这种方法不是万全之策,你想,如果哪天你的IP又变了,那是多么该死的一件事情了,难道每次你都要重新配置吗?貌似很麻烦的。好了,你就只用改变listener.ora文件就ok了。
为了大家方便,鄙人再把em的命令组贴出了,以便大家参考:
创建一个EM资料库
emca -repos create
重建一个EM资料库
emca -repos recreate
删除一个EM资料库
emca -repos drop
配置数据库的 Database Control
emca -config dbcontrol db
删除数据库的 Database Control配置
emca -deconfig dbcontrol db
重新配置db control的端口,默认端口在1158
emca -reconfig ports
emca -reconfig ports -dbcontrol_http_port 1160
emca -reconfig ports -agent_port 3940
先设置ORACLE_SID环境变量后,启动EM console服务
emctl start dbconsole
先设置ORACLE_SID环境变量后,停止EM console服务
emctl stop dbconsole
先设置ORACLE_SID环境变量后,查看EM console服务的状态
emctl status dbconsole
配置dbconsole的步骤
emca -repos create
emca -config dbcontrol db
emctl start dbconsole
重新配置dbconsole的步骤
emca -repos drop
emca -repos create
emca -config dbcontrol db
emctl start dbconsole
好了,现在貌似是说清楚了,如果,还是不行,加我QQ:535064959。本人亲自万为你解决问题。