Multiplexando os Controlfiles do Oracle non-ASM

O objetivo de Multiplexar os Controlfiles é totalmente importante para a segurança contra corrupção do arquivo e ou de disco.
Recomendado pela Oracle, estes devem ser multiplexados em diferentes discos e não em partições de um único disco.
Segue abaixo o procedimento de como multiplexar o controlfile.

OBS: Caso o banco de dados esteja em estado “aberto”, baixe o mesmo para realizar o procedimento de multiplexar os controlfiles.

login as: oracle
oracle@192.168.202.135's password:
Last login: Wed Sep 14 16:38:43 2011 from 192.168.202.1
[oracle@oraprd ~]$ ps -ef | grep ora_smo
oracle    3165     1  0 16:46 ?        00:00:00 ora_smon_dbteste
oracle    3253  3220  0 16:48 pts/1    00:00:00 grep ora_smo
[oracle@oraprd ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 - Production on Wed Sep 14 16:49:19 2011

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Conectar do banco de dados e verifica se o mesmo está aberto. Caso o mesmo esteja aberto ou em um estado montado, baixe o banco de dados.

SQL> conn / as sysdba
Connected.
SQL> select open_mode from v$database;

OPEN_MODE
----------
READ WRITE

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> !

Verifica as partições para a multiplicação dos controlfiles.
Neste exemplo usarei as partições /oraarchive, /oraprd01 e /oraprd02.

[oracle@oraprd ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       13G  4.8G  7.1G  41% /
/dev/sda5             4.9G  1.9G  2.8G  42% /oraarchive
/dev/sda3             9.7G  6.6G  2.6G  72% /oraprd01
/dev/sda2             9.7G  6.2G  3.1G  67% /oraprd02
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm
[oracle@oraprd ~]$ cd /oraprd01/app/oracle/oradata/dbteste/

Vamos listar os controlfiles para a multiplicação dos mesmos.

[oracle@oraprd dbteste]$ ls -l con*
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 control01.ctl
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 control02.ctl
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 control03.ctl

Vamos mover um controlfile para uma das partições.

[oracle@oraprd dbteste]$ mv control02.ctl /oraprd02/oradata/dbteste/
[oracle@oraprd dbteste]$ ls -l con*
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 control01.ctl
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 control03.ctl

Agora vamos copiar um controlfile para uma das partições como abaixo.

[oracle@oraprd dbteste]$ cp -p control03.ctl /oraarchive/dbteste/control04.ctl

Listando todos os controlfiles em suas respectivas partições.

[oracle@oraprd dbteste]$ ls -l cont*
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 control01.ctl
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 control03.ctl
[oracle@oraprd dbteste]$ ls -l /oraprd02/oradata/dbteste/cont*
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 /oraprd02/oradata/dbteste/control02.ctl
[oracle@oraprd dbteste]$ ls -l /oraarchive/dbteste/cont*
-rw-r----- 1 oracle dba 9748480 Sep 14 16:50 /oraarchive/dbteste/control04.ctl
[oracle@oraprd dbteste]$ exit
exit

Iniciar o banco de dados em estado “nomount”.
Neste momento vamos ajustar o parâmetro control_files para localizar os 4 controlfiles multiplexados.
Após o ajuste baixe o banco de dados novamente. Inicie o banco de dados novamente.

SQL> startup nomount
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1300352 bytes
Variable Size             381683840 bytes
Database Buffers           29360128 bytes
Redo Buffers               10326016 bytes
SQL> show parameter control

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      /oraprd01/app/oracle/oradata/d
                                                 bteste/control01.ctl, /oraprd0
                                                 1/app/oracle/oradata/dbteste/c
                                                 ontrol02.ctl, /oraprd01/app/or
                                                 acle/oradata/dbteste/control03
                                                 .ctl
control_management_pack_access       string      NONE
SQL> alter system set control_files='/oraprd01/app/oracle/oradata/dbteste/control01.ctl','/oraprd02/oradata/dbteste/control02.ctl',
'/oraprd01/app/oracle/oradata/dbteste/control03.ctl','/oraarchive/dbteste/control04.ctl' scope=spfile;

System altered.

SQL> shutdown immediate
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area  422670336 bytes
Fixed Size                  1300352 bytes
Variable Size             381683840 bytes
Database Buffers           29360128 bytes
Redo Buffers               10326016 bytes
SQL> show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /oraprd01/app/oracle/oradata/d
                                                 bteste/control01.ctl, /oraprd0
                                                 2/oradata/dbteste/control02.ct
                                                 l, /oraprd01/app/oracle/oradat
                                                 a/dbteste/control03.ctl, /oraa
                                                 rchive/dbteste/control04.ctl
SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL>

Pronto seus controlfiles foram multiplexados conforme recomendações da Oracle.

%name Multiplexando os Controlfiles do Oracle non ASM

Autor: Maycon Tomiasi

Formado em Tecnologia da Informação na FIPP (Faculdade de Informática de Presidente Prudente), Analista DBA Oracle pela Teiko Soluções em Tecnologia da Informação, residente em Blumenau/ SC, Certificado OCP 10g/11g/12c, OCS 11g Implementation, OCE 11g Performance Tuning, OCE 11g RAC & GRID e OPN Specialist. Conhecimentos em PHP.