пʼятниця, 14 серпня 2015 р.

Скрипт пересоздания redo с другим размером


declare
  status varchar(30);
  lim    number := 50;
begin
  for i in (select *
              from v$logfile
             where type = 'ONLINE'
               and group# in
                   (select group# from v$log where bytes / 1024 / 1024 < lim)) loop
    select status into status from v$log where group# = i.group#;
    while status != 'INACTIVE' loop
      execute immediate 'alter system switch logfile';
      execute immediate 'alter system checkpoint';
      select status into status from v$log where group# = i.group#;
    end loop;
    execute immediate 'alter database drop logfile group ' || i.group#;
    execute immediate 'alter database add logfile group ' || i.group# ||
                      ' (''' || i.member || ''') size '||lim||'M reuse';
  end loop;
end;


lim - минимальный размер файла в Мб. Все файлы пересоздаются на месте старых. Скрипт нормально обрабатывает standby-логи, но убивает всех мемберов, кроме первого попавшегося, если их больше одного.

Немає коментарів:

Дописати коментар