Implementación de Oracle RAC 11gR2 sobre e-Business Suite R12

Por Francisco Riccio
Publicado en julio 2012

Introducción

El objetivo de este artículo es presentar un correcto procedimiento de cómo realizar una implementación de Oracle RAC 11gR2 (11.2.0.3) en un ambiente e-Business Suite R12 (12.1.1). Tanto la capa de Base de Datos como de aplicación están sobre una plataforma Oracle Linux 5.7 de 32 bits.

El escenario consistirá en migrar la base de datos actual de e-Business Suite a una configuración Oracle RAC, convirtiendo la solución del ERP de single node a multinodo. Single Node es cuando los componentes de Base de Datos y de aplicación se encuentran en el mismo servidor, mientras la configuración multinodo los componentes se encuentran en servidores distintos.

Actualmente nuestra Base de Datos del e-Business Suite está montada sobre una versión 11.2.0.3 cuyos datafiles se encuentran en filesystems EXT3 y será migrado hacia storage en ASM.

Información referente a las características y arquitectura de e-Business Suite puede ser consultado en el siguiente url: http://www.oracle.com/us/products/applications/index.html

Implementación

Se adjunta un cuadro con la distribución actual de los servidores antes de realizar la implementación:

IP ROL
172.68.1.5 Servidor DNS/DHCP/NFS
172.68.1.30 Nodo 1 – Cluster en configuración GNS (Sin software de Base de Datos)
172.68.1.40 Nodo 2 – Cluster en configuración GNS (Sin software de Base de Datos)
172.68.1.20 Nodo 1 - Aplicación EBS en configuración Shared Application + Base de Datos Single Node.
172.68.1.21 Nodo 2 - Aplicación EBS en configuración Shared Application.

 

Como se puede apreciar esta implementación ya considera que tenemos instalado el clusterware en ambos nodos donde residirá la Base de Datos asimismo la capa de aplicación está montada sobre una configuración Shared APPL Application.

Los pasos para llevar a cabo está implementación son bastantes complejos por lo cual se resumirá a modo muy general el esquema de trabajo para luego detallar en cada punto.

1. Certificación de e-Business Suite para el manejo de Base de Datos RAC.
2. Creación de Storage ASM.
3. Instalación de Oracle Database 11.2.0.3 en ambiente RAC en el nuevo servidor.
4. Migración de Base de Datos de Single Instance hacia modalidad RAC entre servidores distintos.
5. Configuración de e-Business Suite de single node a multinodo.

1. Certificación de e-Business Suite para el manejo de Base de Datos RAC

La documentación oficial de Oracle para la versión de e-Business Suite R12 (12.1.1) nos solicita tener aplicado a nivel de aplicación los siguientes parches: 7303030, 9926448, 8919489, 8919491 y 9239090. Los últimos 3 parches listados son especialmente para que la aplicación pueda utilizar el feature de SCAN Listener el cual es un componente nuevo en Oracle RAC 11gR2.

Para la versión de e-Business Suite 12.0.x u otra existe otros pre-requisitos por lo cual recomiendo revisar la nota My Oracle Support (MOS): Using Oracle 11g Release 2 Real Application Clusters with Oracle E-Business Suite Release 12 [ID 823587.1] si fuera el caso.

Para revisar la lista de parches aplicamos el siguiente query conectados con el usuario de Base de Datos APPS.

select bug_number from ad_bugs
where bug_number in ('7303030','9926448','8919489','8919491','9239090');

 

En mi escenario solo está pendiente la instalación de parche 9926448, por lo cual procedemos a su instalación, previa configuración la aplicación en modo mantenimiento. Colocar en modo mantenimiento antes de aplicar un parche de aplicación es un paso recomendado.

Modo Mantenimiento

Para configurar en modo mantenimiento debemos ejecutar el utilitario adadmin. A continuación se presentan la secuencia de pasos a seguir.

Posterior a este paso, procedemos a aplicar el parche pendiente con el utilitario adpatch.

2. Creación de Storage ASM

Mediante el asistente de creación de ASM DiskGroup (ASMCA) procedemos a crear los diskgroups en los servidores donde está instalado la Infraestructura Grid.

