一次oralce数据库启动不起来的解决过程

前两天,开发的oracle库连不上,连接数据库时候报:连接Oracle时报错ORA-12541: TNS: 无监听程序。

表面现象:windows服务管理中,service服务正常启动、listener服务也正常启动,但连接不上。


当时也没有在意,把所有oracleservice关了再启动试试,还是报连不上。由于上面存在多个sid,不是十分必要,手下小兄弟,一股脑给删掉了,orcl服务倒是能用了。但保留的另一个sid还是不行。他尝试网上的方法,重新建立了监听,修改了 dbhome_1\NETWORK\ADMIN下的listener.ora 和tnsnames.ora 也于事无补。


没办法,只能我来搞了,听了他的解决思路,我分析了下,还是要修改listener.ora 等文件,但不能像没头苍蝇一样去解决。重建了listener,在服务里看上去貌似是好的,可能存在问题我们不可知。于是我先查看listener状态:

lsnrctl  status

果然发现监听状态不正常,报错 ORA-12571 : TNS 包写入程序失败。

网上查了下解决方案:将/network/admin目录下sqlnet.ora 中“SQLNET.AUTHENTICATION_SERVICES=(NTS)”中的NTS改为NONE。

重启监听,再次用lsnrctl  status查看状态,发现已经不报tns之类的错误,但是也没有显示状态是正常的,而是指到了tnsnames.ora,类似于(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=“主机名”)(PORT=1521))) 这样的话上。显然这个配置有问题。

此时尝试用客户端连接数据库,报ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID。

利用以下语句查看hostname

select HOST_NAME from v$instance

发现tnsnames.ora配置中主机名多了域,比如查询主机名叫 dirful,配置里叫(PROTOCOL=TCP)(HOST=“dirful.xx.yy”)(PORT=1521))) ,也就是大家说的要么主机名不对,要么ip不对。进行了修改。

再次重启监听,查看状态

看到了如下类似的话:

服务 "TESTXDB" 包含 1 个实例。
  实例 "test", 状态 READY, 包含此服务的 1 个处理程序...
服务 "test" 包含 1 个实例。
  实例 "test", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orclXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功


经测试,数据库已经正常。


此次总结,对于数据库启动不起来的问题,先从查看监听状态入手。lsnrctl  status

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值