ORA
一个诡异的案例:ORA-12547: TNS:lost contact导致数据库无法启动,甚至sqlplus都无法登录,让我们一一来解开这个案例的真面目。
某客户出现数据库无法启动的情况,申请云和恩墨协助分析和处置。
云和恩墨工程师快速响应,组织相关人员进行故障诊断分析、指出故障原因,提出解决措施并处置,快速恢复了业务。
以下是详细的故障分析诊断过程,以及详细的解决方案描述。2.1. 故障现象
数据库无法启动,数据库监听状态异常。
发现数据库的asm实例也出现异常。2.2. 故障根源
去分析asm的alert日志
ASM实例异常。
Ora.asm的资源是offline状态。
尝试关闭has,然后重新启动has,再看看asm是否可以启动:
has启动失败,查看asm agent日志:
Asm启动过程中报InstConnection:connect:excp OCIException OCI error 12547之后启动失败。
我们发现sqlplus / as sysdba登录也会出现TNS 12547的报错
通过truss 去跟踪sqlplus:
发现在读写sqlnet.log 时候报错,怀疑是oracle本身有问题,查询metalink证实了这个想法:Troubleshooting ORA-12547 TNS: Lost Contact [ID 555565.1]。
然后尝试去relink。
relink的日志出现ksh: /dev/null: 0403-005 Cannot create the specified file.的报错。根据IBM官方文章:https://www.ibm.com/support/pages/file-access-permissions-do-not-allow-specified-action:
执行chmod 660 /dev/null,sqlplus / as sysdba不再显示ORA-12547: TNS:lost contact的错误。2.3. 故障处置
尝试重新启动has,ASM实例正常启动,但是数据库实例无法启动。
手工启动数据库。又出现CRS-5016: Process "/oracle/grid/bin/setasmgidwrap等错误:
解决办法:
执行sqlplus sys as sysdba登录。
执行startup,手动启动数据库
根本原因是由于/dev/null权限的问题,
解决办法:
原文阅读:https://www.modb.pro/db/26889?YYF
下一篇:oracle数据库中表误操作恢复(delete、truncate、drop)