Сен 272013
 

Режим block change tracking в ORACLE 10g и выше позволяет уменьшить время инкрементального бэкапа за счёт ведения лога изменённых блоков с момента бэкапа предыдущего уровня.

Как это работает?


При обычном инкрементальном бэкапе RMAN должен пройтись по всем файлам данных и найти все блоки, SCN которых больше, чем SCN, записанный при бэкапе предыдущего уровня. Так как SCN хранится в заголовке каждого блока, то приходится считывать все блоки. Очевидно, что если база большая, это не только занимает много времени, но и создаёт избыточную нагрузку на систему ввода-вывода.
Режим block change tracking, будучи включённым, заставляет процесс CTRW (Change tracking Writer) записывать в файл все изменения блоков данных с момента последнего бэкапа. Поэтому RMAN'у теперь нет необходимости сканировать все блоки всех файлов данных, достаточно просто пройти по логу (его типичный размер - десятки, максимум пара сотен мегабайт), взять оттуда номера изменившихся блоков, и прицельно считать их из файлов данных.
Включать и отключать данный режим можно на ходу.

Включаем block change tracking (у нас ASM):

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING 
  USING FILE '+MYDG';

Отключаем:

ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

Смотрим статус:

SELECT * FROM v$block_change_tracking;

Судя по документации, размер лога составляет примерно 1/30000 от размера базы. Никакой деградации производительности и других проблем при использовании не замечено. Рекомендую.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)