`
wuhuizhong
  • 浏览: 682821 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

分析Oracle database alert log

    博客分类:
  • ROR
阅读更多
1.本地alert log
# ora_err.rb
# usage: ruby ora_err.rb < alert.log > ora_err.txt
require 'parsedate'

delimiter = "\t" 
date_mask = '%Y-%m-%d %H:%M:%S'

months = { 'Jan'=>1, 'Feb'=>2, 'Mar'=>3, 'Apr'=>4, 'May'=>5, 'Jun'=>6,
           'Jul'=>7, 'Aug'=>8, 'Sep'=>9, 'Oct'=>10, 'Nov'=>11, 'Dec'=>12 }

class OraErr
  attr_reader :sqlcode, :begin_time, :sqlerrm
  def initialize(sqlcode,begin_time,sqlerrm)
    @sqlcode = sqlcode
    @begin_time = begin_time
    @sqlerrm = sqlerrm
  end
end   

this_log = nil
last_log = nil
this_time = nil

thisTime = nil

$stdin.each() { |line|

  next if $stdin.eof

  line.chomp!

  if line =~ /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat)/ then

    thisTime = Time.local(*ParseDate.parsedate(line))

  elsif line =~ /^ORA-([0-9]+)/

    sqlcode = $1
    sqlerrm = line

    this_log = OraErr.new(sqlcode,thisTime,sqlerrm)

    if (last_log!=nil)

      # print the last log
      print \
          last_log.begin_time.strftime(date_mask),delimiter,
          last_log.sqlerrm,"\n" 

    end

    last_log = this_log
    this_log = nil

  end

}


2.遠端alert log
#scan_remote.rb
#usage:ruby scan_remote.rb > scan.txt
require 'rubygems'
require 'net/ssh'
require 'parsedate'

delimiter = "\t" 
date_mask = '%Y-%m-%d %H:%M:%S'

months = { 'Jan'=>1, 'Feb'=>2, 'Mar'=>3, 'Apr'=>4, 'May'=>5, 'Jun'=>6,
           'Jul'=>7, 'Aug'=>8, 'Sep'=>9, 'Oct'=>10, 'Nov'=>11, 'Dec'=>12 }

class OraErr
  attr_reader :sqlcode, :begin_time, :sqlerrm
  def initialize(sqlcode,begin_time,sqlerrm)
    @sqlcode = sqlcode
    @begin_time = begin_time
    @sqlerrm = sqlerrm
  end
end   

this_log = nil
last_log = nil
this_time = nil

thisTime = nil

Net::SSH.start('192.168.0.1', 'oracle',
                   :password=>'oraclepass') do |session|
  cmd = 'cat /orasys/admin/sid/bdump/alert_sid.log'
  #session.exec(cmd).each()
  session.open_channel do |channel|
    channel.on_data do |ch, data|
      data.each_line do |line|
        line.chomp!        
        if line =~ /^(Sun|Mon|Tue|Wed|Thu|Fri|Sat)/ then    
          begin
            thisTime = Time.local(*ParseDate.parsedate(line)) 
          rescue # 忽略無效日期
            next
          end    
          #print \
          #ParseDate.parsedate(line) ,line,"\n" 
        elsif line =~ /^ORA-([0-9]+)/
          sqlcode = $1
          sqlerrm = line
          this_log = OraErr.new(sqlcode,thisTime,sqlerrm)    
          if (last_log!=nil)      
            # print the last log
            print \
              last_log.begin_time.strftime(date_mask),delimiter,
              last_log.sqlerrm,"\n"    
          end    
          last_log = this_log
          this_log = nil    
        end # line  
      end # data
    end # channel
    channel.exec cmd
  end # session    
  session.loop
end #NET
分享到:
评论
1 楼 wuhuizhong 2011-11-04  
Ruby 1.9

require 'date/format'
require 'time'

text = "Tue Jun 28 11:58 2011"
array = Date._parse(text, false).values_at(:year, :mon, :mday, :hour, :min, :sec, :zone, :wday)
time = Time.mktime(*array)
puts time

相关推荐

    Oracle Database12c DBA官方手册 .rar

    10. **故障排查**:提供诊断工具和技巧,如Alert Log、Trace文件的解读,以及如何处理常见的错误和异常。 11. **数据库升级与迁移**:指导如何从旧版本的Oracle数据库升级到12c,以及不同平台之间的数据库迁移。 ...

    Oracle Database 11g DBA手册

    Oracle提供了一系列诊断工具,如Trace、Alert Log、TKPROF等,帮助DBA定位和解决问题。熟悉这些工具的使用,结合Oracle文档和社区资源,能够迅速解决数据库出现的问题。 总之,Oracle Database 11g DBA手册将全面...

    Oracle Database 10g Administration Workshop

    10. **故障诊断与问题解决**:学习如何识别和解决常见的数据库错误,以及如何使用诊断工具如trace文件、alert log和DBA views来定位问题。 通过这个工作坊,你将获得实际操作的经验,增强在生产环境中管理Oracle ...

    Oracle Database 10g Administration Workshop II中文版

    Oracle 10g 提供了如trace文件、alert log和diag trace等诊断工具,帮助DBA理解错误原因并制定解决方案。 总之,Oracle Database 10g Administration Workshop II中文版是一个全面的学习资源,涵盖了Oracle数据库...

    Oracle Database 11g Administration Workshop II

    - 使用Alert Log和Trace文件:诊断数据库异常和性能问题。 - 使用ADDM(Automatic Database Diagnostic Monitor)进行自动性能诊断。 Oracle Database 11g Administration Workshop II 教程旨在帮助DBAs掌握这些...

    Oracle Database 11g RAC Administration

    Oracle Database 11g RAC(Real Application Clusters)是一种高级数据库技术,它允许数据库在多台服务器上同时运行,提供了高可用性和可扩展性。RAC通过共享存储和网络资源,使得多个实例可以共同访问单个数据库,...

    Oracle Database 11g DBA手册@www.java1234.com.pdf

    这可能包括日志分析、跟踪文件解读,以及使用各种诊断工具,如Trace、Alert Log和ADDM(Automatic Diagnostic Monitor)。 最后,Oracle 11g的自动化和脚本化管理也是DBA需要掌握的技能。通过PL/SQL、SQL脚本和...

    Oracle Database Administrators Guide 10g Release 2 (10.2).pdf

    Oracle提供了一些诊断工具,如trace文件和Alert Log,可以帮助定位问题。 总之,《Oracle Database Administrators Guide 10g Release 2 (10.2)》涵盖了数据库管理员在日常工作中可能遇到的所有关键领域,是学习和...

    使用Oracle Database实现可管理性.docx

    "故障诊断"是Oracle Database另一个强大的管理特性,ADR结合Alert Log和Trace文件,能快速定位和解决故障。同时,集成的系统监视工具提供实时的健康检查,帮助DBA预防潜在问题。 "Exadata管理和云整合"体现了Oracle...

    Oracle Database Installation Guide 11g Release 2 (11.2) for Linux

    12. **故障排查**:学习如何识别和解决问题,如通过alert.log日志分析错误,使用trace文件定位性能瓶颈,以及利用DBA工具进行诊断。 13. **维护与更新**:定期更新数据库和操作系统补丁,以保持系统安全和性能。...

    Oracle Database 10g完全参考手册

    11. **故障诊断与问题解决**:提供一系列故障排查工具和技巧,如alert log、trace文件分析,以及如何利用DBA日志和性能监视工具来定位和解决问题。 12. **企业网格计算**:介绍Oracle 10g的网格计算理念,如何构建...

    e10897-Oracle Database Oracle 11.2 - 2 Day DBA-280

    理解如何使用Alert Log和Trace文件进行问题定位。 7. **数据库实例与服务管理**:启动、关闭和管理数据库实例,以及配置Oracle服务以适应不同的操作系统环境。 8. **自动存储管理(ASM)**:Oracle ASM是一种集成...

    Oracle Database Administrator's Guide 11g Release 2 (11.2)-1082

    - 使用Alert Log、Trace文件和Oracle Enterprise Manager诊断问题。 - 学习如何通过DBA视图来监控数据库状态和性能指标。 8. **升级与迁移**: - 计划和执行从旧版本到11g R2的数据库升级。 - 学习数据迁移工具...

    Oracle Database 10g OCP Certification All-in-One Exam Guide.pdf

    - Alert Log和Trace文件:学习如何解读这些日志以定位问题。 - SQL Trace和10046事件:利用这些工具进行性能调优。 7. **高可用性与容错** - Standby数据库:创建和维护物理和逻辑备库,实现灾难恢复。 - RAC...

    Oracle数据库实验报告

    本实验报告将探讨两个核心的Oracle数据库管理任务:使用Database Configuration Assistant (DBCA) 创建数据库以及利用Alert Log进行监控与故障排查。 首先,我们来详细讲解如何使用DBCA创建数据库。DBCA是一个图形...

    MasterExam模拟考试引擎——Oracle DataBase 10g OCP认证考试指南全册(含OCA)

    10. **故障诊断与排查**:了解V$视图、alert log、trace文件的使用,以及如何利用DBA工具诊断并解决问题。 这个压缩包提供的模拟考试引擎能够模拟真实考试环境,帮助考生熟悉考试格式和时间压力,同时,电子书和...

    ORACLE数据库一次意外宕机的分析处理实记(ora-1578)[文].pdf

    在故障后,我们收集了system.txt系统日志(通过errpt -a获得)和alert_soa.log以及oracle的跟踪日志trc。通过分析trc日志,我们发现了以下信息: /app/oracle/product/10.2.0/admin/soa/bdump/soa_mmon_307366.trc ...

    oracle error message oracle code error oracle返回码

    4. **检查服务器日志**:Oracle的alert.log或其他服务器日志文件可能包含关于错误的额外上下文信息。 在实际工作中,了解和掌握Oracle错误代码可以帮助我们快速定位问题,提高数据库管理的效率。通过分析错误消息和...

    Oracle的故障诊断及分析方法

    1. **日志分析**:Oracle的日志文件(包括redo log files和alert log)提供了大量的错误信息和事件记录,是定位问题的第一步。例如,当数据库发生异常时,通过查看alert.log可以获取到错误发生的时机和详细信息。 2...

Global site tag (gtag.js) - Google Analytics