孔令俊
作者孔令俊·2011-04-22 14:46
软件开发工程师·建行

informix数据库失效模式分析

字数 7407阅读 4161评论 0赞 0
informix数据库失效模式分析

序号 潜在失效内容 潜在失效影响 潜在失效原因、机制 当前的应急措施 应急措施生效前提条件
1 提供运行环境的物理设备出现单点故障(主机) 导致数据库不能正常启动 出现主机,内存,CPU,本地磁盘,HBA卡,网卡等硬件单点故障,导致数据库无法正常工作 采用双机冗余的机制,在一台主机发生故障后,紧急切换到备机 出现物理设备故障,并且是单点,在一个运行环境内无法冗余
2 数据库所在的存储出现故障(存储) 导致数据库无法正常启动 1、存储出现故障 目前采用的是关键系统建立应急库,并且建立在不同的存储上 系统无法正常读取存储数据,或者性能比较差
2、主机上的存储软件故障
3 主机和外界的网络出现故障(网络) 导致外界无法连接数据库 1、本机网卡故障 1、在本机的生产地址采用网卡绑定的方式(目前一般采用Stand_Active模式) 1、数据库在本机访问这个正常,但是对外无法提供服务
2、本机路由故障 2、采用双机的网卡冗余模式
3、交换机故障 3、双交换机本别连接主机的不同网卡
4、访问控制异常  
5、访问端出现故障  
4 CPU出现运算异常(ectip出现过)  导致数据库运行异常,出现无法理解的一些错误。 CPU自身故障 目前这种错误,等同于物理设备损坏 1、可能数据库出现断言错误 (可能项)
2、可能数据库经常出现莫名其妙的挂起等 (可能项)
3、厂商通过专有的测试软件进行CPU运算测试
5 内存故障 在运行过程中,内存发生异常导致数据库无法正确读取缓存数据(这个错误首先应该从系统层面报出错误) 内存自身故障 目前这种错误,等同于物理设备损坏 1、操作系统有内存错误提示
2、数据库挂起或者出现访问内存失效的提示
6 进程异常 在运行过程中,有进程异常down或者被人工Kill,则数据库将Down,并且可能导致数据不一致性。 1、数据库自身bug 重新启动数据库,如果依然出现问题,则启动备机,如果数据发生损坏,则启用应急库或者紧急进行数据恢复 1、可能日志出现核心进程异常退出提示
2、数据库进程被异常kill 2、可能出现断言错误
3、数据库进程在访问所需资源的时候出现异常,导致数据库主动退出 3、数据库异常Down
7 数据异常 1、如果该数据是用户数据,则对于该数据页的访问操作将被挂机或者返回错误提示 1、曾经有数据库异常挂起或者异常停止的经历 1、如果确认是索引页出现故障,则从新建立索引 1、根据日志中数据库错误提示的表partnum查找相关的表信息,明确错误页的类型
2、如果该数据页是数据库自身的核心数据,则数据库将挂起 2、数据库是用外部数据恢复过来的 2、如果是应用数据页发生损坏,则察看是否在恢复环境紧急恢复相关数据,或者保留有效数据后,从新建立该表,或者是起用应急库 2、如果数据库挂机或者错误页为系统页数据,则所涉及的数据库数据将可能失效
3、如果该数据页是索引页,则操作可能被挂机或者非常缓慢 3、长时间没有进行过索引重建 3、如果是系统页发生损坏,则只能起用应急库 3、如果系统层面报错,则存储设备失效
  4、所在存储设备上的磁盘数据异常 4、如果是存储设备故障,则启用应急库  
