设为首页 加入收藏

TOP

Shutdown immediate命令长时间等待分析一例(一)
2015-11-10 12:17:43 来源: 作者: 【 】 浏览:14
Tags:Shutdown immediate 命令 时间 等待 分析

对生产系统,特别是大型系统的正式环境,停机、升级和配置动作都是相当慎重的事情。shutdown命令虽然简单,但对于运维部门来讲,有时候一些shutdown过程中出现的问题也的确是让人挠头。


同事联系笔者,说关闭数据库出现长时间等待,类似hang住状态。前端应用是公司网站,长时间不能访问是很大麻烦。


1、故障现象


系统版本10.2.0.1。


LICENSE_MAX_USERS = 0


SYS auditing is disabled


ksdpec: called for event 13740 prior to event group initialization


Starting up ORACLE RDBMS Version: 10.2.0.1.0.


同事希望将数据库完整关闭后重启,解决一个出现的bug问题。但是在sqlplus命令行提示中输入shutdown immediate之后,就一直在等待状态。持续时间已经超过半个小时,让同事比较揪心。


说明:由于环境所限,后续笔者采取的操作没有记录下来,以步骤方式进行描述。


1)? ? ? ? 后台单独启动一个命令行连接,使用ps –ef | grep pmon命令,确定Oracle pmon进程是否存在。这个进程是Oracle实例的标记进程;


2)? ? ? ? 从ps –ef命令,可以看到Oracle实例的pmon进程还存在,还在后台运行;


3)? ? ? ? 从另外的sqlplus /nolog登录,使用conn / as sysdba进入系统。结果显示connect to idle instance;


从上面的情况看,Oracle Instance应该还处在终止状态,没有完成shutdown过程。Oracle shutdown immediate过程包括终止回滚当前运行事务transaction,不允许新连接连入。当前Oracle处在“半死半活”状态。


2、问题解决


正常处理策略,应该是定位系统的alert log日志,确定当前数据库运行状态和是否有错误信息。如果有错误信息,就可以进行见招拆招的处理。但是时间有限,笔者也没有条件进行精细分析。于是,采用强制策略。


对数据库进行startup force操作。startup force包括两部分操作,shutdown abort和startup。之后,系统启动,各项操作运行正常。


事后,笔者和同事索要了alert log记录,进行进一步分析,希望发现问题关键。


3、Alert Log日志分析


在日志中,笔者很快定位到了最后一次关闭数据库动作。


--停止开始,关闭实例


Fri Aug 14 12:47:45 2015


ERROR: Emon failed to start.


Shutting down instance: further logons disabled


Fri Aug 14 12:47:45 2015


Stopping background process QMNC


Fri Aug 14 12:47:45 2015


Stopping background process CJQ0


Fri Aug 14 12:47:47 2015


Stopping background process MMNL


Fri Aug 14 12:47:48 2015


Stopping background process MMON


--进一步关闭后台进程


Fri Aug 14 12:47:49 2015


Shutting down instance (immediate)


License high water mark = 40


Fri Aug 14 12:47:49 2015


Stopping Job queue slave processes


Fri Aug 14 12:47:49 2015


Job queue slave processes stopped


Waiting for shared server 'S000' to die


All dispatchers and shared servers shutdown


--7分钟之后,定位问题进程


Fri Aug 14 12:54:05 2015


Active process 5640 user 'oracle' program 'oracle@mcw (J000)'


Active process 20559 user 'oracle' program 'oraclemmweb@mcw'


Active process 20561 user 'oracle' program 'oraclemmweb@mcw'


Active process 20569 user 'oracle' program 'oraclemmweb@mcw'


Active process 20557 user 'oracle' program 'oraclemmweb@mcw'


Active process 20555 user 'oracle' program 'oraclemmweb@mcw'


Active process 20563 user 'oracle' program 'oraclemmweb@mcw'


Active process 20565 user 'oracle' program 'oraclemmweb@mcw'


Active process 20567 user 'oracle' program 'oraclemmweb@mcw'


Active process 20571 user 'oracle' program 'oraclemmweb@mcw'


Active process 6808 user 'oracle' program 'oraclemmweb@mcw'


Active process 6795 user 'oracle' program 'oraclemmweb@mcw'


Active process 6786 user 'oracle' program 'oraclemmweb@mcw'


Active process 20553 user 'oracle' program 'oraclemmweb@mcw'


Active process 6730 user 'oracle' program 'oraclemmweb@mcw'


Active process 6775 user 'oracle' program 'oraclemmweb@mcw'


SHUTDOWN: waiting for logins to complete.


Fri Aug 14 13:07:49 2015


MMNL absent for 1218 secs; Foregrounds taking over


Fri Aug 14 13:34:50 2015


Shutting down instance (abort)


License high water mark = 40


Instance terminated by USER, pid = 7652


每条log日志,都可以看到对应的时间。消耗最多的是两个部分,第一个是终止dispatcher和s000共享连接进程关闭,消耗7分钟左右。另一部分是等待一系列active的活动进程中断连接,持续接近30分钟,直到笔者接入操作。


从进程格式来看,应该是前端网站系统连接进入的server process信息。链接数量上还是比较接近应用设置连接池的。


这就有问题了,我们直到Oracle的shutdown有几个选项。分别为:shutdown normal、transaction、immediate和abort,分别应对不同的操作动作。


同事使用的immediate关闭方式,如果有事务也被断开回滚,怎么还会等某些连接呢?


问题出现在已经连接的那些server process上,如果这些连接在运行长

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇浅说两种输出Oracle字符文件的方法 下一篇Oracle DMP文件异常解决

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: