Cambio de binarios Oracle en Oracle Restart

Hola a todos!!logo_gps

Hoy nos gustaría compartir con vosotros una problemática que nos hemos encontrado al registrar una base de datos en Oracle Restart.

Hemos instalado una base de datos 11.2.0.4 con separación de roles (usuario «oracle» para RDBMS Oracle y «oragrid» para Grid Infraestructure 12.1.0.2). En la instalación del usuario oragrid pusimos como grupo asmdba en lugar de asmadmin. Volvimos a ejecutar el asmlib y reconfiguramos para corregir este error y que el grupo de los discos fuera asmadmin. Hasta aquí ningún problema :-D.

Cuando creamos la base de datos, pusimos al binario oracle los siguientes permisos:

-rwsr-s--x 1 oracle asmadmin 239520865 May 13 2016 /app/oracle/product/11.2.0.4/db_1/bin/oracle

nos dejó crear la base de datos sin errores, pero al registrar la base de datos en Oracle Restart vimos que los permisos se cambiaban a:

-rwsr-s--x 1 oracle asmdba 239520865 May 13 2016 /app/oracle/product/11.2.0.4/db_1/bin/oracle

Debido a esto no arrancaba la base de datos porque no podía acceder a los discos.

En este punto vimos que era necesario reinstalar el software de Grid Infraestructure 12, ¿o no?.

Investigando metalink vimos la nota:

SRVCTL CHANGES THE GROUP OF ORACLE BINARY (Doc ID 1508027.1)

La nota es un poco «extraña» ya que indica que hay que hacer cambios en una fuente en C y compilar de nuevo los ejecutables. Como era por lo menos «curiosa» decidimos probarlo, la otra alternativa era la reinstalación así que no perdíamos nada.

El documento no es exacto porque indicaba utilizar el comando <GI_HOME>/crs/install/rootcrs.pl -unlock y para versión 12 hay que utilizar rootcrs.sh, pero ayuda bastante. Los pasos que realizamos fueron los siguientes:

  1. Como oragrid paramos Oracle Restart:

crsctl stop has

 2. Como usuario root

Cargamos las variables del usuario oragrid

Desbloqueamos el home del software de grid infraestructure para poder realizar los cambios:

 3. Nos volvemos a conectar como oragrid y modificamos el fichero fuente que se encuentra en ./rdbms/lib

vi $ORACLE_HOME/rdbms/lib/config.c

4. Se cambian las dos lineas siguientes para poner asmadmin:

.Lasm_string: .string "asmadmin"
#define SS_ASM_GRP "asmadmin"

 5. Compilamos de nuevo los binarios con el cambio realizado:

cd $ORACLE_HOME/rdbms/lib
rm config.o
make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/config.o
relink all

6. Como usuario root ejecutamos el siguiente comando para bloquear de nuevo el directorio y arrancar Oracle Restart:

$ORACLE_HOME/crs/install/roothas.sh -patch

7. Para comprobar que a partir de ahora no vamos a tener el mismo problema ejecutamos el siguiente comando:

setasmgidwrap o=/app/oracle/product/11.2.0.4/db_1/bin/oracle

Es el comando que se lanza por debajo cuando se registran bases de datos o se hacen cambios en las mismas de Restart.

  8. Una vez hecho esto vemos que el binario ya es correcto:

[oragrid@test1~]$ ls -ltr /app/oracle/product/11.2.0.4/db_1/bin/oracle
 -rwsr-s--x 1 oracle asmadmin 239520865 May 13 2016 /app/oracle/product/11.2.0.4/db_1/bin/oracle

Pues estos son los pasos que realizamos, esperamos que os sean útiles si os encontráis con el mismo problema.

Un saludo.

Equipo DBA.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *