Ubuntu 上 Oracle 数据库日志管理实操指南
一 日志类型与定位
tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log。二 常用查看与监控
archive log list;SELECT name, log_mode FROM v$database;tail -f $ORACLE_BASE/diag/rdbms/<db>/<inst>/trace/alert_<inst>.logtail -f $ORACLE_BASE/diag/rdbms/<db>/<inst>/trace/ora_*.trctkprof /u01/app/oracle/diag/rdbms/orcl/orcl/trace/ora_1234.trc analysis.txt explain scott/tiger@orclgrep -i ORA- $ORACLE_BASE/diag/rdbms/<db>/<inst>/trace/alert_<inst>.log三 归档日志模式与配置
mkdir -p /u01/app/oracle/arch && chown oracle:oinstall /u01/app/oracle/archALTER SYSTEM SET log_archive_dest_1='location=/u01/app/oracle/arch' SCOPE=spfile;ALTER SYSTEM SET log_archive_format='arch_%t_%s_%r.dbf' SCOPE=spfile;(静态参数,需重启)SHUTDOWN IMMEDIATE;STARTUP MOUNT;ALTER DATABASE ARCHIVELOG;ALTER DATABASE OPEN;archive log list; 或 SELECT log_mode FROM v$database;ALTER DATABASE ARCHIVELOG,再启动集群。四 联机重做日志与空间管理
SELECT * FROM v$log; SELECT * FROM v$logfile;ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo1.log' TO GROUP 1;ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo1.log';ALTER SYSTEM SWITCH LOGFILE;(促使当前组归档/轮转)ALTER DATABASE RENAME FILE '/old/redo01.log' TO '/new/redo01.rdo';ALTER DATABASE CLEAR LOGFILE GROUP 3;ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;(存在数据丢失风险,谨慎)五 系统级日志轮转与清理
$ORACLE_BASE/diag/**/trace/*.log 做按日轮转、压缩与保留策略(postrotate 无需信号 Oracle,Oracle 会继续写原 inode 指向的新文件)。tail -n 100000 alert.log > /tmp/alert_tail.log && cp /tmp/alert_tail.log alert.log && rm /tmp/alert_tail.log,确保文件句柄有效。lsnrctl set log_status offcp listener.log listener_$(date +%F).log && > listener.loglsnrctl set log_status onBACKUP ARCHIVELOG ALL DELETE INPUT;),避免仅依赖 OS 删除导致恢复链断裂。