jueves, 5 de febrero de 2009

Bye bye raw device, ¡bienvenido ASM!

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 file systems 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 file systems, 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 el hoy desaparecido Note 578455.1, que a partir de Oracle 12g los raw devices ya no serán soportados y más recientemente, con el Note 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.

1. Particionando los discos.

Se requiere que los discos estén debidamente particionados para que puedan ser usados, para ello haremos uso del utilitario fdisk. Primero veamos los nombres de los dispositivos:

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.

Este mismo procedimiento se aplica a los restantes 5 discos para finalmente obtener 6 particiones:

[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

2. Instalación y configuración del software ASMLib.

Para ello debemos empezar por identificar la versión del kernel en uso.

[root@urania ~]# uname -r
2.6.18-92.el5

Con este dato procedemos a descargar los rpm respectivos y los instalamos.

[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%]

Con el software ya instalado es hora de configurarlo.

[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  ]

Esto se repite para las 5 particiones restantes para finalmente obtener:

root@urania ~]# /etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
DISK5
DISK6

3. Creación de la instancia ASM

Esta tarea se realiza con ayuda del utilitario DBCA.


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


Ahora podemos crear los Disk Groups; en esta ocasión serán 2 los que crearemos.


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 un siguiente Post.

Post Relacionados:

¿Te pareció interesante este artículo?, ¿te quedaron algunas dudas?, ¿quieres sugerirme un tema a tratar?, pues déjame tus comentarios o envíame un email y para que NO te pierdas ningún Post, suscríbete por email ahora mismo!

17 comentarios, agrega el tuyo!

karina dijo...

esta interesante lo publicado, tengo una dudac para el caso de Unix es igual, tengo ASM en UNIX y deseo agregar 2 nuevo s diskgroups , para esto me han asignado 2 disco hdisk13 y hdisk14 , una consulta estos discos como tal los puedo coger para asignarlos a un diskgroup o hay que crearun device que tenga permisos de oracle???

Gracias

Enrique Orbegozo dijo...

Asumo que estás usando AIX, en ese caso hay un procedimiento especial que debes seguir antes de poder usar los hdisk*, te recomiendo leer este documento de IBM: Deploying Oracle RAC 10g with ASM on AIX

srg-i dijo...

Gracias por el tutorial esta muy bien.
Tengo un pequeño problema con los drivers. Estoy utilizando SuSE Enterprise Server 11 y no consigo encontrar el driver para el kernel o en el caso de oracleasm-support me dice que es necesario instalar primero la version 1.0.4. Ya he mirado en el enlace que pusiste pero diria que no estan.
Gracias de antemano

Enrique Orbegozo dijo...

Hola,
En tu caso requieres los drivers apropiados para SLES11, si no encuentras los drivers que corresponden a la versión de tu kernel entonces tienes que actualizar tu kernel o construir tu propia versión de los drivers en base al código fuente.

JJGL dijo...

Nuevamente otra pregunta adicional:

Estoy configurando una BD Oracle 11GR2
con ASM pero sucede lo siguiente:

Ya he instalado y configurado los drivers para ASM
sobre mi sistema operativo SLES 11.

Las librerias y los discos ya se han etiquetado
y son reconocidos por asm y los he nombrado;

ASMDSK01
ASMDSK02

Pero cuando lanzo el runInstaller y comienzo a instalar oracle
me sale al momento de crear la base de datos que necesito instalar
el componente GRID COMPUTING.

Entonces solo selecciono instalar el software y no crear la BD al inicio.

El instalador se ejecuta correctamente, pero cuando voy a acceder
la utilidad DBCA me sale:

Esta utilidad solo configura BD locales usando solo sistema de archivos,
si quiere usar ASM debe instalar los GRID COMPONENTS que vienen en una instalación aparte
usando la utilidad ASMCA.

¿Donde encuentro la utilidad ASMCA?
¡He consultado esta página pero el directorio GRID no existe!
http://download.oracle.com/docs/cd/E11882_01/server.112/e10500/asmca.htm
He tratado de buscar el paquete donde se encuentra esta utilidad y entre a la
página undicada donde hay un archivo gi_inst.zip lo descargo pero no la encuentro.

me dice que esta en el directorio /stage pero alli ¡no hay nada!

¿Sabes donde me sale esta opcion en 11GR2?

Ya que segun la ayuda la utilidad runInstaller efectua esta operación

Me llama la atención que en la documentación relacionada el runInstaller
muestra en los cuadros de dialogo "GRID ENVIROMENT SETUP" y el que yo he descargado
no titula eso.

SALUDOS Y FELIZ NAVIDAD Y PROSPERO AÑO 2010
DESDE COLOMBIA

