domingo, 4 de novembro de 2012

Multiplexando controlfiles no ASM



Neste artigo vamos apresentar como podemos fazer a multiplexação de controlfiles.

Mas antes de apresentar os passos, vamos falar para que serve a multiplexação de controlfiles.

A multiplexação de controlfiles serve entre outras coisas para melhorar a performance do banco de dados, principalmente em ambientes com o RAC instalado. A multiplexação também previne problemas com a corrupção do mesmo, pois nesses casos pode-se copiar um controlfile em bom estado sobre o controlfile danificado.

Vamos aos passos da multiplexação dos controlfiles.

A. Criar o diretório para armazenar o controlfile.

Na instância do ASM:


SQL> alter diskgroup DGBKP add directory '+DGBKP/DBTESTE';
SQL> alter diskgroup DGBKP add directory '+DGBKP/DBTESTE/CONTROLFILE';

Na instância do banco de dados:

B. Deve-se identificar o local dos controlfiles correntes:

SQL> select name from v$controlfile;

NAME
------------------------------------------------------------
+DATADG/DBTESTE/control01.ctl
+REDODG/DBTESTE/control02.ctl

SQL> show parameter control_files

'+DATADG(CONTROLFILE)/DBTESTE/control01.ctl',
'+REDODG(CONTROLFILE)/DBTESTE/control02.ctl'

C. Editar o spfile e modificar o parâmetro control_file:

SQL> alter system set control_files =
'+DATADG(CONTROLFILE)/DBTESTE/control01.ctl',
'+REDODG(CONTROLFILE)/DBTESTE/control02.ctl',
'+DGBKP(CONTROLFILE)/DBTESTE/control03.ctl'
scope=spfile sid='*';

System altered.

Em destaque está o novo controlfile (definido neste exemplo como "control03.ctl").

D. Efetuar um shutdown no banco de dados (incluindo todas as instâncias se estiver no RAC):
   
$ srvctl stop database -d DBTESTE

E.Iniciar o banco de dados em modo NOMOUNT:

$ sqlplus / as sysdba

SQL> startup nomount


F. Usar o RMAN para duplicar o controlfile:

$ rman nocatalog

Recovery Manager: Release 11.2.0.1.0 - Production on Thu Nov 04 09:15:24 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN> connect target

connected to target database: DBTESTE (not mounted)
using target database control file instead of recovery catalog

RMAN> restore controlfile to '+DGBKP/DBTESTE/control03.ctl' from '+DATADG/DBTESTE/control01.ctl';

Starting restore at 04-NOV-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=297 instance=DBTESTE1 device type=DISK

channel ORA_DISK_1: copied control file copy
Finished restore at 04-NOV-12

RMAN> exit

G. Efetuar um shutdown no banco de dados:

$ sqlplus / as sysdba

SQL> shutdown immediate


H. Iniciar o banco de dados:

srvctl start database –d DBTESTE

I. Verificar o resultado final:

SQL> select name from v$controlfile;

NAME
------------------------------------------------------------
+DATADG/DBTESTE/control01.ctl
+REDODG/DBTESTE/control02.ctl
+DGBKP/DBTESTE/control03.ctl

SQL> show parameter control_files

'+DATADG(CONTROLFILE)/DBTESTE/control01.ctl',
'+REDODG(CONTROLFILE)/DBTESTE/control02.ctl',
'+DGBKP(CONTROLFILE)/DBTESTE/control03.ctl'
   



MSc. Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com