墨墨导读:一个诡异的案例:ORA-12547: TNS:lost contact导致数据库无法启动,甚至sqlplus都无法登录,让我们一一来解开这个案例的真面目。

1. 背景概述

某客户出现数据库无法启动的情况,申请云和恩墨协助分析和处置。

云和恩墨工程师快速响应,组织相关人员进行故障诊断分析、指出故障原因,提出解决措施并处置,快速恢复了业务。

以下是详细的故障分析诊断过程,以及详细的解决方案描述。

2. 故障分析

2.1. 故障现象

数据库无法启动,数据库监听状态异常。

Thu Apr 30 15:40:20 2020NOTE: ASMB terminatingErrors in file /oracle/app/oracle/diag/rdbms/****/****/trace/****_asmb_8258020.trc:ORA-15064: communication failure with ASM instanceORA-03113: end-of-file on communication channelProcess ID:Session ID: 595 Serial number: 9Errors in file /oracle/app/oracle/diag/rdbms/****/****/trace/****_asmb_8258020.trc:ORA-15064: communication failure with ASM instanceORA-03113: end-of-file on communication channelProcess ID:Session ID: 595 Serial number: 9ASMB (ospid: 8258020): terminating the instance due to error 15064Thu Apr 30 15:40:20 2020System state dump requested by (instance=1, osid=8258020 (ASMB)), summary=[abnormal instance termination].System State dumped to trace file /oracle/app/oracle/diag/rdbms/****/****/trace/****_diag_8389092_20200430154020.trcDumping diagnostic data in directory=[cdmp_20200430154020], requested by (instance=1, osid=8258020 (ASMB)), summary=[abnormal instance termination].Instance terminated by ASMB, pid = 8258020

发现数据库的asm实例也出现异常。

2.2. 故障根源

去分析asm的alert日志

SQL> ALTER DISKGROUP DATA DISMOUNT  /* asm agent *//* {0:0:49022} */Thu Apr 30 15:40:19 2020Errors in file /oracle/app/oracle/diag/asm/+asm/+ASM/trace/+ASM_gmon_7405636.trc:ORA-29746: Cluster Synchronization Service is being shut down.GMON (ospid: 7405636): terminating the instance due to error 29746Thu Apr 30 15:40:20 2020System state dump requested by (instance=1, osid=7405636 (GMON)), summary=[abnormal instance termination].System State dumped to trace file /oracle/app/oracle/diag/asm/+asm/+ASM/trace/+ASM_diag_7406038_20200430154020.trcDumping diagnostic data in directory=[cdmp_20200430154020], requested by (instance=1, osid=7405636 (GMON)), summary=[abnormal instance termination].Instance terminated by GMON, pid = 7405636

ASM实例异常。

Ora.asm的资源是offline状态。

尝试关闭has,然后重新启动has,再看看asm是否可以启动

#/oracle/grid/bin/crsctl start hasCould not send msg exec /oracle/grid/perl/bin/perl -I/oracle/grid/perl/lib /oracle/grid/bin/crswrapexece.pl /oracle/grid/crs/install/s_crsconfig_***_env.txt /oracle/grid/bin/ohasd.bin "reboot" .Please retry 2020-05-02 11:16:25Changing directory to /oracle/grid/log/***/ohasd

has启动失败,查看asm agent日志

