RMAN INCREMENTAL

--------------------------------------------------------------------------------
--- Инкрементное резервное копирование ---
--------------------------------------------------------------------------------
/*
Утилита RMAN позволяет выполнять инкрементное резервное копирование 2 следующих видов.

1) Дифференциальное резервное копирование(differential backup). Подразумевает 
выполнение резервного копирования всех блоков, которые изменились с момента 
проведения последнего инкрементного резервного копирования на уровне либо 1, либо 0.
2) Кумулятивное резервное копирование(cumulative backup). 
Подразумевает выпол-нение резервного копирования всех блоков, которые изменились с момента проведения 
последнего инкрементного резервного копирования на уровне 0.
*/
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
--Differential
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
--Cumulative (blocks changed since level 0)
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
--В Oracle рекомендуют использовать все-таки кумулятивные резервные копии, если на сервере хватает места.
--------------------------------------------------------------------------------
--- Резервное копирование с инкрементным обновлением ---
--------------------------------------------------------------------------------
/*
Резервное копирование с инкрементным обновлением
представляет собой революционный прорыв в стратегиях резервного копирования, поскольку позволяет всегда иметь в распоряжении доступную 
обновленную копию образа независимо от того, когда была сделана первая полная резервная копия уровня 0. 
*/

--Эта команда создает инкрементный бэкап уровня 1 и обновляет уже существующей полный бэкап уровня 0.
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr-update' LEVEL 0 DATABASE;


--В этом скрипте команда RECOVER COPY накатывает инкрементные бэкапы уровня 1 к бэкапу с таким же тегом. 
--Команда BACKUP создает инкрементный бэкап уровня 1. В случае отсутствия уровня 0, создает его.
RMAN> RUN {
RECOVER COPY OF DATABASE WITH TAG 'incr_update';
BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE;
}
/*
- В первый день команда BACKUP будет приводить к созданию резервной копии уровня 0, поскольку таковой еще не существует.
- Во второй день команда BACKUP будет приводить к созданию инкрементной резервной копии уровня 1.
- В третий и каждый последующий день команда RECOVER COPY будет приводить к применению к резервной копии уровня 0 резервных копий уровня 1 и 
тем самым постоянно обновлять ее.
*/

--------------------------------------------------------------------------------
--- Быстрое инкрементное резервное копирование ---
--------------------------------------------------------------------------------
/*
Во время процедур инкрементного резервного копирования Oracle потребуется ска-нировать всю базу данных. Это делает процедуры инкрементного резервного копирова-ния излишне долгими. 
Для отслеживания физического местонахождения всех изменений в блоках базы 
данных применяется файл отслеживания изменений, который впервые появился в вер-сии Oracle Database 10g. Утилита RMAN считывает этот файл для выяснения того, ка-кие именно блоки данных ей надлежит прочитать и скопировать, и тем самым избега-ет необходимости считывать все файлы данных, что позволяет значительно сократить 
время, затрачиваемое на выполнение резервного копирования.
Записью информации об изменениях в блоках в файл отслеживания изменений за-нимается фоновый процесс записи отслеживаемых изменений(Change Tracking Writer — 
CTWR), представляющий собой еще один механизм, который впервые появился в Oracle 
Database 10g.
*/

--Включение функции отслеживания изменений в блоках
ALTER DATABASE
 ENABLE BLOCK CHANGE TRACKING
 USING FILE '/u01/oradata/finance/changetrack.log';
--Изменением имени или места размещения файла отслеживания изменений
ALTER DATABASE RENAME FILE
'/u01/app/oracle/finance/changetrack.log'
TO
'/u02/app/oracle/finance/changetrack.log';
--Для отключения функции отслеживания изменений в блоках
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
--Наблюдение за работой функции отслеживания изменений в блоках
SELECT filename,status,bytes FROM v$block_change_tracking;
SELECT * FROM V$BACKUP_DATAFILE;

--SUN
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 1 CUMULATIVE DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;