崩溃恢复(crash recovery)与 AUTORESTART参数
关于这个参数设置的影响,在生产系统中经历过两次:
第一次是有套不太重要的系统安装在虚拟机,这套系统所有应用(DB2 WAS IHS)都配置到/etc/rc.local中,每次启动机器会自动拉起应用,然后有次虚拟机宕机,重启后检查了各个应用进程都正常启动,但是前台页面访问异常无法访问,然后到后台手动连接数据库报:
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
根据SQL1015N提示:需要执行RESTART DATABASE DBNAME命令,执行后然后数据库可以正常连接
第二次是一套HA服务器的主机电源故障发生系统切换,切换到备机后,检查应用都正常被拉起,但是前台无法访问,和第一次是相同的问题,AUTORESTART参数被设置了OFF
这个参数解释如下:
如果DB2数据库遭受断电或者异常关闭,数据库没有干净的关闭,那么数据库在启动的时候将会进行crash recovery. 但是如果数据库参数AUTORESTART设置为OFF的话,在启动数据库后DB2不会进行CRASH RECOVERY。关于crash recovery,在db2diag.log日志会有相关体现
下面重现这一场景:
/* 1 设置AUTORESTART为OFF */
[db2inst1@limt ~]$ db2 UPDATE DATABASE CONFIGURATION for limtdb USING AUTORESTART OFF IMMEDIATE
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
[db2inst1@limt ~]$ db2 get db cfg for limtdb|grep -i AUTORESTART
Auto restart enabled (AUTORESTART) = OFF [db2inst1@limt yunwei]$ db2 connect to limtdb Database Connection Information Database server = DB2/LINUXX8664 10.1.0
SQL authorization ID = DB2INST1
Local database alias = LIMTDB /* 2 插入一条数据但不提交,为了数据库处于不一致性 */
[db2inst1@limt yunwei]$ db2 +c "insert into A values(15485,'asdas','asdas')"
DB20000I The SQL command completed successfully.
[db2inst1@limt yunwei]$
/* 3 kill数据库,模拟异常宕机情况 */
[db2inst1@limt yunwei]$ ps -ef|grep db2sys
db2inst1 5287 5285 1 08:07 pts/1 00:00:04 db2sysc 0
db2inst1 5827 3612 0 08:12 pts/1 00:00:00 grep db2sys
[db2inst1@limt yunwei]$ kill -9 5287
/* 4 启动数据库,此时数据库没有进行崩溃恢复,因为AUTORESTART为OFF */
[db2inst1@limt yunwei]$
[db2inst1@limt yunwei]$ db2start
12/19/2014 08:13:04 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
[db2inst1@limt yunwei]$
[db2inst1@limt yunwei]$
/* 5 此处报错是因为刚才的db2bp进程没有terminate */
[db2inst1@limt yunwei]$ db2 connect to limtdb
SQL0752N Connecting to a database is not permitted within a logical unit of
work when the CONNECT type 1 setting is in use. SQLSTATE=0A001
[db2inst1@limt yunwei]$ db2 terminate
DB20000I The TERMINATE command completed successfully.
/* 6 再次启动时候报数据库不一致 */
[db2inst1@limt yunwei]$ db2 connect to limtdb
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
/* 7 db2 ? SQL1015N 有一条建议: using the RESTART DATABASE command*/
[db2inst1@limt yunwei]$ db2 restart database limtdb
DB20000I The RESTART DATABASE command completed successfully.
/* 8 数据库可以正常连接*/
[db2inst1@limt yunwei]$ db2 connect to limtdb Database Connection Information Database server = DB2/LINUXX8664 10.1.0
SQL authorization ID = DB2INST1
Local database alias = LIMTDB /* 9 以下是设置AUTORESTART为ON情况下,数据库宕机重启(不需要执行RESTART DATABASE) */
[db2inst1@limt yunwei]$
[db2inst1@limt yunwei]$ db2 UPDATE DATABASE CONFIGURATION for limtdb USING AUTORESTART ON IMMEDIATE
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
[db2inst1@limt yunwei]$
[db2inst1@limt yunwei]$ db2 get db cfg for limtdb|grep -i AUTORESTART
Auto restart enabled (AUTORESTART) = ON
[db2inst1@limt yunwei]$
[db2inst1@limt yunwei]$
[db2inst1@limt yunwei]$ db2 +c "insert into A values(15485,'asdas','asdas')"
DB20000I The SQL command completed successfully.
[db2inst1@limt yunwei]$ ps -ef|grep db2sys
db2inst1 5870 5868 1 08:13 pts/1 00:00:03 db2sysc 0
db2inst1 6122 3612 0 08:16 pts/1 00:00:00 grep db2sys
[db2inst1@limt yunwei]$ kill -9 5870
[db2inst1@limt yunwei]$ db2start
12/19/2014 08:16:35 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
[db2inst1@limt yunwei]$ db2 connect to limtdb
SQL0752N Connecting to a database is not permitted within a logical unit of
work when the CONNECT type 1 setting is in use.
[db2inst1@limt yunwei]$ db2 terminate
DB20000I The TERMINATE command completed successfully.
[db2inst1@limt yunwei]$ db2 connect to limtdb Database Connection Information Database server = DB2/LINUXX8664 10.1.0
SQL authorization ID = DB2INST1
Local database alias = LIMTDB
崩溃恢复(crash recovery)与 AUTORESTART参数的更多相关文章
- insert buffer/change buffer double write buffer,双写 adaptive hash index(AHI) innodb的crash recovery innodb重要参数 innodb监控
https://yq.aliyun.com/articles/41000 http://blog.itpub.net/22664653/viewspace-1163838/ http://www.cn ...
- Android运行时Crash自动恢复框架-Recovery
转自:http://zhengxiaoyong.me/2016/09/05/Android%E8%BF%90%E8%A1%8C%E6%97%B6Crash%E8%87%AA%E5%8A%A8%E6%8 ...
- Oracle实例的恢复、介质恢复( crash recovery)( Media recovery)
实例的恢复( crash recovery) 什么时候发生Oracle实例恢复? shutdown abort; 数据库异常down掉(机器死机,掉电...) 实例恢复的原因是数据有丢掉,使用redo ...
- MySQL · 引擎特性 · InnoDB 崩溃恢复过程
MySQL · 引擎特性 · InnoDB 崩溃恢复过程 在前面两期月报中,我们详细介绍了 InnoDB redo log 和 undo log 的相关知识,本文将介绍 InnoDB 在崩溃恢复时的主 ...
- MySQL · 引擎特性 · InnoDB崩溃恢复
前言 数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证.本 ...
- 关于centos启动报错:Failed to start Crash recovery kernel arming的解决方案
在VMware中安装了centos,重启时报错:Failed to start Crash recovery kernel arming 本质是kdump服务启动失败 先来说一下,什么是kdump K ...
- MySQL InnoDB Update和Crash Recovery流程
MySQL InnoDB Update和Crash Recovery流程 概要信息 首先介绍了Redo,Undo,Log Sequence Number (LSN),Checkpoint,Rollba ...
- 转:InnoDB Crash Recovery 流程源码实现分析
此文章转载给登博的文章,给大家分享 InnoDB Crash Recovery 流程源码实现分析 Crash Recovery问题 本文主要分析了InnoDB整个crash recovery的源码处理 ...
- 数据库的Instance/Crash Recovery
crash recovery是指单实例数据库发生了failure.或者rac数据库中的所有实例都发生了failure后进行的recovery.rac数据库crash后,rac中第一个重启启动的inst ...
随机推荐
- Log4Net配置以及使用
跟踪程序代码,及时发现程序的运行状态,是每个成熟的软件所必不可少的一个环节,网站发布到真实的环境之后,对于程序的运行状态,我们并不能想开发环境那也,点击调试.日志记录显示就尤为重要,在.NET中记录日 ...
- Integer Inquiry【大数的加法举例】
Integer Inquiry Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27730 Accepted: 10764 ...
- python中的Iterable, Iterator,生成器概念
https://nychent.github.io/articles/2016-05/about-generator.cn 这个深刻 谈起Generator, 与之相关的的概念有 - {list, s ...
- POJ3694 Network(Tarjan双联通分图 LCA 桥)
链接:http://poj.org/problem?id=3694 题意:给定一个有向连通图,每次增加一条边,求剩下的桥的数量. 思路: 给定一个无向连通图,添加一条u->v的边,求此边对图剩余 ...
- RTP timestamp与帧率及时钟频率的关系
转自:http://blog.csdn.net/jasonhwang/article/details/7316128 RTP timestamp是用时钟频率(clock rate)计算而来表示时间的. ...
- C# 指针操作图像 细化处理
/// <summary> /// 图形细化 /// </summary> /// <param name="srcImg"></para ...
- barabasilab-networkScience学习笔记4-无标度特征
第一次接触复杂性科学是在一本叫think complexity的书上,Allen博士很好的讲述了数据结构与复杂性科学,barabasi是一个知名的复杂性网络科学家,barabasilab则是他所主导的 ...
- Arduino101学习笔记(七)—— 时间API
1.毫秒时间 获取机器运行的时间长度, 单位毫秒. 系统最长的记录时间为9小时22分, 如果超出时间将从0开始. 警告: 时间为 unsigned long类型, 如果用 int 保存时间将得到错误结 ...
- 对于一个负数mod正数
鸟神说.. a/b靠零取整 然后呢..a%b定义成a-(a/b)*b c语言就是这么算的... 那么python2.6是怎么算的呢 如果最后你取模想得到一个正数.. 那么在上述取模定义不变的情况下 p ...
- 标签q
标记短的引用,默认是中文符号:双引号 <p>文字<q>段落中的引用</q>文字</p> 如果是在html里直接敲出引号,是这样的: <p>文 ...