Donde básicamente se crearán los DiskGroups: DG_EBS_DATA y DG_FRA, con la finalidad de luego mover la base de datos a este storage.

3. Instalación de Oracle Database 11.2.0.3 en ambiente RAC en el nuevo servidor

Aquí procedemos a instalar el software de Base de Datos 11gR2 (11.2.0.3) en la opción RAC en los servidores donde se encuentra la Infraestructura Grid instalada.

A continuación se adjunta alguna de las pantallas de la instalación del Software de Base de Datos con la opción para RAC.

El software de Base de Datos 11gR2 para e-Business Suite requiere una edición Enterprise Edition y asimismo requiere una serie de parches y software adicionales que una Base de Datos RAC para una aplicación de otro proveedor probablemente no necesitaría para su correcto funcionamiento. Adicional debemos instalar todos los parches que actualmente tiene el software de Base de Datos origen.

Pasos:

Primero se requiere la instalación del Oracle Examples versión 11.2.0.3 para Linux de 32 bits como se adjunta en el siguiente gráfico.

Luego procedemos a aplicar los siguientes parches de Base de Datos: 4247037, 9858539, 12942119, 12960302, 12985184, 13001379, 13004894, 13258936 y 13366268. La aplicación de parches de base de datos se debe realizar mediante el utilitario OPATCH. Los pasos post definidos en la documentación de cada uno de los parches no se debe realizar como parte de este procedimiento.

Cabe mencionar que los parches: 12942119, 12960302, 12985184, 13004894, 13258936, 13366268 automáticamente se instala en ambos servidores que conforman el clúster. El resto de parches deben ser instalados en nodo del RAC de forma manual.

Finalizado la aplicación de los parches listados procedemos a validarlos como se muestra a continuación:

Esta prueba debe ser realizada en cada servidor que conforma el clúster.

La base de datos origen se encuentra con una versión de Timezone versión 17 además de contar con el Patch Set Update 2 para la versión 11.2.0.3, por lo cual nos obliga también a instalarlo en nuestro nuevo ambiente. Los parches de Base de Datos que debemos aplicar en nuestra nueva instalación para que cuenta con la versión Timezone 17 son: 12949905 y 12949919. Estos parches automáticamente se instalan en todos los servidores que conforman el clúster, solo debemos instalarlo en uno de los nodos. Procedemos a validar su instalación:

El utilitario opatch tiene la opción lsinventory -all_nodes que nos permite validar si el parche está instalado en todos los nodos que conforman el clúster siendo esta opción ejecutada en cualquier de los nodos.

Una vez instalado la versión 17 del Timezone procedemos a aplicar el Patch Set Update versión 2 (PSU Abril 2012) que es la actual que tiene el servidor de Base de Datos origen.

Nota: Si vamos a instalar un Patch Set Update (PSU) en un motor de Base de Datos certificado para trabajar con e-Business Suite, debemos previamente validar si está aprobado por Oracle, esta información se encuentra disponible en My Oracle Support (MOS) Nota: Database Patch Set Update Overlay Patches Required for Use with PSUs and Oracle E-Business Suite [ID 1147107.1]. Si la nota previa no certifica aún el PSU que deseamos instalar en un entorno de e-Business Suite, bajo ningún motivo debemos aplicarlo en nuestro ambiente.

En nuestro caso, el PSU de Abril del 2012 (11.2.0.3.2) está certificado para trabajar correctamente con e-Business Suite por lo cual procedemos con su instalación. Este parche también viene incluido en el parche: GRID INFRASTRUCTURE PATCH SET UPDATE 11.2.0.3.2 (INCLUDES DB PSU 11.2.0.3.2), por lo cual actualizaremos el software de Infraestructura Grid y de Base de Datos.

El parche nos pide de requisito tener instalado el utilitario OPatch versión 11.2.0.3 el cual es obtenido en el parche 6880880. La indicación de su instalación está descrita en el README del parche.

Se adjunta la instalación del OPatch en nuestro escenario.

El OPatch debe ser instalado en cada nodo que conforma el clúster tanto para el software de Infraestructura Grid como el de Base de Datos.

