Neste post mostrarei como duplicar um arquivo de configuração do banco de dados utilizando o utilitário do Oracle chamado RMAN. Você pode se encontrar em uma situação em que pode ser necessário multiplexar o arquivo de controle em vários diskgroups (no caso de ASM) ou em diferentes filesystems, especialmente depois que o banco de dados é criado.
É altamente recomendável configurar o banco de dados Oracle com vários arquivos de controle a fim de reduzir o risco de perder um arquivo de controle devido a corrupção, remoção acidental.
A multiplexação é o processo de efetuar uma cópia dos mesmos arquivos de controle em diferentes drivers de disco ou em diferentes diskgroups no caso do ASM.
Abaixo, mostraremos como efetuar uma multiplexação de um controlfile usando o RMAN:
1 – Multiplexando um controlfile em ambiente com o filesystem
1.1 – Entrar no SQLPLUS
[oracle@local ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.1.0.6.0 – Production on Wed Oct 25 21:41:22 2017 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
1.2 – Verificando o parametro control_files
SQL> show parameter control_files
NAME TYPE VALUE
———————————— ———– ——————————
control_files string /u01/app/oracle/oradata/orcl/ control01.ctl, /u01/app/oracle/oradata/orcl/control02.ctl, 01/app/oracle/oradata/orcl/control03.ctl
SQL>
SQL> select name from v$controlfile;
NAME
——————————————————————————–
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl
/u01/app/oracle/oradata/orcl/control03.ctl
SQL>
1.3 – Configurar o parâmetro control_files no arquivo de inicialização
SQL> alter system set control_files=’/u01/app/oracle/oradata/orcl/control01.ctl’,’/u01/app/oracle/oradata/orcl/control02.ctl’,’/u01/app/oracle/oradata/orcl/control03.ctl’,’/u01/app/oracle/oradata/orcl/control04.ctl’ scope=spfile;
System altered.
1.4 – Baixar a instancia e inicia-la em modo nomount
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup nomount
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1300352 bytes
Variable Size 297797760 bytes
Database Buffers 117440512 bytes
Redo Buffers 6131712 bytes
SQL>
1.5 – Entrar no RMAN
[oracle@local ~]$ rman target /
Recovery Manager: Release 11.1.0.6.0 – Production on Wed Oct 25 21:54:05 2017
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: ORCL (not mounted)
1.6 – Efetuar uma cópia do controlfile
RMAN> restore controlfile from ‘/u01/app/oracle/oradata/orcl/control01.ctl’;
Starting restore at 25-OCT-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=152 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=/u01/app/oracle/oradata/orcl/control01.ctl
output file name=/u01/app/oracle/oradata/orcl/control02.ctl
output file name=/u01/app/oracle/oradata/orcl/control03.ctl
output file name=/u01/app/oracle/oradata/orcl/control04.ctl
Finished restore at 25-OCT-17
1.7 – Sair do RMAN
RMAN> exit
Recovery Manager complete.
[oracle@local ~]$ exit
exit
1.8 – Voltar ao SQLPLUS e efetuar um shutdown na instância
SQL> shutdown
ORA-01507: database not mounted
ORACLE instance shut down.
SQL>
SQL> shutdown
ORA-01507: database not mounted
ORACLE instance shut down.
1.9 – Efetuar startup na instância
SQL> startup
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1300352 bytes
Variable Size 297797760 bytes
Database Buffers 117440512 bytes
Redo Buffers 6131712 bytes
Database mounted.
Database opened.
SQL>
1.10 – Verificar os controlfiles
SQL> select name from v$controlfile;
NAME
——————————————————————————–
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl
/u01/app/oracle/oradata/orcl/control03.ctl
/u01/app/oracle/oradata/orcl/control04.ctl
SQL> show parameter control_files
NAME TYPE VALUE
———————————— ———– ——————————
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u01/app/oracle/oradata/orcl/con
trol03.ctl, /u01/app/oracle/oradata/orcl/control04.ctl
SQL>
2 – Multiplexando um controlfile em ambiente com o ASM
2.1 – Entrar no SQLPLUS
[oracle@LNXORA ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Oct 25 08:01:09 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Conectado a: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management,OLAP,Data Mining and Real Application Testing options
2.2 – Verificando o parametro control_files
SQL> show parameter control_files
NAME TYPE VALUE
———————————— ———– ——————————
control_files string +REDO/mtrbildc/controlfile/current.260.945000645
SQL> select name from v$asm_diskgroup;
NAME
——————————
REDO
DATA
RECO
SQL> select name from v$controlfile;
NAME
——————————————————————————–
+REDO/mtrbildc/controlfile/current.260.945000645
2.3 – Configurar o parâmetro control_files no arquivo de inicialização
SQL> alter system set control_files=’+REDO/mtrbildc/controlfile/current.260.945000645′,’+DATA’ scope=spfile;
Sistema alterado.
2.4 – Baixar a instancia e inicia-la em modo nomount
SQL> shutdown immediate
SQL> startup nomount
2.5 – Entrar no RMAN
[oracle@LNXORA ~]$ rman target /
Recovery Manager: Release 11.2.0.3.0 – Production on Wed Oct 25 13:27:59 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: MTRBILDC (not mounted)
2.6 – Efetuar uma cópia do controlfile
RMAN> restore controlfile from ‘+REDO/mtrbildc/controlfile/current.260.945000645’;
Starting restore at 25-OCT-17
using target database control file instead of recovery catalog allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=8 device type=DISK
channel ORA_DISK_1: copied control file copy
output file name=+REDO/mtrbildc/controlfile/current.260.945000645
output file name=+DATA/mtrbildc/controlfile/current.394.958310919
Finished restore at 25-OCT-17
RMAN>
2.7 – Sair do RMAN
RMAN> exit
Recovery Manager complete.
2.8 – voltar ao SQLPLUS e configurar o arquivo de inicialização com o nome correto do controlfile
SQL> alter system set control_files=’+REDO/mtrbildc/controlfile/current.260.945000645′,’+DATA/mtrbildc/controlfile/current.394.958310919′ scope=spfile;
Sistema alterado.
SQL>
2.9 – Efetuar um shutdown e um startup na instância
SQL> shutdown immediate
ORA-01507: banco de dados n?o montado
Instancia ORACLE desativada.
SQL> startup
Instancia ORACLE iniciada.
Total System Global Area 4275781632 bytes
Fixed Size 2235208 bytes
Variable Size 2667578552 bytes
Database Buffers 1577058304 bytes
Redo Buffers 28909568 bytes
Banco de dados montado.
Banco de dados aberto.
SQL>
SQL>
2.10. – Verificar os controlfiles
SQL> show parameter control_files
NAME TYPE VALUE
———————————— ———– ——————————
control_files string +REDO/mtrbildc/controlfile/current.260.945000645, +DATA/mtrbildc/controlfile/current.394.958310919
SQL>
Conforme podemos verificar com os procedimentos acima, o processo de cópia do controlfile é basicamente o mesmo entre sistemas de arquivos em file system ou ASM.