如何查看数据库alert数据库日志文件清理

查看: 5393|回复: 14
关于查看alert日志的方法
论坛徽章:1
都知道alert日志在oracle的bdump目录,现在有需求想通过select的方法查看里面的内容,大家有方法吗,
论坛徽章:3
Tom大师的经典作品里面有写,用外部表的方法
认证徽章论坛徽章:361
论坛徽章:1
<font color="# 发表于
Tom大师的经典作品里面有写,用外部表的方法
求问是哪部作品
论坛徽章:1
<font color="# 发表于
Tom大师的经典作品里面有写,用外部表的方法
好吧&&我知道了
论坛徽章:1
1、查看预警日志文件(alert_sid.log)的位置
SQL& show parameter dump
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_core_dump string partial
background_dump_dest string /u01/oracle/admin/bdump
core_dump_dest string /u01/oracle/admin/cdump
max_dump_file_size string 10240
shadow_core_dump string partial
user_dump_dest string /u01/oracle/admin/udump
2、创建目录alert
注意:directory不是实体,只是一个指向,指向os中一个路径
SQL& create or replace directory alert as '/u01/oracle/admin/bdump';
Directory created.
3、创建外部表alert
SQL& create table alert
& &&&(log varchar2(1000))
& & organization external
& &(type oracle_loader
& &default directory alert
& &access parameters
(records delimited by newline)
location ('alert_PROD.log'))
4、查看alert中的内容
SQL& select *
论坛徽章:3
alert_PROD.log这个是啥玩意
认证徽章论坛徽章:40
huangqiude 发表于
1、查看预警日志文件(alert_sid.log)的位置
SQL& show parameter dump
NAME TYPE VALUE
认证徽章论坛徽章:40
db亮仔 发表于
alert_PROD.log这个是啥玩意
实际的告警日志文件名。
论坛徽章:0
不错,顶了
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号【alert】每周自动备份alert日志文件
上一篇 / 下一篇
22:23:24 / 个人分类:备份与恢复
查看( 159 ) / 评论( 0 ) / 评分( 0 / 0 )
定期备份Oracle alert日志文件是值得推崇的,因为非常繁杂的信息都会写入到alert日志文件中。随着时间的推移,alert日志将会变得越来越大,这样对于检索和定位故障带来了不便。
1.alert日志的管理方法
Oracle的alert日志文件的特殊性在于,即便该文件被误删除也不会对系统产生任何影响。当有新的警告信息需要写入到alert日志时,如找不到对应的警告日志文件,警告日志文件将会被系统自动创建。
基于这个特点,我们可以通过定期将alert日志重命名的方式实现备份管理。
将过大的alert文件拆分为多个小的文件的好处很多,例如在寻求Oracle服务时,可以比较便捷的找到并提供相应的警告日志。
2.实现alert的备份管理
使用Shell脚本结合cron可以完成每周重命名的目的。
具体实现如下。
1)重命名alert日志文件的Shell脚本
ora10g@asdlabdb01 /home/oracle$ vi mv_alert_log.sh
mv /oracle/app/oracle/admin/ora10g/bdump/alert_ora10g.log /oracle/app/oracle/admin/ora10g/bdump/alert_ora10g.`date +"%Y%m%d%H%M%S"`
没错,就包含这么简单的一条重命名命令。
重命名后的样例如下:
alert_ora10g.01
2)授予该脚本执行权限
ora10g@asdlabdb01 /home/oracle$ chmod +x mv_alert_log.sh
3)结合cron每周执行一次该重命名脚本
ora10g@asdlabdb01 /home/oracle$ crontab -e
crontab: no changes made to crontab
在cron中添加一条计划任务,内容如下:
10 1 * * 6 /home/oracle/mv_alert_log.sh 1&/dev/null 2&&1
表示每周六的1:10完成一次alert日志重命名备份的工作。
一句话:alert日志文件需要特殊关照和管理。
除了本文介绍的通过重命名方式管理alert日志文件之外,欢迎好朋友们提出更多更好的方法。
Good luck.
-- The End --
共1页(1/1)
故障模拟过程 1、将数据库以 ABORT 方式关闭 S ALERT 日志中记录...没有太多的 365 天保留元数据信息 RMAN 自动备份功能可以保留控制文件 2 创建 ......oracle日志管理与数据备份_计算机软件及应用_IT/计算机_专业资料。日志管理与数据...ALERT TABLESPACE USER BEGIN BACKUP; HOST 用主机拷贝命令copy 文件 4.ALERT ......alert:警告警告,已经很有问题的等级,比 crit 还要...所以现在每天系统都会自动的查看 logrotate ! 案例:...保存五个备份文件; 备份文件不要压缩 [root@linux ......20、有定时执行的的其他软件,比如自动备份文件。 21、在 linux/unix 下看 var 目录下的系统文件,有无异常信息。 22、看 alert 日志文件有无异常。 23、登陆......通常应广播到所有用户; alert 告警,当前状态必须立即...logrotate能够自动完成日志的压缩、备份、删除工作 ...每周清理一次日志文件 weekly // 保存过去四周的日志......>归档日志 Alert log files -->告警日志 Trace ...一般日志组大小应满足自动切换间隔至少 15-20 分钟...重命名或重定位之后建议立即备份控制文件 重定位及重......然而告警日志以文本文件, 按时间的先后顺序不断累积...一个外部表 alert_log_disk 使得查看告警日志可以...的备份和备份恢复的概念请参考: Oracle 冷备份 ......日志更新和备份......系统日志中发现疑点,而 logrotate 却是每周清空这样的窘况。 这 种情况的发生乍看之...紧急情况 LOG_ALERT:应该被立即改正的问题,如系统......如果 DBWn 在完成其检查点之前就想使用日志文件,就会在数据库的 ALERT 日志中...假设你每周的星期六做一次备份。现在是星期五下午,已经生成了这一周的数百个......拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(38dbaf75b2dd663a-ua98).
重新安装浏览器,或使用别的浏览器Posts - 750,
Articles - 0,
Comments - 1467
15:48 by 潇湘隐者, ... 阅读,
告警日志介绍
& 告警日志文件是一类特殊的跟踪文件(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_&NAME
VALUE--------------------- ----------- ------------------------------background_dump_dest
/u01/app/oracle/admin/GSP/bdumpSQL&
告警日志以及所有后台跟踪文件都会被写至BACKGROUND_DUMP_DEST参数所指定的目录。
在ORACLE 11g 以及ORACLE 12c中,告警日志文件的位置有了变化。主要是因为引入了ADR(Automatic Diagnostic Repository:一个存放数据库诊断日志、跟踪文件的目录),关于ADR对应的目录位置可以通过查看v$diag_info系统视图。如下所示(ORACLE 12c )
SQL& select * from v$diag_&INST_ID NAME
CON_ID------- -------------------- -------------------------------------------------- -------
1 Diag Enabled
1 ADR Base
/u01/app/oracle
1 ADR Home
/u01/app/oracle/diag/rdbms/ignite/epps
1 Diag Trace
/u01/app/oracle/diag/rdbms/ignite/epps/trace
1 Diag Alert
/u01/app/oracle/diag/rdbms/ignite/epps/alert
1 Diag Incident
/u01/app/oracle/diag/rdbms/ignite/epps/incident
1 Diag Cdump
/u01/app/oracle/diag/rdbms/ignite/epps/cdump
1 Health Monitor
/u01/app/oracle/diag/rdbms/ignite/epps/hm
1 Default Trace File
/u01/app/oracle/diag/rdbms/ignite/epps/trace/epps_
ora_13810.trc&
1 Active Problem Count 0
1 Active Incident Coun 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]$ lslog_1.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,
varchar2(4000))on commit preserve rows/&&&&&create or replace procedure load_alertas
l_background_dump_dest
v$parameter.value%
l_filename
varchar2(255);
number := dbms_utility.get_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_&&&&
l_bfile := bfilename( 'X$ALERT_LOG$X', l_filename );
dbms_lob.fileopen( l_bfile );&&&
l_last := 1;
for l_line in 1 .. 50000
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 )
utl_raw.cast_to_varchar2(
dbms_lob.substr( l_bfile, l_current-l_last+1,
l_last ) )
l_last := l_current+1;
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
varchar2(2000)
organization external
type oracle_loader
default directory bdump
access parameters 10
records delimited by newline 12
reject rows with all null fields 14
location 16
'alert_GSP.log' 18
reject limit&Table created.&SQL& select * from alert_&TEXT--------------------------------------------------------------------------------Thu Aug
7 14:50:28 2014Thread 1 advanced to log sequence 14
Current log# 1 seq# 14 mem# 0: /u01/app/oracle/oradata/GSP/redo01.log&SQL&
& 方案3:我以前一篇博客里面介绍了如何对告警日志进行归档、监控。这些脚本也确实很有效的替我监控着数据库的运行。
& 告警日志归档
& 告警日志如果不及时归档,时间长了,告警日志文件会变得非常大,查看、读取告警日志会引起额外的IO开销。所以一般应该按天归档告警日志文件,保留一段时间(例如 90天),超过规定时间的删除。
告警日志是否可以删除呢? 以前有位同事说background_dump_dest目录下的跟踪文件除了告警日志外都能删除,如果删除告警日志文件有可能会产生意想不到的错误,我半信半疑,在测试服务器删除告警日志,验证后发现没有什么影响,系统会重新生成告警日志文件(时间上不会立即生成告警日志文件,而是当进程向告警日志写入记录时就会生成新的告警日志文件)。
& 参考资料:
/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4

我要回帖

更多关于 收缩数据库日志文件 的文章

 

随机推荐