Luego procedemos a aplicar el PSU, primero en la Infraestructura Grid y luego en el software de Base de Datos.

Los pasos listados se deben realizar en cada servidor del clúster iniciando en el orden indicado previamente.

En la Infraestructura Grid:

a) Creamos el archivo ocm.rsp.

Este archivo se crea ejecutando el utilitario emocmrsp el cual se encuentra en la carpeta: <ORACLE_HOME>/OPatch/ocm/bin/.

b) Aplicación del PSU: opatch auto -ocmrf

En el software de Base de Datos:

a) Creamos el archivo ocm.rsp.

Este archivo se crea ejecutando el utilitario emocmrsp el cual se encuentra en la carpeta: <ORACLE_HOME>/OPatch/ocm/bin/.

b) Aplicación del PSU: opatch auto -ocmrf <ruta_archivo_ocm.rsp>

Una vez aplicado el PSU en cada servidor tanto para el software de Infraestructura Grid como de Base de Datos realizamos un paso último:

En cada nodo de Base de Datos ejecutamos este comando:

perl $ORACLE_HOME/nls/data/old/cr9idata.pl

Y luego definimos nuestra variable de ambiente ORACLE_NLS10 a la ruta:

$ORACLE_HOME/nls/data/9idata.

Se adjunta un ejemplo:

4. Migración de Base de Datos de Single Instance hacia modalidad RAC entre servidores distintos

Nuestros datafiles y controlfiles de la base de datos single node se encuentran ubicados en el servidor 172.68.1.20 en el filesystem /u01/oracle/PRD/db/apps_st/data

La estrategia será configurar el servicio NFS en el servidor 172.68.1.20 de modo que presente ese filesystem como un directorio compartido hacia el servidor 172.68.1.30 (uno de los nodos del clúster), luego procedemos a levantar la Base de Datos ubicados en el servidor 172.78.1.30 y se ejecutará el proceso de conversión a RAC. Terminada la conversión, nuestra Base de Datos se alojará en el storage ASM (creado en el punto 1).

En el servidor 172.68.1.20 iniciaremos la configuración del servicio NFS.

En el archivo /etc/exports del servidor agregamos la siguiente línea:

/u01/oracle/PRD/db/apps_st/data *(rw,sync,all_squash,anonuid=500,anongid=500)

Ejemplo:

Los atributos que cuenta el directorio compartido en el servicio de NFS son solicitados por Oracle. Si no se especifica estos atributos exactamente como está en el documento, no será posible subir la Base de Datos con los datafiles y control files ubicados en un recurso NFS.

En el servidor destino (172.68.1.30) procedemos a montar el directorio compartido.

La configuración se realiza en el archivo /etc/fstab del servidor agregándole está línea:

172.68.1.20:/u01/oracle/PRD/db/apps_st/data /u01/oracle/PRD/db/apps_st/data nfs rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600 0 0

Ejemplo:

Los atributos adicionales como parte del montaje son requeridos por Oracle.

Una vez configurado el NFS a nivel de servidor y cliente, procedemos a copiar el SPFILE de la Base de Datos en nuestro nuevo ambiente y subimos los servicios para validar la correcta configuración.

Hasta este momento tenemos la posibilidad de tener la Base de Datos levantada en el servidor nuevo. La siguiente labor es a convertirla en modalidad RAC.

Los utilitarios con que se podría usar para realizar esta labor son:

• DBCA
• rconfig
• Enterprise Manager

Para nuestro escenario usaremos rconfig.

a) El motor de Base de Datos tiene una plantilla llamada ConvertToRAC_AdminManaged.xml el cual nos ayudará en la conversión. Previo al trabajo, le sacaremos una copia al archivo antes de modificarlo. Este archivo se encuentra en el directorio:

$ORACLE_HOME/assistants/rconfig/sampleXMLs.

b) Creamos un PFILE con la siguiente información:

spfile='+DISKGROUP'/spfile.ora

Procedemos luego a subir la Base de Datos con el SPFILE actual que tenemos (es obligatorio subir la Base de Datos con SPFILE).

c) Modificamos la plantilla adecuándola a nuestro escenario.

