Informix数据库的日志系统是其数据安全与事务管理的核心组件,主要包括两类日志:
Informix的日志参数主要通过onconfig文件(通常位于$INFORMIXDIR/etc/onconfig)配置,该文件定义了逻辑日志、物理日志的数量、大小、存储路径等核心参数。
LOGFILES:逻辑日志文件数量(如set LOGFILES=10表示设置10个逻辑日志文件);LOGSIZE:单个逻辑日志文件大小(单位:页,默认4KB,如set LOGSIZE=200000表示约760MB);DYNALOGS:动态增加逻辑日志文件时的缓冲区大小(如set DYNALOGS=64)。PHYSFILE:物理日志文件大小(单位:页);PHYSDBS:物理日志所在dbspace名称(如set PHYSDBS=rootdbs)。Informix支持三种日志模式,通过CREATE DATABASE语句指定:
onstat命令(官方工具)onstat -l可显示逻辑日志和物理日志的详细信息,包括日志文件ID、使用状态(如“ACTIVE”表示正在使用、“ARCHIVED”表示已归档)、大小及路径;onstat -d可查看数据库整体状态,包含日志文件的基本信息。cat、less或more命令(如cat $INFORMIXDIR/dbss/dbs/log),但需注意日志文件为二进制格式,直接查看可能无法解析。使用tail -f命令可实时监控日志文件的最新内容(如tail -f /var/log/informix/logfiles/*.log),便于快速定位数据库运行中的异常(如死锁、连接超时)。
日志文件随时间增长会占用大量磁盘空间,需通过logrotate工具(Linux系统自带)定期轮转、压缩和清理。
编辑/etc/logrotate.d/informix文件(若不存在则创建),添加以下规则(示例):
/var/log/informix/logfiles/*.log {
daily # 每天轮转
rotate 7 # 保留7份历史日志
compress # 压缩旧日志(使用gzip)
delaycompress # 延迟压缩(避免压缩正在写入的日志)
missingok # 若日志文件不存在也不报错
notifempty # 若日志为空则不轮转
create 0644 informix informix # 轮转后创建新日志文件,权限为0644,属主为informix用户
sharedscripts # 所有日志轮转完成后执行postrotate脚本
postrotate
if [ -f /usr/local/informix/logs/informix.pid ]; then
kill -USR1 `cat /usr/local/informix/logs/informix.pid` # 通知Informix重新打开日志文件
fi
endscript
}
此配置可实现日志的自动管理,避免手动操作对数据库的影响。
若需立即测试logrotate配置,可使用以下命令强制轮转:
sudo /usr/sbin/logrotate -f /etc/logrotate.d/informix
grep命令查找日志中的“error”关键字(如grep "error" /var/log/informix/logfiles/*.log);awk命令统计特定错误代码的出现次数(如awk '/error 23505/{count++} END{print count}' /var/log/informix/logfiles/*.log,统计重复键错误的次数);logwatch命令生成每日日志报告(如logwatch --service informix --output mail,将报告发送至管理员邮箱)。ontape命令)前,需确保所有活跃逻辑日志已备份,避免数据丢失;informix用户(如chown informix:informix /var/log/informix/logfiles/*.log),防止未授权访问。