2020-05-02 11:18:57.898: [ora.asm][3343]{0:0:2} [clean] InstAgent::stop: connect2 oracleHome /oracle/grid oracleSid +ASM2020-05-02 11:18:57.898: [ora.asm][3343]{0:0:2} [clean] InstConnection::connectInt: server not attached2020-05-02 11:18:57.936: [ora.asm][3343]{0:0:2} [clean] ORA-12547: TNS:lost contact
2020-05-02 11:18:57.936: [ora.asm][3343]{0:0:2} [clean] InstConnection::connectInt (1) Exception OCIException2020-05-02 11:18:57.936: [ora.asm][3343]{0:0:2} [clean] InstConnection:connect:excp OCIException OCI error 125472020-05-02 11:18:57.937: [ora.asm][3343]{0:0:2} [clean] InstConnection::connectInt: server not attached2020-05-02 11:18:57.975: [ora.asm][3343]{0:0:2} [clean] ORA-12547: TNS:lost contact
2020-05-02 11:18:57.975: [ora.asm][3343]{0:0:2} [clean] InstConnection::connectInt (1) Exception OCIException2020-05-02 11:18:57.975: [ora.asm][3343]{0:0:2} [clean] InstAgent::stop: connect2 errcode 125472020-05-02 11:18:57.976: [ora.asm][3343]{0:0:2} [clean] clsnUtils::error Exception type=2 string=ORA-12547: TNS:lost contact
2020-05-02 11:18:57.976: [    AGFW][3343]{0:0:2} sending status msg [ORA-12547: TNS:lost contact] for clean for resource: ora.asm **** 12020-05-02 11:18:57.976: [ora.asm][3343]{0:0:2} [clean] ConnectionPool::removeConnection connection count 12020-05-02 11:18:57.976: [ora.asm][3343]{0:0:2} [clean] ConnectionPool::removeConnection sid  +ASM, InstConnection 11471d302020-05-02 11:18:57.976: [ USRTHRD][3343]{0:0:2} InstConnection::breakCall pConnxn:11471d30  DetachLock:1059c2f0 m_pSvcH:000000002020-05-02 11:18:57.976: [ USRTHRD][3343]{0:0:2} InstConnection:~InstConnection: this 11471d30

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等错误

020-05-02 13:25:00.251: [ora.****.db][1800]{0:0:2} [start] InstConnection::connectInt (2) Exception OCIException2020-05-02 13:25:00.251: [ora.****.db][1800]{0:0:2} [start] InstConnection:connect:excp OCIException OCI error 10342020-05-02 13:25:00.251: [ora.****.db][1800]{0:0:2} [start] InstAgent::stop: connect1 errcode 10342020-05-02 13:25:00.251: [ora.****.db][1800]{0:0:2} [start] InstAgent::stop: connect2 oracleHome /oracle/app/oracle/product/11.2.0/dbhome_1 oracleSid ****2020-05-02 13:25:00.251: [ora.****.db][1800]{0:0:2} [start] InstConnection::connectInt: server not attached2020-05-02 13:25:00.319: [ora.****.db][1800]{0:0:2} [start] ORA-01017: invalid username/password; logon denied
2020-05-02 13:25:00.319: [ora.****.db][1800]{0:0:2} [start] InstConnection::connectInt (2) Exception OCIException2020-05-02 13:25:00.319: [ora.****.db][1800]{0:0:2} [start] InstConnection:connect:excp OCIException OCI error 10172020-05-02 13:25:00.319: [ora.****.db][1800]{0:0:2} [start] InstAgent::stop: connect2 errcode 10172020-05-02 13:25:00.319: [ora.****.db][1800]{0:0:2} [start] clsnUtils::error Exception type=2 string=ORA-01017: invalid username/password; logon denied
2020-05-02 13:25:00.319: [    AGFW][1800]{0:0:2} sending status msg [ORA-01017: invalid username/password; logon denied] for start for resource: ora.****.db 1 1

看来问题是ORA-01017: invalid username/password; logon denied

手工执行sqlplus / as sysdba也出现这样的报错

解决办法:

执行sqlplus sys as sysdba登录。执行startup,手动启动数据库

3. 根本解决方案及建议

根本原因是由于/dev/null权限的问题

解决办法:

chmod 660  /dev/null

墨天轮原文链接:https://www.modb.pro/db/26889(复制到浏览器中打开或者点击“阅读原文”)

推荐阅读:144页!分享珍藏已久的数据库技术年刊

数据和云

ID:OraNews

如有收获,请划至底部,点击“在看”,谢谢!

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