Se ha marcado en color rojo los valores que son solicitados y son sencillos de entender.

d) Procedemos a ejecutar el utilitario rconfig.

Para correr el rconfig previamente, la Base de Datos debe estar con los servicios arriba.

El comando a ejecutar es: rconfig <nombre_plantilla>, ejemplo:

Al final del utilitario debe aparecernos la salida: Operación Succeeded.

Finalizado este punto, nuestra Base de Datos se encuentra alojada en los discos ASM en modalidad RAC y podemos proceder a retirar la configuración NFS que realizamos previamente.

5. Configuración de e-Business Suite de single node a multinodo

Los siguientes pasos tendrán como objetivo integrar el software de Base de Datos con el repositorio en modalidad RAC al ERP.

a) Configuraremos AUTOCONFIG en la capa de Base de Datos.

En el servidor de Aplicación: perl $AD_TOP/bin/admkappsutil.pl

Este comando nos creará el archivo appsutil.zip en la carpeta indicada en el ejemplo. Este archivo procedemos copiarlo en ambos nodos del clúster de Base de Datos en la carpeta $ORACLE_HOME.

En el servidor de Base de Datos: Ejecutamos el stored procedure fnd_conc_clone.setup_clean con el usuario APPS.

Modificamos el parámetro LOCAL_LISTENER para que apunte a los VIP IP.

alter system set
local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=pcgns1-vip)(PORT=1521))))' sid='PRD1';
alter system set
alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=pcgns2-vip)(PORT=1521))))' sid='PRD2';

 

Modificamos la variable de ambiente LD_LIBRARY_PATH para que haga referencia a la carpeta $ORACL_HOME/ctx/lib. Esta modificación se debe realizar en cada servidor de Base de Datos.

Procedemos a crear el archivo CONTEXT_FILE para la capa de Base de Datos

En cada servidor del clúster ejecutar:

$ORACLE_HOME/appsutil/bin/adbldxml.pl appsuser=apps appspass=apps

En cada archivo CONTEXT_FILE creado debemos revisar y hacer los siguientes cambios:

Validar las entradas <global_db_name> y <db_name_lower> sean validas.

Por ejemplo, en el servidor del nodo 2 debemos tener la siguiente configuración:

La entrada <DB_LISTENER> debe modificarse por un nombre de LISTENER común para todos los nodos, en este caso, a todos los nodos se les colocará el nombre LISTENER_EBS

Por ejemplo, en el nodo 1 tenía configurado este valor:

Y debe ser modificado por el valor:

La entrada <s_db_tnsadmin> debe ser igual en todos los nodos.

Por ejemplo, en el nodo 1 tenía configurado este valor:

Y debe ser modificado por el valor:

Creación del nuevo Listener LISTENER_EBS

Como el LISTENER_EBS lo asignaremos al puerto 1521, procedemos a eliminar el LISTENER por default que tenemos con el comando: srvctl remove listener

Luego procedemos a crear el nuevo Listener:

srvctl add listener -l LISTENER_EBS -o $ORACLE_HOME -p 1521

srvctl setenv listener -l LISTENER_EBS -T TNS_ADMIN=$ORACLE_HOME/network/admin

Donde el valor del parámetro TNS_ADMIN debe tener el mismo valor configurado como está especificado en el archivo CONTEXT_FILE

También configuramos el valor del TNS_ADMIN a la Base de Datos como se muestra a continuación:

En cada servidor de Base de Datos ejecutamos el siguiente comando:

perl $ORACLE_HOME/appsutil/bin/adconfig.pl

En ambos servidores de Base de Datos debe finalizar satisfactoriamente el autoconfig como se muestra en el ejemplo.

b) Configuración del balanceo de carga de conexiones desde la capa de Aplicación hacia la Base de Datos:

El objetivo de este punto es permitir que la aplicación pueda generar conexiones hacia un ambiente en clúster

Para lograr este objetivo, desde la capa de aplicación debemos realizar los siguientes pasos:

TNSNAMES.ORA de la Aplicación

Debemos modificar el tnsnames.ora de la capa de aplicación para que luego el autoconfig pueda conectarse a la Base de Datos y así generar exitoso este punto.

