%channel_db_files = (
'ch1' => {
'00010' => '/foo/oradata/bar/foodb-lob01.dbf',
'00004' => '/foo/oradata/bar/foodb-data02.dbf',
'00007' => '/foo/oradata/bar/undotbs02.dbf'
},
'ch2' => {
'00003' => '/foo/oradata/bar/tools01.dbf',
'00006' => '/foo/oradata/bar/foodb-index11.dbf',
'00002' => '/foo/oradata/bar/undotbs01.dbf'
},
'ch3' => {
'00005' => '/foo/oradata/bar/xml01.dbf',
'00009' => '/foo/oradata/bar/foodb-index01.dbf',
'00001' => '/foo/oradata/bar/system01.dbf',
'00008' => '/foo/oradata/bar/foodb-data01.dbf'
}
);
####
#----------------8<----------------
#!/usr/bin/perl
use strict;
use Data::Dumper;
my %channel_db_files = ();
my $RMAN_NO_OF_CHANNELS = 3;
my $RMAN_RUN_CH_NAME = 'ch';
LOOP: while () {
chomp;
foreach my $i ( 1 .. ${RMAN_NO_OF_CHANNELS} ) {
if ( /$RMAN_RUN_CH_NAME$i/ ) {
while () {
chomp;
if ( /^input datafile/ ) {
my ($file_number, $file_name) = $_ =~ /number=(\d+)\s+name=(.*)/;
$channel_db_files{"ch$i"}{$file_number} = $file_name;
} else {
redo LOOP;
}
}
}
}
}
print Dumper \%channel_db_files;
__DATA__
Starting backup at 2011-05-31 02:00:05
channel ch1: starting compressed full datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00010 name=/foo/oradata/bar/foodb-lob01.dbf
input datafile file number=00004 name=/foo/oradata/bar/foodb-data02.dbf
input datafile file number=00007 name=/foo/oradata/bar/undotbs02.dbf
channel ch1: starting piece 1 at 2011-05-31 02:00:06
channel ch2: starting compressed full datafile backup set
channel ch2: specifying datafile(s) in backup set
input datafile file number=00003 name=/foo/oradata/bar/tools01.dbf
input datafile file number=00006 name=/foo/oradata/bar/foodb-index11.dbf
input datafile file number=00002 name=/foo/oradata/bar/undotbs01.dbf
channel ch2: starting piece 1 at 2011-05-31 02:00:06
channel ch3: starting compressed full datafile backup set
channel ch3: specifying datafile(s) in backup set
input datafile file number=00008 name=/foo/oradata/bar/foodb-data01.dbf
input datafile file number=00009 name=/foo/oradata/bar/foodb-index01.dbf
input datafile file number=00005 name=/foo/oradata/bar/xml01.dbf
input datafile file number=00001 name=/foo/oradata/bar/system01.dbf
channel ch3: starting piece 1 at 2011-05-31 02:00:07
channel ch1: finished piece 1 at 2011-05-31 02:34:54
#----------------8<----------------
####
----- ----------------------------------------
File# File Name
----- ----------------------------------------
1 /foo/oradata/bar/system01.dbf
2 /foo/oradata/bar/undotbs01.dbf
3 /foo/oradata/bar/tools01.dbf
4 /foo/oradata/bar/foodb-data02.dbf
5 /foo/oradata/bar/xml01.dbf
6 /foo/oradata/bar/foodb-index11.dbf
7 /foo/oradata/bar/undotbs02.dbf
8 /foo/oradata/bar/foodb-data01.dbf
9 /foo/oradata/bar/foodb-index01.dbf
10 /foo/oradata/bar/foodb-lob01.dbf