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。本人亲自万为你解决问题。

 

posted @ 2011-03-12 12:20  Java EE  阅读(700)  评论(0编辑  收藏  举报