序号 | 潜在失效内容 | 潜在失效影响 | 潜在失效原因、机制 | 当前的应急措施 | 应急措施生效前提条件 |
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 条评论