21 de dez. de 2007

Ativando um Standby Oracle

Para ativar uma base de dados standby Oracle siga os passos a seguir.

1. Inicie o banco de dados conforme os passos abaixo:
SQL> startup nomount
SQL> alter database mount standby database;

2. Ative o banco de dados:
SQL> alter database activate standby database;

Este processo pode demorar alguns minutos dependendo da velocidade do servidor.

3. Baixe o banco de dados em modo normal ou immediate e ative novamente:
SQL> shutdown immediate;
SQL> startup open

Crie as tabelas temporárias.

4. Verifique a base de dados:
SQL> select database_role from v$database;

5. Crie novamente os tempfiles.

Se tudo correu bem, a base de dados está ativa e funcionando.



20 de dez. de 2007

Criando um Standby Oracle

Importante lembrar que um standby é uma cópia do banco de dados oficial, portanto, compatibilidade de hardware e software são essenciais para um bom desempenho do standby.


Simbologia

SQLPLUS> => indica que estou conectado através do SqlPlus
RMAN> => indica que estou conectado através do Rman
$ => indica que estou executando comandos no shell como usuário comum
# => indica que estou executando comandos no shell como superusuário




Para criar um Standby Oracle é necessário obter uma cópia física dos datafiles, controlfiles e do spfile.



Copiando o spfile

SQLPLUS> create pfile='/caminho/pfileSID.ora' from spfile



Copiando o controlfile

SQLPLUS> alter database create standby controlfile as '/caminho/control01.ctl';



Copiando os datafiles

RMAN> backup as copy database format '/caminho/%N_%f.dbf';

O comando utilizado no RMAN não copia os arquivos com seus nomes corretos, para verificar o nome correto dos datafiles, consulte a view v$dbfile.

SQLPLUS> select * from v$dbfile;

depois de conhecer o nome dos datafiles, renomeie todos para os nomes originais.

--
Todo o processo acima é efetuado com a base ativa.




Criando o Standby

Para criar o standby, como informado no início desta postagem, é necessário a cópia dos controlfiles, spfile e datafiles.

De posse destes arquivos é o momento de transferí-los para o host que hospedará o Standby não esquecendo de manter a estrutura do banco de dados oficial.

Quando todos os arquivos estiverem em seus locais, efetue uma conexão na instância através do SqlPlus e inicie o banco em modo mount.

SQLPLUS> startup mount
Se tudo correr bem, seu banco está preparado para um recover.

SQLPLUS> recover standby database;
O sistema informara qual archive está recuperando e solicitará a forma de recuperação (AUTO ou CANCEL), digite auto, e deixe a base standby atualizar.



Mantendo o Standby atualizado

Para mantê-lo atualizado é necessário a transferência dos archives, que podem ser efetuada de diversas maneiras.



Script de atualização dos Archives (Linux)

Este script utiliza rsync para manter o sincronismo dos archives e o protocolo de transferência ssh, não havendo necessidade de instalar um servidor rsync.


#!/bin/bash
# variaveis
ARCHIVEDIR=/diretorio/dos/archives
SSHSRV=[ip_do_servidor]
SSHUSR=[usuario_de_conexao_ssh]
rsync -ave "ssh" $SSHUSR@$SSHSRV:$ARCHIVEDIR/ $ARCHIVEDIR/


Adicione este script no crontab para automatizar este processo.



Automatizando transferência via SSH (sem autenticação)

O protocolo ssh trabalha com uma forma de autenticação e troca de chaves, para automatizar a autenticação através do ssh é necessário criar uma chave pública do host que irá conectar no servidor ssh e depois autorizá-la no servidor.

Segue abaixo uma forma prática de criar estas chaves.

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): [ENTER]
Enter passphrase (empty for no passphrase): [ENTER]
Enter same passphrase again: [ENTER]
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
bb:66:6a:20:bc:ed:f6:e9:4b:2f:d6:36:a7:97:10:a4 oracle@standby
$

Chave pública gerada.

$ cat /home/oracle/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuT7dvTa1hfGXbIuhQsjqRDVZAbDX8+emSGVrE2
Z91igPjT/4tODR9i4RHbFvXMhkvO+Nzant8XAoIhtGdU7XIwh88AlZK7c4MFyeLyw1UmT6bYeb
DwrMKclf5tdWuRjnD80i0xQclYHliz3rM6tZCh5sM+NdlRA9kNEJGNR6a4LiWLJS8sLry80OyP
41RWs1HoUiYwHNooDjgQ2jryKx92XAz4oLoUi9535a4Brq9D2LfZN3zqn/mVfuzSqioQpok3dg
RHlWziOqvLiDyETLpVeklDgJH6lu5/e2t2Fp+mq6nbISvDy9NmlROSq5c85LsylUwbxVqw9WJW
Dp5hrOjQ== oracle@standby

$


Agora copiaremos o conteúdo desta chave pública para o arquivo de chaves autorizadas do servidor ssh.

$ scp /home/oracle/.ssh/id_rda.pub oracle@oficial:/tmp/
$ ssh oracle@oficial
$ cat /tmp/id_rsa.pub >> /home/oracle/.ssh/authorized_keys
$ exit

Para testar a autenticação por chaves, tente efetuar uma conexão no servidor, se não for solicitado senha a autenticação funcionou corretamente.



Finalizando

Com estes passos, é possível criar um banco de dados standby Oracle, com atualização automática dos archives.


--
Abraços a todos e Sucesso,
Marcos Aurélio Braga