8 数据库出现bug(断言错误) 1、有些断言只是对session有影响 1、可能是bug 1、如果只对某类Session有影响,如果生产高峰期,准备好应急步骤,随时待命,根据目前影响度进行下一步动作 1、日志出现断言错误
2、有些断言将导致整个数据库实例挂起 2、可能是数据库所涉及的外部资源出现异常 2、如果数据库无法服务,则紧急启动应急环境(数据此时一般没有问题),一般顺序是备机--〉应急库(或者是hdr) 2、部分交易或者全部交易首影响
9 Checkpoint异常 数据库处于checkpoint状态,数据库无法提供服务 bug 停止数据库,清理环境后重新启动(有可能是btscanner引起) select count(*) del_item_pages from syspaghdr where pg_partnum = ?? and mod(round(pg_flags / 16), 2) != 0 and pg_nslots = 0;
检查是否索引空页比较多,另外通过设置export  NOFUZZYCKPT=1来进行跟踪
10 btscanner bug 数据库btscanner处于运行,数据库运行效率很差,有可能无法提供服务 bug 停止btscanner,修改btscann参数(可在线修改),重新启动btscanner btscanner一直处于一个表操作
BTSCANNER num=2,threshold=5000,rangesize=-1,可 系统的一个cpu一直100%
11 数据库管理命令失效 数据库无法察看和管理 bug或者是上面一些运行环境异常导致 如果onmode 命令有效,使用onmode命令,如果onmode命令失效, 命令失效
杀掉父进程=1的oninit进程,也就是其他所有oninit的父进程
12 数据库监听失效 无法正确连接数据库,数据无法提供服务 bug 如果onmode 命令有效,使用onmode命令,如果onmode命令失效, 本机也无法连接到数据库
杀掉父进程=1的oninit进程,也就是其他所有oninit的父进程
13 操作系统补丁差异引起数据库异常 数据库可能挂起 操作系统补丁不满足数据库要求 根据要求修改  
14 操作系统核心参数引起数据库异常 数据库可能挂起 操作系统核心参数不符合数据库要求 根据要求修改  
15 数据库状态正常,但是无法提供服务(俗称挂起) 无法正常提供服务 一般归结为bug或上面一些运行环境异常导致 1、紧急重新启动数据库 1、无错误提示
2、从本机也无法连接数据库
3、已经建立好连接的也无法执行语句
16 共享内存异常 数据库将出现断言错误或者挂起 1、数据库所涉及的共享内存被人为删除 在把环境清理干净后,重新启动数据库 1、共享内存出现D状态
2、数据库所涉及的共享内存被人为修改
17 消息队列和信号灯 数据库将出现断言错误或者挂起 1、数据库所涉及的消息资源被人为删除 在把环境清理干净后,重新启动数据库 1、提示没有发现相关资源 (目前没有测试该场景下是否有其他错误提示)
2、数据库所涉及的消息被人为修改
18 数据库进程被异常kill 数据库将出现断言错误或者挂起 人为删除了数据库进程 在把环境清理干净后,重新启动数据库 出现断言错误,或者数据库不提供服务
19 数据库所涉及的数据文件被改权限或者改名字 数据库将出现错误提示 1、/INFORMIXTMP下的文件或目录权限被改 修改正确权限后,如果可以,把环境清理干净后,重新启动数据库 出现错误提示,访问某些资源储出错
如果是/tmp下的排序文件被删除,则数据库可能挂起 2、/tmp下形成的informix排序文件被删除(一般很少形成),权限是informix:informix的
  3、数据文件,INFORMIXDIR权限,bin, etc权限,dump目录权限被修改 
