AlexVin |
---|
равнозначны ли gbak без ключа -g и gfix -sweep или нет? каждую ночь делается бэкап, но значение oldest transaction не меняется sweep интервал стоит 0 получается, что gfix -sweep тоже надо запускать независимо от бэкапирования? |
gbak без ключа '-g' разрешает движку собирать мусор в базе, пока этот самый бекап делается. Например, если ваш бекап идёт 30 минут и за это время какой-нибудь коннект выполнит select count(*) from <некая_таблица_с_мусором>, то при отсутствии ключика '-g' коннект сей начнёт собирать мусор (см.
кооп. сборка мусора). Но коннект этот мог и не обращаться к "некой_таблице_с_мусором" и тогда мусор так и остался бы неубранным. Сам gbak мусор в .fdb НЕ собирает, но в .fbk этот мусор никогда не пишется.
gfix -sweep - это когда вы сами стартуете сборку мусора.
То, что при gfix -sweep не меняется значение OIT, означает:
1) наличие активной транзакции, которая висит много дней. Используйте mon$-таблицы, чтобы определить адрес соотв-щей машины.
2) наличие limbo-транзакции (может изредка возникать при онлайн-репликации, если один из серваков накрывается при коммите). Лимбо-транзакцию нельзя увидеть по gstat -h, только по show database в isql.