最近在学oracle数据库。来回安装了两回,都没完全搞定。最后装的这一次,安装完成后,发现“服务”里没有DBConsole这一个服务。网上资料“指示”,我需要重新建一个EM。可通过dbca或ecma等两种方式来新建一个EM。在创建em的时候,也是困难重重。使用dbca方式来创建的时候,系统提示“无监听程序”。看过网上的很多资料,写得都不是很清楚(即按照上面的方法没有解决我的问题)。最后,终于找到一种有指导意义的解决方法——使用net manager重新配置服务和监听程序。按照这篇博文(传送门:Oracle 数据库监听配置),果然解决了“无监听程序”的问题。使用手动方式来创建的时候,提示失败,原因是“对象已存在”。也是找到一篇写得很清楚详细的博文,才解决了这个“对象已存在”的问题。解决了“对象已存在”的问题后,手动创建EM的问题终于与使用dbca方式创建EM的问题同一了:“无监听程序”。到此,问题得以完整解决!因为使用dbca来创建EM比较傻瓜,所以只在本文中以介绍的篇幅介绍一下。博文的重点放在了使用手动方式创建EM的博文。原博文见:http://www.cnblogs.com/skey_chen/archive/2011/12/20/2294751.html
一、第一种方法,用dbca配置em,也是最简单的方法。
在命令提示符下输入dbca,出现"Database Configuration Assistant 欢迎使用"界面,点下一步,选择配置数据库,在点下一部,选择要配制em的数据库,然后在点下一步,把"使用Enterprise Manager配置数据库"选项打上钩,因为是配制单实例的,所以选择"使用Database Control管理数据",下面两个选项启用电子邮件通知和启用每日备份根据自己情况选择,在点一下部,把"Enterprise anager 资料档案库"也选择起来,否则不能使用em,在点下一步,然后提示需要设置DBSNMP和SYSMAN两个用户设置口令,根据自己情况来设置是否口令设置成一样,还是分开设置。
再点一下步,再点完成,就出现配制数据库提示信息框,等配制完成就退出dbca,完成数据库em配制。
优点:使用这种方法简单,方便,也不容易配置错误,不需要记注复杂命令,一般配制都能成功。
缺点:在不能使用dbca环境当中就不能使用了,在Linux下工手创建数据库是不能用dbca配制,dbca也不能删除em
资料库存和取消Database Control配制。
二、使用ecma来创建一个新的EM
1、不管什么情况,在doc命令提示符下执行(如果服务里的control还在,停了它,不过估计根本启不来)
emca -repos drop
好吧,虽然说网上靠不住,不过这也是在网上学来的。
2、进sql命令提示符
等等,怎么进sql命令提示符?额,也顺便写一下吧,以前数据库跑不起来时,上网找资料重建spfile也说在命令提示符下干嘛干嘛,可怜我数据库都进不了,都不知哪输sql去,那个郁闷……
在cmd下,输入
sqlplus /nolog
嘿嘿,进来了吧,再输入
conn / as sysdba
呼,大功告成(汗,就输了几个字母)
3、在sql命令提示符下分别输入以下四条sql语句,查出所有以MGMT_、SMP_、EMD_、ECM_开始的同义词,并将其保存下来
在sql命令提示符下执行
select 'drop public synonym '|| synonym_name || ';' from all_synonyms where synonym_name like 'MGMT_%';
select 'drop public synonym '|| synonym_name || ';' from all_synonyms where synonym_name like 'SMP_%';
select 'drop public synonym '|| synonym_name || ';' from all_synonyms where synonym_name like 'EMD_%';
select 'drop public synonym '|| synonym_name || ';' from all_synonyms where synonym_name like 'ECM_%';
好人做到底吧,因为sql出来太多,cmd窗口放不下?点左上角的图标,选默认值,可以出来修改的配置(主要修改缓冲区的高),不过这里需要重新打开cmd窗口。
现在才说,哈哈,故意的,重新打开cmd窗口,再输入一次命令吧,多写几次下次才记得。
4、删除有关的数据和配置(N条drop命令)
在sql命令提示符下执行
drop user sysman cascade;
drop role MGMT_USER;
drop user MGMT_VIEW cascade;
drop user MGMT_AVAILABILITY cascade;
……N条drop public synonym命令,上一步查出来的所有sql,打开一个记事本,把全部sql复制上去,直接粘贴到窗口里就可以了。
5、最后一步了,听天由命吧,估计,也许,嗯,应该是可以的。(不行的话,看看日志,再处理一下)
这里有个前提,就是监听器配置必须配置好能访问你的数据库(如在plsql中能访问数据库),在命令里也会有相应提示,11g下还会提示你输入监听程序,但可以直接回车不输入。
在doc命令提示符下
emca -config dbcontrol db -repos create
或
emca -repos create
emca -config dbcontrol db
上帝保佑你,成功吧。
最好再好人一次,把里面的sql打个包上来吧。