oracle

No último post, descrevi os passos para deixar o banco em modo ARCHIVELOG.

O meu motivo para deixar o banco em modo archivelog foi exatamente permitir hot backups com o RMAN. Pois bem, vamos agora para o que mais interessava: o próprio RMAN!

Pré-requisito: o banco deve estar em modo ARCHIVELOG, conforme já foi explicado no post anterior.

Criação de diretórios

[root@oraserver ~]#  mkdir /backup
[root@oraserver ~]#  mkdir /backup/archivelogs
[root@oraserver ~]#  mkdir /backup/rman
[root@oraserver ~]#  mkdir /backup/scripts
[root@oraserver ~]#  mkdir /backup/logs
[root@oraserver ~]#  chown oracle.oinstall /backup
[root@oraserver ~]#  chown oracle.oinstall /backup/archivelogs
[root@oraserver ~]#  chown oracle.oinstall /backup/rman
[root@oraserver ~]#  chown oracle.oinstall /backup/scripts
[root@oraserver ~]#  chown oracle.oinstall /backup/logs

Configurações do RMAN


[oracle@oraserver log]$ rman target /
...
connected to target database: INST1 (DBID=37133071)

RMAN> show all;
-- Irá aparecer a configuração atual do RMAN. Com os comandos abaixo, vamos alterar algumas dessas configurações

RMAN> configure channel device type disk format '/backup/rman/ora_df%t_s%s_s%p.bkp';

RMAN> configure controlfile autobackup on;

RMAN> configure controlfile autobackup format for device type disk to '/backup/rman/cf_%F.cf';

RMAN> configure retention policy to recovery window of 7 days;

Efetuar backups manualmente

RMAN> backup database plus archivelog;

Automatizar backups

Nenhum DBA quer ficar fazendo backups manualmente todos os dias quando existe a possibilidade de automatizar a tarefa, não é verdade?

Então vamos automatizar esta rotina, lembrando que o DBA deve conferir os logs e também os arquivos de backup para garantir que os backups estão sendo realizados com sucesso.

Vou armazenar todos os scripts e arquivos de comandos em um diretório exclusivo:

[oracle@oraserver backup]$ cd /backup/scripts/

Criei o script usando o gedit como editor de textos. Abaixo, o comando seguido do conteúdo do arquivo:

[oracle@oraserver scripts]$ gedit bkp_diario.sh 
#!/bin/bash
su - oracle -c "rman target / cmdfile /backup/scripts/diario.txt"

Criei também um arquivo texto com os comandos que serão executados dentro do RMAN. Neste exemplo, bem simples, é um comando único, fazendo um backup de todo o database incluindo os archives.

[oracle@oraserver scripts]$ gedit diario.txt 
backup database plus archivelog;

Por último, coloquei meu script para ser executado automaticamente pelo crontab. Para quem não conhece, o crontab é o “agendador de tarefas” do Linux. No caso abaixo, o meu script bkp_diario.sh será executado todos os dias, as 15:23, e a operação irá gravar um log no arquivo  /backup/log/bkp_diario.log.

[root@oraserver ~]# crontab -e
23 15 * * * /backup/scripts/bkp_diario.sh 2>&1&> /backup/log/bkp_diario.log

Este foi um rápido resumo de como automatizei o backup da minha base Oracle. Lembrando que a minha base é apenas um banco para estudos e testes, e por isso esse tutorial é muito básico. Devem ser considerados vários fatores ao implementar uma rotina de backup. É muito importante definir a política de backup primeiro, para então fazer a implementação adequada. Futuramente falarei mais sobre o RMAN, tanto sobre configurações quanto comandos. E obviamente, falarei também de recoverys, ou seja, como recuperar um backup feito via RMAN em caso de algum problema na base.

O RMAN é uma ótima ferramenta de backup, com muitos recursos, e merece ser muito bem estudada.

Deixo abaixo como referência a documentação oficial da Oracle.

Backing Up Databases Using RMAN

http://download.oracle.com/docs/cd/B19306_01/backup.102/b14192/bkup.htm

 

Milton Bastos é DBA Oracle e Desenvolvedor PL/SQL, dividido entre Apucarana/PR e Curitiba/PR. Certificações: OCA (Oracle 11g DBA Certified Associate), Oracle Database 11g Data Warehousing Certified Implementation Specialist, Oracle Database 11g Sales Specialist Assessment, Oracle Database Appliance PreSales Specialist Assessment, Oracle Database Appliance Sales Specialist Assessment