20 数据库环境变量被修改 导致本机无法访问数据库 .profile被修改 恢复正确的环境  
21 数据库配置文件被修改 导致本机无法访问数据库 onconfig,sqlhosts被修改 恢复正确的配置文件  
22 数据库环境变量被修改 导致启动异常 onconfig,sqlhosts配置不正确 检查配置文件的正确性,以及和环境变量是否符合  
23 环境变量不正确 导致无法启动 .profile文件中的环境变量和onconfig,sqlhosts中的配置不匹配或者没有 检查配置文件的正确性,以及和环境变量是否符合  
24 IP地址配置不正确 无法启动 sqlhosts中的配置和ip不匹配 修改正确IP  
25 端口被占用 无法启动 sqlhosts中定义的端口已经被使用,或者原有的informix没有停止干净 清理环境(ipc资源和进程),修改正确端口,从新启动  
26 ipc资源被占用 无法启动 上次shutdown异常导致ipc资源没有正确释放 清理环境(ipc资源和进程)  
27 数据库数据文件权限不正确 无法启动 权限应该是Informix:informix  660 检查数据文件的有效性,如果是连接,检查实体lv或者disk的权限  
28 数据库的执行文件不正确 无法正确启动 informix /bin /etc /dump 自身dir对于权限在安装的过程中都有特殊设置,不能修改 从新安装,或者根据已有的informix进行比对修改  
29 数据文件损坏 无法启动 数据文件发生异常,或者vg没有mount,或者底层物理设备 1、如果判断数据文件无法修复,则启用应急库  
2、如果是底层物理设备故障,如果无法修复,启动应急库
30 启动后,有chunk down 数据库启动后处于挂起,无法提供服务 1、数据库在运行过程中发现chunk D,导致内部标记该chunk失效 1、尝试用onspaces -s命令带起  
2、数据库在启动过程中对某些数据文件打开失败,导致内部标记错误 2、如果上面步骤无法生效,只能联系ibm使用专有工具进行强行处理(需要offline模式下操作)
31 表空间满   1、rootdbs空间满 1、如果是rootdbs表空间,及时清理rootdbs上的用户数据,如果无用户数据,则察看是否有log,phy日志在该表空间,或者紧急增加数据文件  
如果是rootdbs空间满,后果很难估计,比较危险。 2、应用用户表空间满 2、如果是用户表空间,及时进行数据清理工作,或者紧急增加数据chunk
如果是用户表空间,则session会出错,但是数据库运行环境不影响。    
32 逻辑日志满 数据库挂起-无法提供服务 逻辑日志没有及时备份,导致满 1、进行逻辑日志备份  
2、如果紧急情况,将逻辑日志的指向/dev/null,不备份逻辑日志
33 长事务导致数据库阻塞 数据库挂起-无法提供服务 事务比较大,导致超过设置上限 1、判断该事务跨越的日志及需要的时间  
2、察看在线恢复参数是否合理
3、判断该事务涉及数据如果丢失对于业务的影响
4、如果参数不合理,修改参数后从新启动数据库
5、如果涉及数据丢失对于业务无影响,联系厂商进行事务截断,紧急恢复数据库
6、如果有应急库,启动应急库
34 logbuf设置过小导致交易阻塞 数据库挂起,重新启动也无法成功 logbuf设置和交易并发度不匹配 扩大logbuf的设置 通过察看断言错误的内容
35 堆栈段满 数据库挂起 堆栈段的设置过小,导致溢出 增加堆栈段的大小 onstat -g sts出现很高的线程
36 锁资源不够 数据库可能挂起 表锁模式不合理或者一次操作的数据量太大 控制事务大小,如果内存可以,扩大锁资源,如果informix版本比较低,则锁资源有上限,需要从应用入手 online.log中出现多次分配锁资源的提示
37 单表数据量超过informix的一些上限 该表的一些update,insert操作失败 表数据太大,或者extent数量太多 1、定期检查 应用出现应用错误,通过察看数据库确认具体的数量
2、出现问题后,对表进行分片或者重新建立
38 内存分配过大 导致操作系统内存用完,并不断交换 没有设置informix参数 控制informix的内存使用上限 内存耗尽,出现pagein,pageout现象
39 serial字段的溢出 serial字段超过最大,导致应用出错 serial字段使用浪费,超过上限 重新制定serial的值 应用出现insert失败的现象,而空间有
40 informix dump空间满(/tmp满) informix在生成断言文件的过程中导致该文件系统满,很多情况导致$informixdir文件系统满 informix文件系统和dump放在一个文件系统内 informix dump路径不要放在/tmp,设定单独的文件系统  
41 数据库temp空间满 使用大temp空间的语句将无法执行,或者在/tmp下形成很大的排序文件 语句涉及数据比较大 1、增加temp空间  
2、修改语句
3、停止使用大temp的语句
SELECT t.tabname ,t.dbsname,t.owner, DECODE(d.is_logging,1,”Y”,”N”) AS db_with_log,
s.name AS dbspace, DBINFO(“UTC_TO_DATETIME”,ti_created) AS created,
DECODE(hex(mod(ti_flags,256)/16),6,”Y”,”N”) AS table_using_log,
ti_npused AS num_usedpages, ti_nptotal AS num_pages
FROM sysmaster:systabnames t, sysmaster:systabinfo i, sysmaster:sysdbspaces s, sysmaster:sysdatabases d
WHERE t.partnum=ti_partnum AND d.name=t.dbsname
AND s.dbsnum=TRUNC(t.partnum/1048576) AND hex(mod(ti_flags,256)/16) IN ( 6,2 )
42 数据库规定的一些上限内容 数据库hang informix自身特殊要求 检查$INFORMIXDIR/release/en_us/0333/下的文件中对一些值得设定  
43 read队列高 数据库性能很差,导致业务性能下降 具体分析 具体分析,紧急情况下重新启动数据库  
44 某语句执行效率差  
45 死锁过多  
46 磁盘繁忙  
47 内存附加段太多  
48 pdq设置不合理  
49 索引level过多  
  数据库等待事件  
50 存在热点dbs或者热点盘  
51 checkpoint时间过长  
52 密码错误 无法连接,或者性能很差 密码近期修改过 修改正确密码,或者增加信任关系  
53 网络通讯异常 访问关系不正确,或者中间环节网络异常,或者server路由不正确 通过网络测试是否能正确到目标地址,目标地址的路由设置是否合适。  
54 数据库方双网卡邦定出现异常 在交换机端口处于好和坏之间的一个状态,邦定软件无法正常将无效链路切换到好的链路,或者网络交换机不支持绑定模式 拔网线 明确具体网线对应的ip
55 客户端的网络异常 客户端网络异常    
56 小包问题导致性能比较差 客户端和主机端交互频率太高,传输数据量很小导致相关的CPU使用率很高 网卡邦定,或者修改应用  
57 客户端连接串不正确 连接串不符合数据库要求 修改连接串,或者从新部署中间件jdbc  
58 ontape备份不成功 备份不成功,倒是数据无法及时备份 参数设置不正确,或者权限不正确,或者没有提前生成文件。    
59 dbexport备份不成功 无法备份 数据库正在被使用    
60 onbar备份不成功 无法备份 带库软件异常或者和带库软件结合的参数设置不正确    
61 配置文件不正确 无法恢复数据 恢复需要配置中的server名字和监听端口都正确    
62 数据文件不正确 无法恢复数据 数据文件需要和备份数据中的一样,并且权限要正确    
63 bug导致恢复异常 无法正确恢复数据 informix低版本有一些bug导致无法执行某些特定的备份恢复。 升级补丁  
64 主节点异常 主节点异常,无法对外提供服务 主节点和hdr节点之间存在bug 如果不启用不备节点,可以考虑停止备节点尝试是否能恢复主节点的运行  
65 备节点异常 主节点正常,但是备节点挂起 bug或者网络故障 删除主备关系,从新建立备节点  
66 主节点故障 主节点服务异常   切换到sds  

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广