在Linux Informix数据库故障排查中,可以采用以下几种方法:
1. 检查点(Checkpoint)机制异常
- 故障现象:数据库在执行checkpoint操作时阻塞访问临界区,导致SQL操作无法执行,严重时可能导致限呼或虚假话务浪涌。
- 检查方法:使用
onstat
命令检查checkpoint状态,观察逻辑日志和物理日志的使用情况。 - 处理方法:
- 调整
BUFFERS
大小,通常设置为内存大小的1/4。 - 调整
LRUS
队列数量,建议为32。 - 调整
LRU_MAX_DIRTY
和LRU_MIN_DIRTY
比例,建议为2/1。 - 调整
CLEANERS
数量,根据磁盘数目和数据库空间数目配置。 - 调整
CHKPTINTVL
参数,影响checkpoint频率。
- 调整
2. 逻辑日志满
- 故障现象:数据库不再进行任何操作,所有逻辑日志都处于已使用未备份状态。
- 故障分析:逻辑日志没有及时备份、空间分配过小、包含活动事务或检查点信息。
- 故障处理:
- 检查逻辑日志备份是否正常。
- 使用
onstat -x
检查事务的逻辑日志起始位置。 - 在IDS 9.3x或以后版本,可以使用
onparams -a -d
增加新的逻辑日志。-s -i
3. 性能故障排查
- 快速检查:使用
px.sh
脚本迅速收集数据库运行会话信息,分析SQL语句执行情况。 - 常用检查命令:
onstat -u -r 5|grep -E "B-|L-|active"
:检查等待状态会话。onstat -u -r 5|grep -E "PR|PX|active"
:检查关键区操作会话。onstat -u |grep -E "PX|PR"|awk '{print "onstat -g ses "$3}'|sh
:分析PR或PX状态会话及SQL。onstat -u |grep -E "B-|L-"|awk '{print "onstat -g ses "$3}'|sh
:分析等待buffer或lock的会话及SQL。
4. 锁冲突和长事务问题
- 故障现象:频繁的锁冲突,长事务无法完成。
- 检查方法:使用
onstat -u
命令查看锁等待和事务状态。 - 处理方法:
- 分析并优化长时间运行的事务。
- 检查并解决锁冲突问题。
5. I/O失败
- 故障现象:不能插入数据,系统I/O失败。
- 检查方法:检查磁盘空间使用情况,使用
df -h
命令。 - 处理方法:清理不必要的文件,扩展磁盘空间。
通过上述方法,可以有效地排查和解决Linux Informix数据库的故障。在实际操作中,建议结合具体情况进行调整和优化。