Страница 1 из 1
очистка журнальных таблиц
Добавлено: 26 авг 2005, 20:08
Slavik
Удалил старые данные средствами галактики
support-журнализация-сервис-чистка журнала
, но в табличных пространствах oracle место не освободиось
если удалять через sql - truncate, то место освобождается.
Подскажите в чем различия этих способов.
если удалять всю информацию из журнальных таблиц, то оба способа должны привести к одному и тому же результату, а на практике наоборот? или я не прав?
Добавлено: 29 авг 2005, 09:15
oiko
truncate сжимает оракловую таблицу удаляя из нее физически не используемое место Галактика об этом не знает.
Добавлено: 29 авг 2005, 11:22
Slavik
oiko писал(а):truncate сжимает оракловую таблицу удаляя из нее физически не используемое место Галактика об этом не знает.
тогда куда же удаляются записи из журнальных таблиц галактикой?
использование coalesce для табличных пространств не помогает.
или галактика переписывает данные при удалении из одних таблиц в другие, поэтому место и не освобождается?
Добавлено: 29 авг 2005, 11:39
oiko
Вообщето я чушь спорол truncate удаляет записи без роллбэка в отличии от delete. А как галактика поступает с журналом надо посмотреть. Вообще-то должен проходить запрос на delete/
Добавлено: 29 авг 2005, 12:17
oiko
Difference between DELETE and TRUNCATE
TRUNCATE will remove all rows of data from a table. DELETE can be used to remove all rows of data from a table or to remove selected rows of data from a table.
TRUNCATE doesn't use any rollback or undo segments. The TRUNCATE operation cannot be reversed, but the DELETE operation can be rolled back.
TRUNCATE will usually execute much quicker than DELETE.
No ON DELETE triggers are fired by the TRUNCATE actions.
TRUNCATE can be used to reclaim all extents except for the INITIAL extent. You can keep all extents with the REUSE STORAGE clause. These operations are not available with the DELETE statement.
Добавлено: 06 фев 2007, 19:24
Gameus_
Поделитесь плиз опытом, кто как очищает журнал, а то место тает на глазах.....
Добавлено: 07 фев 2007, 12:37
yuri_z
Ограничение на кол-во дней хранения в настройке журнализации укажите поменьше и не будет он больше распухать. А ежели хорошо поработаете можно иногда его ужимать вручную после работы.
Добавлено: 08 апр 2007, 00:11
Radik
пишу из дому, по ентому синтаксис может иметь кучу ошибок, но суть постараюсь донести
truncate это принципиально другой механизим в отличии от delete
при truncate просто блоки данных помечаются как свободные (почти как форматирование, но без возможности восстановления)
с журналами боролись долго и всякими спосабами
способ 1 (делитом)
ночью запускается процедура
которая в цикле делает
declare
j_nrec char(16);
i integer;
cursor c1 as
select nrec (или еще что нить) from gal.x$journal
where "поле с датой" < (sysdate-"количество дней хранения журнала")
begin
open c1;
i:=0;
loop
c1 fetch into j_nrec
exit when c1 notfound;
delete from gal.x$journal t1
where t1.nrec=j_nrec
i:=i+1;
if i=50 then
coommit;
i:=0;
end if ;
end loop;
commit;
end;
способ 2 (транкейтом)
select 'TRUNCATE TABLE GAL.'||tablename||' ;'
from all_tables
where owner='GAL'
and tablename like 'J$%'
в результате получите чудный скрипт, который оттранкейтит все таблицы журнализации если его запустить. Не забудте в конец скрипта добавить trucate table gal.x$journal
второй способ более быстрый, первый более корректный (ИМХО)
но первый начнет задыхаться когда записи в журналах начнут измеряться несколькими миллионами
Добавлено: 17 апр 2007, 12:08
VAt
А чем не устраивает стандартное галактическое сжатие журнала? да долго идет, часа полтора-два, но мы запускаем в 4 утра когда вбазе никого нет. Сейчас держим журнал 45 дней, что в полне приеслимо с учетом того, что бэкапы храним помесячно. На моей практике были случаи, когда для расследований приходилось поднимать базы двух летней давности, причем нужны были и журналы.
Добавлено: 25 апр 2007, 18:48
gritv
У нас настроена система архивирования журнала. Один раз в неделю ночью журнал архивируется, а затем удаляется. Архивным журналом можно воспользоваться в любой момент.