Enrique Orbegozo dijo...

Hola John, con 11gR2 han cambiado un poco las cosas, ahora necesitas descargar Oracle Database 11g Release 2 Grid Infrastructure (11.2.0.1.0) del site de Oracle, luego de instalado podrás configurar ASM.
Saludos y gracias por participar.

Eca dijo...

Hola Enrique,
Yo estoy instalando la 11.2 en RAC en Sles 11 con 2 nodos. Tengo el Siguiente problema, ya instale los RPMs(oracleasm-2.0.5-7.6, oracleasm-support-2.1.3-1.SLE11, oracleasm-kmp-default-2.0.5_2.6.27.19_5-7.6) Tengo una SAN compartiendo 1 disco. Genere un disco ASM con ORACLEASM y se ve de ambos nodos. El tema que el instalador del GRID no ve el disco solo si lo genero en RAW.
A alguien le paso?
Un abrazo.
Ernesto

Yoshita Catari dijo...

Gracias por su información,
me hes de gran utilidad.
Una pregunta:
Tengo cinco bases de datos distribuidas en cuatro nodos en Oracle RAC utilizando ocfs.
Para migrar a ASM,
¿Debo crear 5 bases de datos ASM una para cada base de datos con sus grupos de discos separados o 1 base de datos ASM para las cinco bases de datos?
Gracias

Enrique Orbegozo dijo...

Hola Yoshita, la recomendacion es crear una instancia ASM por cada servidor, no por cada base de datos. Igualmente es recomendado que se cree un unico Disk Group para datos y otro para el Flash Recovery Area, para sacar mejor provecho al subsistema de discos.
Gracias por participar.

Unknown dijo...

Norma: hola, he seguido los pasos q tu has indicado para instalar ASM, pero cuando llego a la opcion de crear un grupo, no me muestra los discos que puedo seleccionar, tengo RED HAT 5 y oracle 10g...
ayudame con esto thanks

Enrique Orbegozo dijo...
Este comentario ha sido eliminado por el autor.
Enrique Orbegozo dijo...

Hola Norma, comprenderás que es bastante complicado dar soporte por este medio, por lo que si tienes acceso a MOS te recomiendo leer el Note 457369.1 ASM is Unable to Detect ASMLIB Disks/Devices. En lineas generales debes verificar la configuracion y disponibilidad de los discos:

1. /etc/init.d/oracleasm scandisks
2. /etc/init.d/oracleasm listdisks
3. /etc/init.d/oracleasm querydisk [nombre de disco, ej DISK1]
4. ls -l /dev/oracleasm/disks/[nombre de disco, ej DISK1]

También puedes consignar en el init de la instancia ASM:

asm_diskstring =ORCL:*

Si no funciona puedes probar con:

asm_diskstring = /dev/oracleasm/disks/*

Ojalá se resuelva tu problema con esto, saludos.

Anónimo dijo...

Hola Enrique veo que a pesar del tiempo que tiene tu post aun despierta mucho interes. Tal es mi caso, pero bueno te tengo una pregunta crees tu que es posible Oracle 11g Release 2 RAC On Linux Using VMware esxi 4.1.
encontre un articulo en http://www.oracle-base.com/articles/11g/OracleDB11gR2RACInstallationOnOEL5UsingVMwareServer2.php

pero solo enseña como hacerlo en vmware server2.

me gustaria saber tu opinion.
Muchas gracias
saludos cordiales

Enrique Orbegozo dijo...

Hola "Anonimo", luego de una rapida googleada encontre lo siguiente: Oracle 11g Release 1 RAC On RHEL5 Linux Using VMware ESX Server and NFS, por lo que si sería posible.
Saludos.

Oscar Figueruelo dijo...

Oscar Figueruelo - DBA Junior.

Buenas tardes, he seguido estos pasos para montar mi instancia ASM, pero he detectado algunos problemas al respecto. No puedo hacer un backup de los metadatos de mi diskgroup ya que da error de Permiso Denegado.

md_backup -g data
Disk group to be backed up: DATA
Current alias directory path: jmw
ASMCMD-09345: could not open intermediate file 'ambr_backup_intermediate_file'
Permission denied

Cualquier idea es bienvenida. Buen post, enhorabuena.

Oscar Figueruelo dijo...

Ya esta solucionado. Era un tonteria. Fallo de concepto.

Anónimo dijo...

Hola EStimado

Para consultarte, Con cuanta memoria puedo escalar el servidor de Base De Datos de Oracle, y tiene alguna afectacion el performance de la base de datos o degradacion??

Gracias por tu apoyo