Re: oracle11 logs, the sequel.
Date: 16 Jan 2008 10:26:40 GMT
Message-ID: <478ddbdf$0$1341$834e42db@reader.greatnowhere.com>
On Tue, 15 Jan 2008 10:09:52 -0800, joel garry wrote:
> Just thinking out loud:
>
> Could you use your favorite tool to parse it into single lines ending
> with the </msg>, tail some configurable number of lines, then parse back
> breaking lines on a space less than 78 or \>$?
Joel, here is the first cut:
#!/usr/bin/perl -w
use strict;
use XML::Parser; use XML::Parser::EasyTree; use Data::Dumper;
$XML::Parser::Easytree::Noempty=1;
my $p=new XML::Parser(Style=>'EasyTree'); my $xml;
while (<>) {
if (/^\s*<msg>/) { $xml=$; } else { $xml .= $_; } if (m|^\s*</msg>|) { my $tree=$p->parse($xml); my $msg=$tree->[0]; my $msgtxt=$msg->{content}->[1]->{content}->[0]->{content}; my $time=$msg->{attrib}->{time}; my $type=$msg->{attrib}->{type}; my $component=$msg->{attrib}->{comp_id}; $time=~/(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})/; $time="$1 $2"; print "COMPONENT:$component TYPE:$type TIME:$time MSG:$msgtxt\n"; $xml=""; }
}
This is the output it produces:
COMPONENT:rdbms TYPE:UNKNOWN TIME:2008-01-14 22:00:00 MSG:Setting Resource Manager plan SCHEDULER[0x2C09]:DEFAULT_MAINTENANCE_PLAN via scheduler window
COMPONENT:rdbms TYPE:UNKNOWN TIME:2008-01-14 22:00:00 MSG:Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter
COMPONENT:rdbms TYPE:UNKNOWN TIME:2008-01-14 22:00:11 MSG:Mon Jan 14 22:00:11 2008
COMPONENT:rdbms TYPE:UNKNOWN TIME:2008-01-14 22:00:11 MSG:Logminer Bld: Lockdown Complete. DB_TXN_SCN is UnwindToSCN (LockdownSCN) is 4091395735
COMPONENT:rdbms TYPE:UNKNOWN TIME:2008-01-14 22:01:40 MSG:Thread 1 advanced to log sequence 535
COMPONENT:rdbms TYPE:UNKNOWN TIME:2008-01-14 22:01:40 MSG: Current log# 1 seq# 535 mem# 0: /oradata/test11/redo01.log
COMPONENT:rdbms TYPE:UNKNOWN TIME:2008-01-15 02:00:00 MSG:Clearing Resource Manager plan via parameter
It would be rather trivial to load this into a table and index it by time,type and component. Of course, you'd need modules XML::Parser and XML::Parser::EasyTree. I will need to test DBMS_SYSTEM.KSDWRT.
-- Mladen Gogala http://mgogala.freehostia.comReceived on Wed Jan 16 2008 - 04:26:40 CST