Durante décadas se han venido usando raw devices en un intento de obtener el mejor desempeño posible para las bases de datos Oracle. La alternativa eran los filesystems que, si bien eran fáciles de administrar, tenían un desempeño que dejaba mucho que desear. Con el transcurrir de los años los fabricantes han venido mejorando los filesystems, agregándoles direct I/O y concurrent I/O por ejemplo, al punto que los han hecho casi tan eficientes como los raw devices. Por su parte Oracle dio la sorpresa cuando anunció la aparición de ASM, ofreciendo el alto desempeño de los raw devices con la facilidad de administración de los file systems, amén de muchas otras adiciones que lo hacen único y deseable.
El 2008 recibimos la noticia, mediante la hoy desaparecida nota 578455.1, que a partir de Oracle 12g los raw devices ya no serán soportados, y más recientemente, con la nota 754305.1 se nos indica que con Oracle 11gR2 ya no se ofrecerán los raw devices desde DBCA/OUI, por lo que tendremos que recurrir a la línea de comandos si queremos crear una base de datos que los emplee.
Debemos entonces ir pensando en abandonar los raw devices pero, ¿qué usar en su reemplazo? En mi opinión la mejor alternativa es ASM, y por ello empiezo hoy esta serie de Posts. En este primero les mostraré la instalación del software requerido, las configuraciones necesarias y la creación de una instancia ASM; en un siguiente Post les mostraré cómo trasladar manualmente la base de datos hacia ASM, y en un último Post les mostraré cómo hacer lo mismo con Database Console, así como el procedimiento a seguir para hacer upgrade a ASM.
Estaré usando una máquina virtual en VMWare, que ejecuta RHEL 5.2 de 32 bits y cuenta con 6 discos virtuales de 1GB cada uno, los cuales serán gestionados por ASM. Si bien voy a emplear Oracle 11.1.0.7, los pasos han sido debidamente probados con Oracle 10.2.0.1 y 10.2.0.4 por lo que no debe haber problemas si siguen estos pasos con versiones 10.2.0.1 o superiores. Veamos entonces la secuencia de pasos a seguir para contar con una instancia ASM operativa.
I. Particionando los discos.
root@urania ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
A partir de /dev/sdb hasta /dev/sdg, son los discos que asignaremos a ASM, creemos entonces las particiones.
[root@urania ~]# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@urania ~]# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1
/dev/sda1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
II. Instalación y configuración del software ASMLib.
[root@urania ~]# uname -r
2.6.18-92.el5
[root@urania ~]# ls
oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm
oracleasm-support-2.1.2-1.el5.i386.rpm
oracleasmlib-2.0.3-1.el5.i386.rpm
[root@urania ~]# rpm -Uvh oracleasm-support-2.1.2-1.el5.i386.rpm \
> oracleasmlib-2.0.3-1.el5.i386.rpm \
> oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm
Preparing... ########################################### [100%]
1:oracleasm-support ########################################### [ 33%]
2:oracleasm-2.6.18-92.el5########################################### [ 67%]
3:oracleasmlib ########################################### [100%]
[root@urania ~]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface [oracle]:
Default group to own the driver interface [dba]:
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
Ahora hay que etiquetar las particiones para que sean reconocidas como dispositivos habilitados para ASM.
[root@urania ~]# /etc/init.d/oracleasm createdisk DISK1 /dev/sdb1
Marking disk "DISK1" as an ASM disk: [ OK ]
root@urania ~]# /etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
DISK5
DISK6
III. Creación de la instancia ASM
Se nos solicita ejecutar un script para configurar e iniciar el servicio CSS.
[root@urania ~]# sh /u01/app/oracle/product/11.1.0/db_2/bin/localconfig add
/etc/oracle does not exist. Creating it now.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configuration for local CSS has been initialized
Adding to inittab
Startup will be queued to init within 90 seconds.
Checking the status of new Oracle init process...
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
urania
CSS is active on all nodes.
Oracle CSS service is installed and running under init(1M)
Retornamos a DBCA y ahora ingresamos el password para el usuario SYS (de ASM no de la base de datos)
Con este dato DBCA procede a crear e iniciar la instancia ASM.
Al primero lo llamaremos DAT, le asignaremos 2 discos y servirá para contener la base de datos. Escogemos external redundancy para aprovechar todo el espacio, pero estaremos sin mirror por lo que es algo que no deberías usar en Producción, salvo el mirror lo estés manejando a nivel del arreglo de discos.
Al segundo lo llamaremos FRA, le asignaremos los 4 discos restantes y servirá para contener el Flash Recovery Area, nuevamente escogemos external redundancy.
Para culminar presionamos el botón [Finish] y ¡listo!, hemos terminado con esta primera parte, ya tenemos una instancia ASM plenamente operativa y lista para albergar nuestra base de datos, pero como les adelantara, eso lo veremos en el siguiente Post.