解决ORACLE的EM登录 这几天解决了EM无法登录的问题,顺便也把j数据库程序中常出现的ORA_12518错误解决了,有必要总结一下,我最初遇到的情况是这样的:
1. 编写java程序访问oracle 数据库时总是出现了ORA_12518错误:监听程序无法分发客户机连接。以为是监听程序没启动,检查lsnrctl status,没有发现异常。
2. web方式下访问EM,输入网址后,无法打开网页。
解决步骤:
1. 先打开管理工具》服务,查看dbconsole有没有启动或者在cmd下使用emctl status dbconsole查看,如果dbconsole没有启动的话,是无法在web方式下访问em的。
2. 使用emctl start dbconsole命令启动,出现了错误(orcle_sid not found),我使用emca -x <数据库实例> 命令进行删除,然后使用emca -r 命令重新建立档案资料库。
3. 档案资料库在重建的时候要注意,这是个交互式命令,会提示你输入数据库名和服务名,这个服务名一定得输入完整的服务名,带域名的(我的是com.czmyhome.taylor),要保证输入的服务名是和在sqlplus下show parameter service_name命令返回值具有相同的名字。但是我当时没有输入完整的服务名。
4. 使用emctl start dbconsole 启动, 然后在web下访问em,这次打开了网页,但是显示的是数据库处于没有启动的状态, 点击启动按钮后,要求输入OS的用户名、密码及数据库的用户名及密码,我输入后,网页显示密码错误。我确定自己输入的密码和用户名正确,通过网上查找资料:在windows 下进入 管理工具》本地安全策略》本地策略》用户指派权利下, 将OS用户添加作为批处理作业登录项。
5, 再次在WEB方式下访问EM,再次输入OS和数据库的用户名密码,这次进入成功,但出现ORA_12514错误。 这个错误的根本原因就是刚才建立资料档案库的时候输入的服务名不正确,怎么改呢?在<oracle 安装目录>/主机名_OracleSID/sysman/cofig路径下找到emoms.properities文件,修改oracle.sysman.eml.mntr.emdRepConnectDescripton项的service_name为完整服务名。
6. 再次在WEB方式下访问EM,再次输入OS和数据库的用户名密码,这次出现ORA_12518错误,晕晕!真是冤家路窄啊。通过在listener.ora文件中添加DIRECT_HANDOFF_TTC_LISTENER = OFF 然后重新启动dbconsole,再次在WEB方式下访问EM,再次输入OS和数据库的用户名密码后,登录成功。
7. 回来看看那个数据库访问程序,运行正常。
总结EM登录的问题,有下面几点比较重要:
1. 确保DBCONSOLE是已启动的,监听程序也是启动的
2. 确保所使用的服务名是完整的服务名
3. 在listener.ora文件中添加DIRECT_HANDOFF_TTC_LISTENER = OFF, 绝大多数情况下ORA_12518错误就是缺少这句,网上也有很多人说是SGA分配问题、或是PROCESS个数、或是64位操作系统问题,但我碰到的情况并非如此。
<PS:本文引用自 http://hi.baidu.com/tayo2000/blog/item/3c1f02518b9fe710367abef0.html>