Ubuntu系统上Informix数据库案例分享
故障现象:数据库停止所有操作,使用onstat –l命令查看逻辑日志状态,所有日志的flags字段显示为U------(已使用未备份)。
故障原因:主要因逻辑日志未及时备份、空间分配过小、包含活动事务或检查点信息。
解决方法:
onstat –x查看beginlg确定活动事务起始位置;flags最后一位为L的日志(包含检查点信息),其后日志即使备份也不能覆盖;onparams -a -d DBspace -s size -i命令联机增加逻辑日志(需空闲chunk空间,无需0级备份)。故障现象:数据库操作中出现-243(锁请求超时)、-244(死锁)等错误码。
故障原因:修改数据时设置锁,其他用户访问锁定数据导致冲突。
解决方法:
dirty read降低锁粒度);DS_TOTAL_MEMORY或LOCKMODE参数优化);onstat –k查找锁所属partnum,onstat –u定位session id,执行onmode –z sid杀掉会话)。故障现象:数据库日志提示长事务,受影响事务处于回滚状态。
故障原因:活动事务占用逻辑日志比例超过设定值(如LOGSMAX参数限制),数据库触发回滚。
解决方法:
onstat –x查看事务起始位置);故障现象:数据库日志显示chunk IO错误,chunk flag状态为down(不可用)。
故障原因:磁盘硬件故障、文件系统损坏或chunk路径配置错误。
解决方法:
dd命令测试chunk设备可读性(如dd if=/dev/chunk_device of=/dev/null bs=1M count=100);fsck /dev/chunk_partition修复错误);onconfig文件中配置正确(如ROOTPATH、DBSPACEDBS等参数)。关键步骤:
informix用户(groupadd informix; useradd -u 3000 -g 3000 -d /home/informix -m informix),编辑~/.bash_profile设置INFORMIXDIR(安装目录)、INFORMIXSERVER(实例名)、ONCONFIG(配置文件)、LD_LIBRARY_PATH(库路径)、PATH(命令路径),执行source ~/.bash_profile生效。INFORMIXDIR,以informix用户运行./installserver完成安装;修改onconfig文件(如ROOTNAME、ROOTSIZE、DBSPACENAME等参数);配置/etc/services添加Informix服务端口(如sqlexec 1526/tcp),编辑sqlhosts文件设置连接协议(如onipcshm、onsoctcp);执行onmode -ky停止现有进程,oninit -iv初始化数据库。优化方向:
onstat -g seg查看缓冲池命中率(低于80%需扩容),iostat -x 1监控磁盘I/O(await值高表示磁盘瓶颈),vmstat 1查看CPU使用率(us过高表示CPU负载大)。/etc/sysctl.conf增加shmmax(共享内存最大值,如shmmax=4294967296)、shmall(共享内存总页数),调整ulimit -n(文件描述符数量,如ulimit -n 65536)。onstat监控数据库状态,vmstat/iostat定位系统级瓶颈,strace跟踪进程系统调用(如strace -p pid)。优化措施:
/etc/sysctl.conf增加vm.dirty_ratio(脏页比例,如vm.dirty_ratio=10)、vm.dirty_background_ratio(后台刷脏页比例,如vm.dirty_background_ratio=5),减少磁盘I/O延迟。onconfig文件调整缓冲池参数(BUFFERPOOL大小,如BUFFERPOOL size=200000)、排序堆(DS_TOTAL_MEMORY,如DS_TOTAL_MEMORY=4096000)、锁内存(LOCKS,如LOCKS=10000)。OPTIMIZE TABLE命令整理表碎片(减少I/O开销),更新统计信息(UPDATE STATISTICS优化查询计划)。优化方法:
apt update && apt upgrade),使用轻量级桌面环境(如Xfce),禁用不必要的启动项(systemctl disable service_name),清理系统垃圾(apt autoremove、rm -rf /tmp/*),启用硬件加速(如显卡驱动)。LOG_BUFFER_SIZE,如LOG_BUFFER_SIZE=32768),优化内存分配(BUFFERPOOL、DS_TOTAL_MEMORY根据服务器内存调整),采用RAID磁盘阵列(如RAID 10提升I/O性能),优化查询(添加索引、避免SELECT *、使用EXPLAIN分析执行计划)。