ORA-12547: TNS:lost contact导致数据库无法启动相关推荐

  1. 又一例SPFILE设置错误导致数据库无法启动

    --======================================== --又一例SPFILE设置错误导致数据库无法启动 --============================== ...

  2. oracle access表丢失,oracle 11.1.0.7-版本也会出现access$表丢失导致数据库无法启动

    oracle 11.1.0.7-版本也会出现access$表丢失导致数据库无法启动 发布时间:2017-06-23 20:10 来源:互联网 当前栏目:web技术类 下面我们来看看oracle 11. ...

  3. PostgreSQL 内存OOM控制策略导致数据库无法启动的诊断一例(如何有效避免oom)

    你可能遇到过类似的数据库无法启动的问题, postgres@digoal-> FATAL: XX000: could not map anonymous shared memory: Canno ...

  4. Oracle数据文件scn不一致,控制文件与数据文件头SCN不一致导致数据库无法启动故障处理...

    环境说明 OS操作系统:WINDOWS 2012 64位 数据库版 本:ORACLE 11.2.0.1 故障问题描述 客户反映数据库无法启动,报ORA-01589:要打开数据库必须使用RESETLOG ...

  5. oracle启动包找不到数据文件,ORA-01078,LRM-00109参数文件问题,导致数据库无法启动...

    在oracle9i和oracle10g中,数据库默认将使用spfile启动数据库,如果spfile不存在,并且找不到静态参数文件或环境变量设置错误,则就会出现ORA-01078和LRM-00109错误 ...

  6. 缺少控制文件导致数据库无法启动

    在本人近期工作中,遇到了数据库无法正常启动的问题,以下是我对问题的整理和总结. 问题描述 1.启动数据库,报错 ORA-00205: error in identifying control file ...

  7. oracle闪回区满了,一次快速闪回区满导致数据库不能启动的解决过程

    一.事件背景描述:一个测试系统的数据库由于磁盘空间满了,清理了磁盘空间的,等待很久系统没有相应,因此通过shutdown immediate命令重新启动数据库,但是数据库一直关闭不了,所以通过shut ...

  8. ORA-01109:数据库无法启动问题

    2010年9月9日 16:57:16        数据库无法启动问题 登录数据库时提示:ORA-12514: TNS: 监听程序当前无法识别连接描述符中 解决办法: 然后远程登录数据库服务器(aix ...

  9. oracle rac ora 12547,oracle11g RAC 下DBCA建库失败:ORA-12547: TNS:lost contact

    sqlplus / as sysdba敲回车,也是报ORA-12547: TNS:lost contact 追踪错误 /u01/app/oracle/product/11.2.0/db_1/rdbms ...

最新文章

  1. VTK:PolyData之TransformFilter
  2. LightOJ-1220 Mysterious Bacteria (素数打表+欧几里得算法+唯一分解定理)给出x,求x=a^p,最大的指数
  3. nginx -- 安装配置Nginx
  4. 浙江师范大学c语言函数实验答案,浙江师范大学《C语言程序设计》考试卷
  5. NumPy——生成随机数的学习笔记~
  6. Linux安装SQLite轻量级数据库
  7. 近世代数——Part2 群:基础与子群 课后习题
  8. 宝德银河麒麟系统打印机安装及共享方法(一)
  9. 电磁兼容入门篇之基础知识(二)
  10. python获取阿里巴巴国际站商家信息
  11. Java实现一个学生类Student
  12. ubuntu切换python版本解决语法不匹配问题(SyntaxError: invalid syntax)
  13. Python每日一练-----三点共线问题
  14. EveryDay-Shell之ifconfig输出详解“——netspeed.sh网速监控脚本
  15. 未明学院:量化金融训练营开始报名,成为兼具数据分析技能+项目实战经验的复合型人才!
  16. Delphi Web前端开发教程(9):基于TMS WEB Core框架
  17. numpy计算移动平均值
  18. Laya商业级3d实战-06用户输入_u3dApi集成
  19. 【JokerのKintex7325】SDK程序从QSPI启动过慢分析。
  20. STC8H8K64U单片机-看门狗配置与讲解

热门文章

  1. devops 文化_DevOps之外的无责文化示例
  2. Git成立14周年快乐:您对Git钟爱什么?
  3. 会议指南二维码生成_包装和准备技术会议的指南
  4. 开源 free的理解_如何理解任何开源混乱
  5. linux devops_DevOps原则与学生Linux程序产生共鸣
  6. 十年 | 在Java开发做了10年后,才学会此绝招,用于颠覆Java应用
  7. Bootstrap3 的新特性
  8. ajax get 不会缓存,ajax的get请求时缓存处理解决方法
  9. pip 安装 scipy 出现错 no lapack/blas resources
  10. 紫金计算机网络,南京理工大学紫金学院《计算机网络技术》考试复习试题试题[含答案解析]...