vi $TNS_ADMIN/tnsnames.ora

Los campos PROTOCOL, HOST, PORT y SERVICE_NAME deben apuntar a la nueva Base de Datos. Es importante aquí resaltar el uso de IP SCAN como IP a conectarse a la Base de Datos y asimismo retirar el campo SID por SERVICE_NAME. Solo debemos modificar las entradas que hacen referencia a conexiones de Base de Datos y no de aplicación.

Configuración del CONTEXT_FILE

vi $CONTEXT_FILE

Entrada jdbc_url.

Valor original:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=pcebs1.riccio.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PRD)))</jdbc_url>

Por:

<jdbc_url oa_var="s_apps_jdbc_connect_descriptor">jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=pcgns-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=PRD)))</jdbc_url>

Nota: Es importante resaltar que a pesar que SCAN LISTENER es soportado por e-Business Suite, si el Servidor DNS devuelve una IP SCAN a la aplicación y está IP no está disponible generará un error y no buscará otras IPs del SCAN en el Servidor DNS. Este error es básicamente a que e-Business Suite R12 utiliza un cliente Oracle 10g (10.1.2), el cual cadece de opción de failover para IP SCAN. Para solucionar este impase se debe agregar múltiples IP SCAN en la cadena de conexión y con la opción de LOAD_BALANCE y FAILOVER. Este error está documentado en el BUG: 10427234.

Los pasos siguientes van a permitir que las conexiones provenientes de las capas de Oracle Forms, Aplicaciones Self Service y conexiones JDBC puedan balancear carga de conexiones en el Oracle RAC.

Las entradas del archivo CONTEXT_FILE que se referencia en los siguientes ejemplos deben ser modificadas concatenándole el valor de _BALANCE

Balanceo de carga de conexiones en Oracle Forms.

Entrada: oa_var.
Valor original:
<TWO_TASK oa_var="s_tools_twotask" osd="unix">PRD</TWO_TASK>
Por:
<TWO_TASK oa_var="s_tools_twotask" osd="unix">PRD_BALANCE</TWO_TASK>
 

Balanceo de carga de conexiones en Aplicaciones Self-Service.

Entrada: s_weboh_twotask.
Valor original:
<TWO_TASK oa_var="s_weboh_twotask" osd="unix">PRD</TWO_TASK>
Por:
<TWO_TASK oa_var="s_weboh_twotask" osd="unix">PRD_BALANCE</TWO_TASK>

Balanceo de carga de conexiones JDBC.

Entrada: jdbc_connect_alias oa_var.
<jdbc_connect_alias oa_var="s_apps_jdbc_connect_alias">PRD_BALANCE</jdbc_connect_alias>

Una vez realizado los cambios en el archivo CONTEXT_FILE procedemos a ejecutar el AUTOCONFIG en cada nodo que conforma el Shared APPL Application.

sh $AD_TOP/bin/adconfig.sh contextfile=$CONTEXT_FILE

Al acabar el proceso de autoconfig y luego al cargar las variables de ambiente de la aplicación debemos validar que la variable de ambiente TWO_TASK devuelve el siguiente valor: <SERVICIO_BD>_BALANCE, por ejemplo:

La última prueba que queda es validar los servicios dentro de la Aplicación y comprobar que cada componente está conforme.

Conclusión

Como se puede apreciar, e-Business Suite R12 es un ERP que se integra bastante bien en una arquitectura de Base de Datos de Oracle RAC versión 11gR2. Se ha documentado una serie de procedimientos que se deben cumplir para una correcta implementación de migración de Oracle Single Instance a Oracle RAC cuando está montado el aplicativo EBS. Adicional se migró de una configuración de aplicación single node a multinodo. Toda la complejidad y variantes que se ha detallado en este documento hacen que sea uno de los escenarios más completos que puedan existir.




Publicado por Ing. Francisco Riccio. Es un IT Specialist en IBM Perú e instructor de cursos oficiales de certificación Oracle. Está reconocido por Oracle como un Oracle ACE y certificado en productos de Oracle Application & Base de Datos