管理很多个数据库的归档日志时, 比较好的功能是保留指定容量的归档, 一般来讲归档所在的卷是独立的, 以容易方式设置比设置归档产生时间和归档日志个数都有优势. 下面是用Perl实现了这个功能, 传入一个日志序号(通常传入最大的日志号)和一个容量(以GB为单位).

#
# getLogSequenceBySize
#
sub getLogSequenceBySize
{
  my ($logseq, $szlimit) = @_;
  my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,
      $size,$atime,$mtime,$ctime,$blksize,$blocks);
  my $totalsz = 0;
  my ($archive_log);

  $szlimit = 20 if (!defined($szlimit) or $szlimit < 20);

  while ($totalsz < $szlimit)
  {
      $archive_log = findLogBySequence($logseq);
      if (-e $archive_log)
      {
        ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,
            $size,$atime,$mtime,$ctime,$blksize,
            $blocks) = stat($archive_log);
        $totalsz = $totalsz + ($size/1024/1024/1024);
        $logseq --;
      }
      else
      {
        last;
      }
  }

  scalar $logseq;
}

    数据库越多, 这样的智能脚本越有发挥余地. 有时间整一个Windows上的Perl脚本版本, Windows上的Oracle还是很多的.