Habilitando Block Change Tracking
Estarei abordando o recurso da Oracle chamado Block Change Tracking conceituamente e mostrarei na prática como habilitá-lo e algumas precauções que devem ser tomadas antes de habilitar essa ação.
A Oracle disponibilizou o backup incremental desde a versão 9i. Um backup incremental é gerado com os blocos que tiveram alteração desde a geração do último backup base. Trazendo benefícios como:
- Redução do espaço em disco utilizado pelo backup, pois gerará Backup Pieces menores.
- Tempo de backup menor. Já que somente os blocos alterados anteriormente serão adicionados ao backup.
Mas para o RMAN incluir somente os blocos alterados no backup, o mesmo tem que escanear os datafiles inteiros e descartar os blocos que não foram alterados desde o backup base, fazendo com que o overhead do backup incremental seja tão alto quanto um backup completo.
Porém, na versão 10g foi adicionado o recurso Block Change Tracking (BCT). Com esse recuso habilitado, as alterações nos blocos são rastreadas através de um arquivo de rastreamento (tracking file). Os logs das alterações aplicadas aos blocos serão gravados no tracking file e, no momento do backup, o RMAN consultará esse arquivo para identificar quais blocos deverão ser lidos para serem adicionados ao backup, tornando-o mais rápido.
Agora que entendemos um pouco o funcionamento do backup incremental com o BCT habilitado, vamos para prática!!
Verificando se o Block Change Tracking está habilitado
Para verificar se o BCT está habilitado previamente, deve-se consultar a seguinte view:
SQL> SELECT * FROM v$block_change_tracking;
Onde a view é constituída pelos campos STATUS (ENABLE/DISABLE), FILENAME (path do tracking file) e BYTES (tamanho atual do tracking file).
Se estiver desabilitado trará o seguinte resultado:
STATUS FILENAME BYTES
——————————————————————
DISABLE
Se estiver habilitado trará um resultado próximo a esse:
STATUS FILENAME BYTES
———————————————————————-
ENABLED +BLOCKING_TRACK/BCT.F 11599872
Habilitando Block Change Tracking
IMPORTANTE: Antes de ativar o BCT, é essencial verificar em que disco o tracking file vai residir. Pois pode causar problema na performance do I/O de disco, caso o mesmo seja muito usado ou contenha os arquivos mais acessados do banco. Por exemplo, o tracking file não deve ser alocado no mesmo disco onde estão os Redo Log Files ou os Archive Files. Inclusive, já vi problemas em um banco, onde foi colocado esse arquivo no mesmo disco do Redo Log Files e sempre que ocorria o Log Switch causava o travamento do banco.
Segue os comandos para habilitar o BCT:
– Comando simples, onde o Oracle criará um OMF (Oracle Managed File) no diretório informado no parâmetro DB_CREATE_FILE_DEST:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
Caso deseje, para informar o diretório no momento da habilitação do recurso, deve-se adicionar o USING FILE:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ‘+BLOCKING_TRACK/BCT.F’;
E caso o arquivo já exista e queira recriá-lo, deve-se adicionar o REUSE:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ‘+BLOCKING_TRACK/BCT.F’ REUSE;
Desabilitando o block change tracking
Para desabilitar o BCT, deve-se utilizar o comando:
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
Esse comando elimina automaticamente o tracking file criado.
Verificando utilização do BCT pelo backup incremental
Para verificar se o BCT está funcionando corretamente, deve-se verifica na view V$BACKUP_DATAFILE, se existe linhas com o valor da coluna USED_CHANGE_TRACKING igual a ‘YES’. O resultado da consulta a essa view pode determinar a efetividade do uso do tracking file no backup incremental. A seguinte query pode ser utilizada para realizar essa consulta:
SQL> SELECT file#,
avg(datafile_blocks),
avg(blocks_read),
avg(blocks_read/datafile_blocks) * 100 as “% read for backup”
FROM v$backup_datafile
WHERE incremental_level > 0
AND used_change_tracking = ‘YES’
GROUP BY file#
ORDER BY file#;
Outras informações:
- Sempre que o BCT é habilitado ou desabilitado, é adicionado ao alert.log uma linha informando a ação.
- O tracking file pode ser renomeado utilzando ‘ALTER DATABASE RENAME FILE … TO …’ .
- O tracking file é um arquivo binário.
- O RMAN não suporta backup/recovery desse arquivo.
Referências
- RMAN Fast Incremental Backups using BCT = Block Change Tracking file [ID 262853.1]
- ORACLE 10G BLOCK CHANGE TRACKING INSIDE OUT [ID 1528510.1]
- Incremental Rman Backup High Waits On ‘block change tracking buffer space’ [ID 1311518.1]
- http://marcussoaresoracle.wordpress.com/2013/02/26/habilitando-block-tracking-change/#more-24