一、Oracle日志类型及CentOS下的默认路径
Oracle数据库的日志是其运行状态、错误信息和恢复依据的核心载体,CentOS环境下主要日志类型及默认路径如下:
$ORACLE_BASE/diag/rdbms/<数据库名>/<实例名>/trace/alert_<实例名>.log(如/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_orcl.log);LOG_FILE参数指定(如/u01/app/oracle/oradata/orcl/redo01.log);LOG_ARCHIVE_DEST参数指定(如/u01/app/oracle/archive)。二、日志轮转配置(避免日志膨胀)
日志文件持续增长会占用大量磁盘空间,需通过logrotate工具(Linux系统自带)实现自动化轮转。以下是针对Oracle日志的配置步骤:
/etc/logrotate.d/下新建oracle文件(如sudo nano /etc/logrotate.d/oracle);/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_orcl.log {
daily # 每日轮转
missingok # 若日志不存在也不报错
rotate 7 # 保留最近7个日志文件
compress # 压缩旧日志(节省空间)
notifempty # 日志为空时不轮转
create 640 oracle oinstall # 新日志的权限和所有者(oracle用户属oinstall组)
postrotate # 轮转后执行的命令(通知Oracle重新打开日志)
/bin/kill -HUP `cat /u01/app/oracle/diag/rdbms/orcl/ORCL/pid` 2>/dev/null || true
endscript
}
sudo logrotate -f /etc/logrotate.d/oracle强制轮转,验证配置是否正确;/var/lib/logrotate/status文件,确认日志轮转记录。三、日志监控与快速分析
adrci工具(位于$ORACLE_HOME/bin),执行以下命令:$ORACLE_HOME/bin/adrci
adrci> set home diag/rdbms/orcl/ORCL # 切换到目标数据库的ADR目录
adrci> show alert -tail -f # 实时输出Alert日志(类似tail -f)
adrci> show alert -p "message_text like '%ORA-%'" # 筛选ORA-错误(快速定位问题)
ORA-错误,并发送邮件报警(示例):#!/bin/bash
LOG_FILE="/u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_orcl.log"
ERROR_FILE="/tmp/oracle_alert_errors.log"
grep "ORA-" $LOG_FILE > $ERROR_FILE
if [ -s $ERROR_FILE ]; then # 若错误文件非空
mail -s "Oracle Alert Log Errors Found" admin@example.com < $ERROR_FILE
fi
将脚本加入crontab(如每小时执行一次):0 * * * * /path/to/script.sh。四、归档日志管理(保障可恢复性)
-- 切换到mount状态
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
-- 启用归档模式
ALTER DATABASE ARCHIVELOG;
-- 设置归档路径(可设置多个路径,用逗号分隔)
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/archive';
-- 开启自动归档
ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE;
-- 退出并重启数据库
ALTER DATABASE OPEN;
ARCHIVE LOG LIST,确认Database log mode为ARCHIVELOG,且Archive destination指向正确路径;RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT; -- 备份并删除已备份的归档日志
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-7';
五、日志安全性与权限控制
oracle用户拥有,所属组为oinstall,权限设置为640(防止未授权访问):chown oracle:oinstall /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/*.log
chmod 640 /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/*.log
logrotate的compress选项压缩日志(加密压缩更安全),或在日志生成前通过触发器过滤敏感信息。