ORACLE告警日志文件
告警日志介绍
告警日志文件是一类特殊的跟踪文件(trace file)。告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称。数据库告警日志是按时间顺序记录message和错误信息。
告警日志位置
在ORACLE 10g中,BACKGROUND_DUMP_DEST参数确定了告警日志的位置,但是告警日志的文件名无法修改,告警日志的名称为:alert_<SID>.log ,其中<SID>是实例的名称。BACKGROUND_DUMP_DEST参数是动态的。
SQL> show parameter background_dump_dest;
NAME TYPE VALUE
--------------------- ----------- ------------------------------
background_dump_dest string /u01/app/oracle/admin/GSP/bdump
SQL>
告警日志以及所有后台跟踪文件都会被写至BACKGROUND_DUMP_DEST参数所指定的目录。
在ORACLE 11g 以及ORACLE 12c中,告警日志文件的位置有了变化。主要是因为引入了ADR(Automatic Diagnostic Repository:一个存放数据库诊断日志、跟踪文件的目录),关于ADR对应的目录位置可以通过查看v$diag_info系统视图。如下所示(ORACLE 12c )
SQL> select * from v$diag_info;
INST_ID NAME VALUE CON_ID
------- -------------------- -------------------------------------------------- -------
1 Diag Enabled TRUE 0
1 ADR Base /u01/app/oracle 0
1 ADR Home /u01/app/oracle/diag/rdbms/ignite/epps 0
1 Diag Trace /u01/app/oracle/diag/rdbms/ignite/epps/trace 0
1 Diag Alert /u01/app/oracle/diag/rdbms/ignite/epps/alert 0
1 Diag Incident /u01/app/oracle/diag/rdbms/ignite/epps/incident 0
1 Diag Cdump /u01/app/oracle/diag/rdbms/ignite/epps/cdump 0
1 Health Monitor /u01/app/oracle/diag/rdbms/ignite/epps/hm 0
1 Default Trace File /u01/app/oracle/diag/rdbms/ignite/epps/trace/epps_ 0
ora_13810.trc
1 Active Problem Count 0 0
1 Active Incident Coun 0 0
t
11 rows selected.
如上所示,Diag Trace对应的目录为文本格式的告警日志文件所在的目录,而Diag Alert对应的目录为XML格式的警告日志(对应为log_x.xml)
[oracle@gettestlnx01 trace]$ pwd
/u01/app/oracle/diag/rdbms/ignite/epps/trace
[oracle@gettestlnx01 trace]$ ls alert_epps.log
alert_epps.log
[oracle@gettestlnx01 trace]$ cd ../alert/
[oracle@gettestlnx01 alert]$ pwd
/u01/app/oracle/diag/rdbms/ignite/epps/alert
[oracle@gettestlnx01 alert]$ ls
log_1.xml log_2.xml log_3.xml log_4.xml log_5.xml log_6.xml log_7.xml log_8.xml log_9.xml log.xml
告警日志内容:
那么告警日志非常关键与重要,那么告警日志里面包含了那些内容信息呢?告警日志包含了下面一些内容的信息。像一些ORA错误,对于监控数据库有极其重要的作用。
1:所有的内部错误(ORA-600)信息,块损坏错误(ORA-1578)信息,以及死锁错误(ORA-60)信息等。
2:管理操作,例如CREATE、ALTER、DROP语句等,以及数据库启动、关闭以及日志归档的一些信息。
2.1 涉及物理结构的所有操作:例如创建、删除、重命名数据文件与联机重做日志文件的ALTER DATABASE命令,此外还涉及重新分配数据文件大小以及将数据文件联机与脱机的操作。
2.2 表空间操作,例如DROP与CREATE命令,此外还包括为了进行用户管理的备份而将表空间置入和取出热备份模式的操作
3:与共享服务器或调度进程相关功能的消息和错误信息。
4:物化视图的自动刷新过程中出现的错误。
5:动态参数的修改信息。
告警日志监控:
既然告警日志如此重要,而我们也不可能随时手工去查看告警日志文件,那么我们就必须监控告警日志,那么监控告警日志有哪些方案呢?下面归纳一下
方案1:Tom大师给出的一个方案(仅适用于ORACLE 10g),将告警日志文件信息读入全局临时表,然后我们就可以定制一些SQL语句查询告警日志的信息。
create global temporary table alert_log
( line int primary key,
text varchar2(4000)
)
on commit preserve rows
/
create or replace procedure load_alert
as
l_background_dump_dest v$parameter.value%type;
l_filename varchar2(255);
l_bfile bfile;
l_last number;
l_current number;
l_start number := dbms_utility.get_time;
begin
select a.value, 'alert_' || b.instance || '.log'
into l_background_dump_dest, l_filename
from v$parameter a, v$thread b
where a.name = 'background_dump_dest';
execute immediate
'create or replace directory x$alert_log$x as
''' || l_background_dump_dest || '''';
dbms_output.put_line( l_background_dump_dest );
dbms_output.put_line( l_filename );
delete from alert_log;
l_bfile := bfilename( 'X$ALERT_LOG$X', l_filename );
dbms_lob.fileopen( l_bfile );
l_last := 1;
for l_line in 1 .. 50000
loop
dbms_application_info.set_client_info( l_line || ', ' ||
to_char(round((dbms_utility.get_time-l_start)/100, 2 ) )
|| ', '||
to_char((dbms_utility.get_time-l_start)/l_line)
);
l_current := dbms_lob.instr( l_bfile, '0A', l_last, 1 );
exit when (nvl(l_current,0) = 0);
insert into alert_log
( line, text )
values
( l_line,
utl_raw.cast_to_varchar2(
dbms_lob.substr( l_bfile, l_current-l_last+1,
l_last ) )
);
l_last := l_current+1;
end loop;
dbms_lob.fileclose(l_bfile);
end;
/
但是这又一个问题,如果数据库宕机了的情况下,是无法获取这些错误信息,比方案3(从操作系统监控告警日志)对比,有些特定场景不适用。另外有一定不足之处,就是日志文件比较大的时候,监控告警日志信息比较频繁的时候,会产生不必要的IO操作。
方案2:通过外部表来查看告警日志文件的内容。相当的方便。然后也是使用定制SQL语句来查询错误信息。
SQL> create or replace directory bdump as '/u01/app/oracle/admin/GSP/bdump';
Directory created.
SQL> create table alert_logs
2 (
3 text varchar2(2000)
4 )
5 organization external
6 (
7 type oracle_loader
8 default directory bdump
9 access parameters
10 (
11 records delimited by newline
12 fields
13 reject rows with all null fields
14 )
15 location
16 (
17 'alert_GSP.log'
18 )
19 )
20 reject limit unlimited;
Table created.
SQL> select * from alert_logs;
TEXT
--------------------------------------------------------------------------------
Thu Aug 7 14:50:28 2014
Thread 1 advanced to log sequence 14
Current log# 1 seq# 14 mem# 0: /u01/app/oracle/oradata/GSP/redo01.log
SQL>
方案3:我以前一篇博客归档—监控ORACLE数据库告警日志里面介绍了如何对告警日志进行归档、监控。这些脚本也确实很有效的替我监控着数据库的运行。
告警日志归档
告警日志如果不及时归档,时间长了,告警日志文件会变得非常大,查看、读取告警日志会引起额外的IO开销。所以一般应该按天归档告警日志文件,保留一段时间(例如 90天),超过规定时间的删除。
告警日志是否可以删除呢? 以前有位同事说background_dump_dest目录下的跟踪文件除了告警日志外都能删除,如果删除告警日志文件有可能会产生意想不到的错误,我半信半疑,在测试服务器删除告警日志,验证后发现没有什么影响,系统会重新生成告警日志文件(时间上不会立即生成告警日志文件,而是当进程向告警日志写入记录时就会生成新的告警日志文件)。
参考资料:
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1352202934074
ORACLE告警日志文件的更多相关文章
- Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- ORACLE告警日志
告警日志介绍 告警日志文件是一类特殊的跟踪文件(trace file).告警日志文件命名一般为alert_<SID>.log,其中SID为ORACLE数据库实例名称.数据库告警日志是按时间 ...
- Oracle 监听器日志文件过大导致监听异常
Oracle 监听器日志文件过大导致监听异常 db版本:11.2.0.1 os版本:windows2008 现象: 应用异常,无法连接数据库.登陆数据库服务器,查看监听已经断掉.尝试重启监听,重启失败 ...
- oracle删除日志文件
oracle删除日志文件 删除日志文件的语法例如以下: alter database drop logfile member logfile_name; 删除日志文件须要注意例如以下几点: 1.该日志 ...
- Oracle重做日志文件
一.联机重做日志的规划管理 1.联机重做日志 记录了数据的所有变化(DML,DDL或管理员对数据所作的结构性更改等) 提供恢复机制(对于意外删除或宕机利用日志文件实现数据恢复) 可以被分组管理 11 ...
- Oracle 归档日志文件
今天数据群有人反应网站不能正常打开,经检查Oracle数据库远程连不上,提示信息:ORA-00257: archiver error. Connect internal only, until f ...
- oracle redo日志文件损坏恢复
参考:How to Recover from Loss Of Online Redo Log And ORA-312 And ORA-313 (Doc ID 117481.1) 在线重做日志文件丢失后 ...
- oracle重做日志文件硬盘坏掉解决方法
rman target/ list backup; list backup summary; 删除数据库数据文件夹下的log日志,例如/u01/app/oracle/oradata/ORCL下的所有后 ...
- 初识oracle重做日志文件
转自 http://blog.csdn.net/indexman/article/details/7746948 以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习 ...
随机推荐
- 从零开始构建 Wijmo & Angular 2 小应用
中秋之际,Angular 团队发布 Angular 2 正式版,一款不错的图表控件Wijmo当天宣布支持 . Angular 2移除和替代了 Angular 1.X 中的 directives, co ...
- log4net 记录MVC监控日志
由于MVC自身的特点,可以让我们记录每一个Controller下Action的执行时间以及View视图渲染完成的时间,本文采用log4net记录MVC每个Action的执行时间和View视图渲染完成时 ...
- 2015-10-22 前思后想,决定重构表结构,免得这个APP死在数据表设计上
新的设计稿出来了,如下,原来旧的是第二张 ------- 原来的评论级数只有2级,现在是不限,2级的意思是,用户评论该帖是一级,用户的评论能被人评论,这是第2级,评论评论的评论不能够再被 ...
- 【jQuery小实例】js 插件 查看图片
---本系列文章所用使用js均可在本博客文件中找到. 像淘宝一样,鼠标放在某一件商品上,展示大图信息,甚至查看图片的具体部位.给人超炫的效果,这种效果实现基于js文件和js插件.大致可以分为三步,添加 ...
- hibernate笔记--继承映射关系的三种实现方式
单表继承映射(一张表): 假设我们现在有三个类,关系如下: Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映 ...
- Mybatis-mapper-xml-基础
今天学习http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html.关于mapper.xml的sql语句的使用. 项目路径:https://github.c ...
- [Asp.net 5] Localization-简单易用的本地化
本地化也叫国际化,就是做多语言程序时,可以一键式将当前语言切换到另外一种语言.对于跨国企业或者和国外有业务往来的公司特别重要:就算一个普通公司的门户如果支持中.英.繁体,也会让人觉得高大上.有没有呀, ...
- 前端 angular 和 bootstrap 的安装步骤
1.安装bower模块: npm install -g bower --registry=http://registry.npm.taobao.org 2.创建.bowerrc 文件存放 前端相关的模 ...
- Linux下查看版本号,查看存在的普通用户
1. 查看版本号 uname -a ## 查看所有信息 uname --help ## 查看关于uname命令的帮助 2. 查看存在的普通用户 vim /etc/passwd ## 查看passwd文 ...
- ABySS非root权限安装
本文转自 http://yangl.net/2015/11/12/abyss_install/ ABySS: ABySS is a de novo, parallel, paired-end seq ...
