Oracle在Ubuntu上的日志文件主要分布在以下路径(需替换db_name为数据库名、instance_name为实例名):
$ORACLE_BASE/diag/rdbms/db_name/instance_name/trace/alert_instance_name.log(记录数据库关键事件,如启动/关闭、错误等);.trc文件(如ora_1234.trc,记录会话或后台进程的详细错误信息);$ORACLE_BASE/archivelog目录(默认路径可通过SHOW PARAMETER LOG_ARCHIVE_DEST查看)。Oracle支持两种日志模式,需根据数据恢复需求选择:
归档日志模式(ARCHIVELOG):
开启后,重做日志文件会归档到指定位置,支持介质故障恢复(如磁盘损坏)。
ALTER DATABASE ARCHIVELOG;ALTER DATABASE NOARCHIVELOG;SELECT log_mode FROM v$database;。非归档日志模式(NOARCHIVELOG):
重做日志文件被新日志覆盖,仅支持实例故障恢复(如宕机),不支持介质恢复。。
若开启归档模式,需定期监控和维护归档日志:
SELECT dest_name, status, destination FROM v$archive_dest;(查看归档目标路径、状态是否正常);ALTER SYSTEM ARCHIVE LOG ALL;(强制归档所有未归档的重做日志);DELETE NOPROMPT ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK;(删除已备份1次及以上的归档日志,释放空间)。。Ubuntu系统自带的logrotate工具可实现Oracle日志的自动轮转、压缩和删除,避免日志文件过大占用磁盘空间:
sudo apt-get install logrotate(Ubuntu默认已安装);sudo nano /etc/logrotate.d/oracle;/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log {
daily # 每天轮转
missingok # 若日志不存在也不报错
rotate 7 # 保留7个旧日志
compress # 压缩旧日志(如gzip)
notifempty # 日志为空时不轮转
create 640 oracle oinstall # 新日志的权限和所有者(需替换为实际用户/组)
postrotate # 轮转后执行的命令(通知Oracle重新打开日志)
/bin/kill -HUP `cat /u01/app/oracle/diag/rdbms/orcl/orcl/pid`
endscript
}
sudo logrotate -f /etc/logrotate.d/oracle(强制执行一次轮转,验证配置是否正确)。。tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log(动态跟踪最新日志内容);tkprof工具将.trc文件转换为易读的文本(如tkprof /path/to/ora_1234.trc output.txt explain scott/tiger@orcl);sudo apt-get install logwatch,配置/etc/logwatch/conf/logwatch.conf设置邮件接收地址,通过logwatch --output mail发送每日日志报告;LogMiner解析重做日志,提取SQL操作(如定位误删除数据的时间点);或使用SQL*Plus查询日志路径:SELECT * FROM v$diag_info WHERE name LIKE '%LOG%';。。RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;);$ORACLE_BASE/diag/rdbms/目录下的日志文件(如使用tar命令打包),存储到异地或安全介质;RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;)。。