Moving control file from file system to ASM system

The logo of Oracle Corporation
Image via Wikipedia

Como mover un controlfile de filesystem hacia ASM

Tuve como consultor las tareas de normalizar politicas, standares y otros elementos de seguridad.
La semana pasada, auditando , me tope con una base que estaba en ASM pero que el controlfile se encontraba en filesystem.
De ello es que acerco esta experiencia ya que el DBA que se econtraba no había trabajado nunca con la tecnologia ASM y al levantar la base despues de la instalacion por medio de scripts dio por sentado que esto estaba funcionando sin problemas.

Primero busque la ubicacion del controlfile y comence con mi tarea de migracion de filesytem para ASM.

SQL> sho parameter control

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time	     integer	 7
control_files			     string	 /u01/app/oracle/product/10.2.0
						 /db_ASDEF/dbs/cntrlASDEF.dbf

Luego baje la base de datos y la levante en modo nomount.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup nomount
ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size		    2182600 bytes
Variable Size		  396145208 bytes
Database Buffers	 1207959552 bytes
Redo Buffers		    4325376 bytes

Ahora por medio del RMAN voy a mover el controlfile hacia el ASM, pasando como path el controlfile originario en filesystem.

[oracle@st241006lx dbs]$ rman target /

Recovery Manager: Release 10.2.0.4.0 - Production on Fri Oct 15 16:52:04 2010

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

connected to target database: ASDEF (not mounted)

RMAN> restore controlfile to '+DATA' from '/u01/app/oracle/product/10.2.0/db_ASDEF/dbs/cntrlASDEF.dbf';

Starting restore at 15-OCT-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=81 devtype=DISK

channel ORA_DISK_1: copied control file copy
Finished restore at 15-OCT-10

RMAN>

Luego de haber realizado el restore, verifico en el ASM por linea de comandos si se encuentra el archivo generado.

$ asmcmd
ASMCMD> cd DATA
ASMCMD> ls
ASDEF/
ASMCMD> cd +DATA/ASDEF/CONTROLFILE
ASMCMD> ls
current.268.732473601
ASMCMD> pwd
+DATA/ASDEF/CONTROLFILE
ASMCMD> exit

Como trabajo con spfile, es preciso que le pase el nuevo path donde se encuentra el controlfile con su nuevo nombre.

SQL> alter system set control_files='+DATA/ASDEF/CONTROLFILE/current.268.732473601' scope=spfile;

System altered.

Bajo la instancia nuevamente.

SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.

Cambio de Nombre el antiguo controlfile para que no sea leido en caso de hacer mal algún paso (luego sera eliminado).

[oracle@st241006lx bin]$ cd /u01/app/oracle/product/10.2.0/db_ASDEF/dbs
[oracle@st241006lx dbs]$ ls
cntrlASDEF.dbf  hc_ASDEF.dat  initdw.ora  initASDEF.ora  init.ora  lkASDEF  orapwASDEF
[oracle@st241006lx dbs]$ mv cntrlASDEF.dbf cntrlASDEF.dbf.OLD

Y levanto la base como paso final, verificando con que controlfile levanto.

SQL> startup
ORACLE instance started.

Total System Global Area 1610612736 bytes
Fixed Size		    2182600 bytes
Variable Size		  396145208 bytes
Database Buffers	 1207959552 bytes
Redo Buffers		    4325376 bytes
Database mounted.
Database opened.

SQL> sho parameter control

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time	     integer	 7
control_files			     string	 +DATA/ASDEF/controlfile/curre
                                                  nt.268.732473601

2 thoughts on “Moving control file from file system to ASM system

Comments are closed.