记一次远程协助的排错案例-阿里云开发者社区

开发者社区> jeanron100> 正文

记一次远程协助的排错案例

简介: 前几天的时候帮助一个网友看了他遇到的一个问题,在问题处理中也让我有不少的感悟。 最开始的时候这位网友的问题是一个10gR2的单实例数据库,监听无法正常关闭和启动,他在尝试了杀进程之后,重新启动还是会一直卡在那里。
+关注继续查看
前几天的时候帮助一个网友看了他遇到的一个问题,在问题处理中也让我有不少的感悟。
最开始的时候这位网友的问题是一个10gR2的单实例数据库,监听无法正常关闭和启动,他在尝试了杀进程之后,重新启动还是会一直卡在那里。

看到这个地方,感觉是一个新环境,看来是网络哪里出现了问题,要么就是配置出现了问题。
在这种情况,配置情况很难一一去确认猜测,所以我就问他能否远程协助,很快就连了过去。
当他打开/etc/hosts文件的时候,感觉里面的配置信息似乎有些过于简单了,里面只有localhost和127.0.0.1的配置,我准备朝这个方向来分析,是否配置出现了问题,检查了网络配置,目前所看到的的配置都是取默认值,正在我分析的时候,他告诉我说,这个数据库以前好好的,今天出了点问题,不知道怎么的监听就无法重启了。而话外之意,为什么要重启还是有应用的同学反馈连接问题,这样听来也蛮有道理。
    所以听到这里,我就停下来手中正在进行的配置信息检查。而准备换一个思路来考虑这个问题。
在重启的间隙里,我让他再打开一个窗口,使用top查看,发现CPU idle竟然是0,也就意味着现在的系统负载极高,CPU资源是已经被全部占完了,看到这里这位网友就有些不知所措了。我想了想,首先停止正在重启的监听工作,然后查看目前系统的CPU瓶颈究竟在哪里。从top结果来看,主要的CPU资源都是在数据库的会话进程上,而且从进程信息可以看出这些会话的持有时间已经超过20多个小时了,占用率都不低。这种情况下初步感觉就是相关的SQL语句出现了问题,当然要连接数据库检查还是要征得这位网友的同意,结果使用sqlplus登录竟然毫无反应,所以数据库层面的检查工作就很有限了。那我就从数据库日志中来尝试得到一些有用的信息,但是奇怪的是系统从昨天开始到现在竟然没有任何的日志输出,这个就极为奇怪了,总得切一次归档吧,竟然一丁点日志都没有。所以这个数据库不光是因为资源消耗高而完全阻塞了,从目前的情况来看是有僵死的感觉。
  但是凡事不能太肯定,所以我们还是先做保守的工作,我看了下数据库目前有近80个用户进程,资源消耗都很高,所以我的建议就是先释放系统资源,即从操作系统层面来杀掉一些资源使用较高的会话,从实际来看,大量的会话持续20多个小时,肯定是有问题的。先保证业务可以恢复为先,所以在告诉网友要旨之后,让他来从本地操作一下。清理了近30多个进程之后,查看系统资源,CPU idle依然是0,从top来看资源使用依旧很高。所以逐步加大了杀掉进程的幅度,最后差不多了,查看top发现idle还是很低,所以这个问题就让人很纠结。
最后相关的会话都杀掉了,数据库的负载依旧是CPU 100%,这就让人无奈了,然后开启第二套方案,既然杀掉会话依然无济于事,我们开始尝试停止数据库,数据库实例有5个后台必备进程,但是我在尝试kill了smon,pmon之后,查看dbwr,lgwr,ckpt进程竟然依旧存在,而且资源占用依旧很高。最后一一杀掉会话,我想这下总会可以了吧,没想到这次确实有效果了,CPU资源一下子释放了,我建议这位网友尝试重启数据库,看看是否有大问题,但是我在远程运行sqlplus -v竟然没有任何反应,所以感觉问题又出现了。在这种情况下,sqlplus没有响应,后面的工作是压根没法做了。感觉问题越来越缥缈,这个时候我的一个基本建议就只剩下了重启系统,但是前提是先备份数据然后重启,因为按照这种情况重启如果失败,那数据就全丢了,这个库目前没有开启归档,所以丢数据的概率极高,在这一点上我还是很谨慎的。所以我是强烈建议先备份,然后重启数据库。
     碰到这种情况着实让我有些担心,而且这台服务器存在一些硬伤,硬件配置太老旧了,内存是4G,而且上面竟然还跑了几个其他的业务,数据库的版本过低,很有可能触发一些bug之类的,对于这个问题还真是纠结,看来只能看看重启大发是否生效了,当然为了表明我的态度,不要出现二义性,我还专门打了一个电话给他,想他确认了一些信息。做完之后就等待他的进度反馈了,在我坐车回家之后,这位网友告诉我说,已经重启系统了,重启之后,数据库就自动启动了,监听使用也没有问题。而他也是带着赌一赌的感觉,没有做备份,当然这是大家都愿意看到的境地,问题解决了,但是我还是建议他以后需要及时保留备份,在问题真正出现的时候,能够少一些扯皮和推诿。
    后面又帮他看了几个小问题,不过已经不重要了,因为主要的问题已经解决了。这个案例着实让我很纠结,不断调整着对于操作的最低要求,这个案例还是需要大家保持冷静,要不数据丢失就不是简单的技术问题了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26797 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2963 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11819 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
7503 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
22412 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
+关注
jeanron100
Oracle ACE,《Oracle DBA工作笔记》作者 现就职于国内某互联网公司,擅长数据管理,数据迁移,性能优化,目前专注于开源技术,运维自动化和性能优化。
1180
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载