上周5快下班想要开始开心的周末生活的时候,例行检查了一个最近刚刚切换了设备的库,在查看告警日志的过程中,突然远程被中断,过了好一会才又重新连接过去继续查看,告警日志新增加了实例和数据库的打开信息日志,继续往上翻到中断连接之前的位置,但是就是没看到关闭日志,于是怀疑OS被重启过,甚至怀疑是直接power off,但是想想不对,毕竟是生产环节呀,于是一边让开发人员联系客户,一边继续查看了OS日志,发现对应时间的事件,有事件号6005,说明系统刚刚启动,但是没有发现事件号为6006的关闭记录,初步怀疑是power off了,否则db日志不可能没有记录关闭信息,另外从开发那边得到的答复是修改IP和调整其他所以重启了机器,但是没有得到释放power off明确答复,唉,客户自己要玩脱也没办法。
鉴于此于是在群里初步的讨论了下这个问题,以及其他非正常关闭系统或者DB服务的情况,大家似乎还真没怎么关注到这个情况,于是就有了这次测试,主要是为了测试不同情况下的OS和DB服务中断的DB告警日志表现。
初步想到的测试案例如下:
0. OS正常关机
1. OS正常重启
2. OS Power off暴力关机
3. DB重启服务
4. end process中断DB进程
测试之前猜想测试结果
0. 正常记录DB正常关闭
1. 正常记录DB正常关闭
0. 不会有任何记录DB关闭信息
0. 正常记录DB正常关闭及其重启
0. 不会有任何记录DB关闭信息
李宗盛唱到:猜想只是猜想。。。所以,还是动手实验吧。

在虚拟机进行测试,也可以很好的模拟os power off功能,应该和实体环境不会有区别,应该不会影响本次测试结果;
另外本想外挂一个web服务到db,但是鉴于其他一些因素没有做,只是简单的在另一台客户端sqlplus登陆到数据库做个不间断循环增删改操作动作。
由于主要是为了关注告警日志的表现,因此在每次测试开始之前都清空日志文件内容,便于记录和查看。

测试环境:
服务器:vbox4.1.8+windows2003+oracle 10gr1
客户端:instant client 10.2.0.5
测试脚本:

D:\>sqlplus system/test@test 


 SQL*Plus: Release 10.2.0.5.0 - Production on Mon Jan 9 11:42:25 2012 


 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. 



 Connected to: 

 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 

 With the Partitioning, OLAP and Data Mining options 


 SQL> select * from v$version; 


 BANNER 

 ---------------------------------------------------------------- 

 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod 

 PL/SQL Release 10.2.0.1.0 - Production 

 CORE 10.2.0.1.0 Production 

 TNS for 32-bit Windows: Version 10.2.0.1.0 - Production 

 NLSRTL Version 10.2.0.1.0 - Production 


 SQL> desc gtlions; 

 Name Null? Type


----------------------------------------- -------- ----------------------------

ID NUMBER(22)
每次测试之前执行如下匿名块脚本:

Declare 

 a number:=1; 

 Begin 

 Loop 

 Insert Into gtlions(Id) Values(a); 

 If Mod(a,100)=0 Then 

 Update gtlions Set Id=0; 

 Commit; 

 End If; 

 If Mod(a,1000)=0 Then 

 Execute Immediate 'truncate table gtlions'; 

 End If; 

 a:=a+1; 

 End Loop; 

 End; 

 /



测试开始鸟。
0. OS正常关机
测试结果:没有任何记录DB关闭信息。
1. OS正常重启
测试结果同上:没有任何记录DB关闭信息。
2. OS Power off暴力关机
测试结果:没有任何记录DB关闭信息。
3. DB重启服务
测试结果:正常记录db正常关闭.
4. end process中断DB进程
测试结果:没有任何记录DB关闭信息。
对比测试结果0和1,确实出乎了我的意料。

-The End-