sql >> Base de Datos >  >> RDS >> Oracle

No se puede compilar GI 12.1.0.2 y error de segmentación

Así que últimamente he tenido dificultades con cosas que debería saber mejor. Todos hemos estado allí antes.

Estoy tratando de recrear un banco de pruebas RAC de 2 nodos en mi computadora portátil. Este será Oracle 12.1.0.2 en Oracle Linux 6.5 con VirtualBox 5.0. Debería ser bastante simple, ¿verdad? Incluso escribí instrucciones sobre cómo hice esto en abril de este año. Estoy siguiendo exactamente los mismos pasos en mi documento en la misma computadora portátil, pero todavía tengo problemas. Las únicas dos cosas que han cambiado es que voy directamente a 12.1.0.2 (creo que mi documento era 12.1.0.1) y ahora tengo VB 5.0 en mi computadora portátil.

Tengo mis 2 nodos virtuales creados y listos para funcionar. Enciendo OUI para comenzar mi instalación de Grid Infrastructure. Cuando OUI llega a la fase de vinculación, aparece un mensaje de error.

Error al invocar el objetivo 'irman ioracle' de makefile.

Todos hemos estado en una encrucijada en la vida. Tienes que elegir. ¿Voy a la izquierda o voy a la derecha? Desafortunadamente para mí, tomé la dirección equivocada y perdí algunas semanas de mi tiempo libre. En este punto, tenía que tomar una decisión. ¿Hago exactamente lo que dice el error o confío en mi experiencia? Ignoré ciegamente el error y me basé en mi experiencia. Tonto de mí.

Hace solo dos meses tuve exactamente el mismo error cuando no pude compilar GI 12.1.0.2 en un banco de pruebas. Ese banco de pruebas se estaba ejecutando en hosts VMWare ESX. Presenté una SR con Oracle Support y me informaron que mi problema de compilación se debió a que no tenía suficiente RAM dedicada a cada máquina virtual. Al ser un entorno virtual, esto fue bastante fácil de arreglar. Hice que mi SysAdmin aumentara la RAM y el espacio de intercambio en las máquinas virtuales y GI 12.1.0.2 compilado exactamente como se prometió. Así que, naturalmente, asumí que me estaba encontrando con el mismo problema aquí. En mi computadora portátil, seguí aumentando la memoria RAM. Amplié el espacio de intercambio. Incluso llegué a reconstruir los nodos desde cero. Pasé las últimas dos semanas en el camino de la experiencia y lo encontré lleno de baches, áspero, polvoriento y muy desagradable.

El camino que debería haber tomado era hacer explícitamente lo que decía el cuadro emergente... lea el archivo de registro para obtener más detalles. Cuando finalmente superé mi terquedad de pensar que sabía la respuesta, leí el archivo de registro. Encontré los siguientes mensajes hacia el final.

INFO: - Linking Oracle
INFO: rm -f /u01/app/crs12.1.0.2/rdbms/lib/oracle
INFO: /usr/bin/ld: cannot find -ljavavm12
collect2: ld returned 1 exit status
INFO: make: *** [/u01/app/crs12.1.0.2/rdbms/lib/oracle] Error 1

¡Bueno, es completamente obvio ahora! Falta un archivo de biblioteca. Una búsqueda rápida en Internet me llevó fácilmente a la solución. No estoy solo en este problema, pero por alguna razón OUI no está copiando libjavavm12.a a $GRID_HOME/lib como debería ser. Con ese cuadro emergente todavía sentado allí, emito lo siguiente en el nodo.

[oracle@host01 ~]$ export GRID_HOME=/u01/app/crs12.1.0.2
[oracle@host01 ~]$ cp $GRID_HOME/javavm/jdk/jdk7/lib/libjavavm12.a $GRID_HOME/lib

Luego volví al cuadro emergente y presioné el botón REINTENTAR. Efectivamente, la maldita cosa compiló y OUI terminó su trabajo.

ACTUALIZACIÓN:Tuve el mismo problema al instalar el software RDBMS 12.1.0.2 en el clúster. Utilicé exactamente la misma solución para que Oracle compilara correctamente también para el software de la base de datos.

Pero no había terminado. Como sabe cualquier persona que haya instalado Grid Infrastructure, debe ejecutar el script $GRID_HOME/root.sh en todos los nodos más adelante en el proceso. Cuando intenté esto en el primer nodo, recibí un error de "falla de segmentación". Resulta que hay un problema (y de nuevo, no estoy solo aquí) con perl en las instalaciones de GI 12.1.0.2. Incluso lo siguiente recibirá una falla de segmentación:

cd $GRID_HOME/perl/bin
./perl -v

La solución es reinstalar Perl en $GRID_HOME. Encontré una entrada de blog de Laurent Leturgez que describe exactamente cómo se hace esto. Nunca me habría dado cuenta de esto por mi cuenta. Después de volver a instalar Perl en todos mis nodos, el script root.sh funcionó bien.

ACTUALIZACIÓN:Tuve el mismo problema al instalar el software RDBMS 12.1.0.2 en el clúster. Utilicé exactamente la misma solución para que perl se ejecutara sin un error de segmentación.

Como todos nosotros, confío en mi experiencia para ahorrarme mucho tiempo. Las cosas que aprendí hace un mes o un año se aplican hoy. A veces, la experiencia se interpone en nuestro camino y nos lleva por un camino que deseábamos no transitar.