Oracle的告警日志的查看与监控

Oracle的数据库日志大致可以分为三大类

告警日志、跟踪日志、重做日志

今天主要来谈谈告警日志

告警日志(记录报错信息)

一般命名为alert_<SID>.log,数据库告警日志是按时间顺序记录message和错误信息。

告警日志具体记录的内容

1:所有的内部错误(ORA-600)信息,块损坏错误(ORA-1578)信息,以及死锁错误(ORA-60)信息等。

2:管理操作,例如CREATE、ALTER、DROP语句等,以及数据库启动、关闭以及日志归档的一些信息。

  2.1 涉及物理结构的所有操作:例如创建、删除、重命名数据文件与联机重做日志文件的ALTER DATABASE命令,此外还涉及重新分配数据文件大小以及将数据文件联机与脱机的操作。

  2.2 表空间操作,例如DROP与CREATE命令,此外还包括为了进行用户管理的备份而将表空间置入和取出热备份模式的操作

3:与共享服务器或调度进程相关功能的消息和错误信息。

4:物化视图的自动刷新过程中出现的错误。

5:动态参数的修改信息。

查看告警日志所在的路径

SQL> show parameter background_dump_dest;

如何监控告警日志

1.通过外部表来查看告警日志文件的内容。相当的方便。然后也是使用定制SQL语句来查询错误信息

依据日志所在路径创建逻辑目录

create or replace directory alert_log as '/home/oracle/app/product/19.3.0/dbhome_1/rdbms/log';

创建外部表关联这个目录,就可以直接通过表查看日志信息了

create table alert_logs
(
text varchar2(2000)
)
organization external
(
type oracle_loader
default directory alert_log
access parameters
(
records delimited by newline
fields
reject rows with all null fields
)
location
(
'alert_CDB.log'
)
)
reject limit unlimited;

检查是否存在数据库系统错误提示信息,查看有无“ORA-”,Error”,“Failed”等出错信息。根据错误信息进行分析并解决。
select * from alert_logs where text like '%ORA-%' or text like %Error% ....
;

 

2.通过shell脚本定时归档告警日志

告警日志如果不及时归档,时间长了,告警日志文件会变得非常大,查看、读取告警日志会引起额外的IO开销。所以一般应该按天归档告警日志文件,保留一段时间(例如 90天),超过规定时间的删除。

告警日志是否可以删除呢? 以前有位同事说background_dump_dest目录下的跟踪文件除了告警日志外都能删除,如果删除告警日志文件有可能会产生意想不到的错误,我半信半疑,在测试服务器删除告警日志,验证后发现没有什么影响,系统会重新生成告警日志文件(时间上不会立即生成告警日志文件,而是当进程向告警日志写入记录时就会生成新的告警日志文件)。

参考地址:https://www.cnblogs.com/kerrycode/p/3168662.html

原文地址:https://www.cnblogs.com/dll102/p/15793640.html