显式激活数据库( ACTIVATE DATABASE)

        某天值班员联系我说,我负责的一套报送系统没有按时生成报文,由于此报警提早量比较大,加上系统常常发生未按时生成报文的事件,也就是没在乎,而后不急不慢的到公司,打开系统页面,发现其中一个存储过程跑了将近8小时还没结束。以往这个存储过程最长的运行记录也就不到2小时,这确定有问题。查看前一天的运行记录也是10个小时左右,在之前的记录就都是半小时左右了,并且接着这个存储过程运行的下一个批做业(一个JAVA程序),前一天也运行了1个小时,以往也就几分钟。为了保证业务使用,联系了项目组,咨询此存储过程能够先跳过不运行,因而force掉数据库链接,接着就运行那个JAVA程序,但是运行也至关慢,tail输出日志,发现程序每处理一条记录,都先数据库链接,而且关闭,而后再处理一下条记录(上次出现JAVA链接不能正常CLOSED,致使JAVA链接池耗尽,项目组修改了链接方式)。这种方式确定是不高效的,可是应该也至于这么慢,10几秒才处理一条记录,确定有问题,由于这个JAVA程序已经上线好些日子了,为何就这两天才慢。        这个时候想起各位大神常常说的问题分析方法论了,方法论之一:最近系统有没有作过改动,确实有,上周重启过服务器,而且DB2进程使用双机软件拉起的,在拉起DB2进程的时候,没有显式激活数据库,而这个系统没有前台应用,也就是说没有长链接的数据链接到数据库,数据库在无链接状况下,会释放部分资源,只保留必要的一些资源,当在再次有应用链接到数据库的时候,会从新导入相关资源,完成数据处理,这个初始化过程是一个比较耗时的操做(当执行db2start操做,若是没显式激活数据库,第一次执行db2 conncet to dbname时候是否是感受很慢),分析到这来就马上执行了ACTIVATE DATABASE操做,那个JAVA程序瞬间完成,至于以前的那个存储过程,从新运行也是20分钟左右完成,按推理,显示激活数据库应该不会影响到存储过程的运行,可是事实就是影响了,以后日子没有发生相似的问题。        建议对于没有长链接的数据库,若是此数据库没有运行其余软件,或者系统资源比较充足的状况下,最好显式激活数据库
相关文章
相关标签/搜索