24.02.2014 14:32
OlegON
 
В общем, патовая ситуация с оборудованием привела к тому, что 24х7-заливка "захлебывала" сервер архивлогами. Вариантов с миграцией куда-то еще, как нет вариантов со стендбаем (в силу отсутствия живого сервера с такой же архитектурой), поэтому сделал проще. Если архивлогов становится больше 15, то морожу транзакции к едрене фене. База не только обрабатывать, но и хранить данные должна. Т.е. без бекапов не жизнь... Если архивлогов становится меньше 3 - размораживаю и дальше.
Код:
create or replace procedure count_archlogs as
begin
declare
c integer;
s varchar(200);
begin
select count(*) into c from v$archived_log where DELETED='NO' and dest_id=1;
select active_state into s from v$instance;
if (s='NORMAL' and c>15) then 
execute immediate 'alter system quiesce restricted';
else
if (c<3) then
execute immediate 'alter system unquiesce';
end if;
end if;
exception when others then null; 
end;
end;
/
Код:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'cnt_archlogs',
job_type => 'PLSQL_BLOCK',
job_action => 'count_archlogs;',
repeat_interval => 'FREQ=MINUTELY; INTERVAL=1;',
enabled => TRUE
);
END;
/
Часовой пояс GMT +3, время: 06:49.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.