feedburner

Lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua.

Oracle XE en Ubuntu Edgy amd64 / em64t ( x86-64 )

Etiquetas:

Oracle XE sólo se distribuye en binarios de 32bits, lo que provoca que no pueda instalarse en distribuciones linux de 64bits 'tal cual'. Por necesidades de un proyecto interno he tenido que ver la viabilidad de instalar y usar una base de datos XE bajo Ubuntu Edgy 64 bits, y después de comentarlo un poco con hali en el canal #oracle de irc.freenode.org y unas búsquedas en Google, no ha resultado nada difícil. Aunque estas explicaciones estén descritas para Ubuntu, con entender la idea del porqué de cada cosa, tiene que ser trivial reproducir el proceso en otras distribuciones basadas por ejemplo en RedHat.

  • Debemos instalar librerías de 32 bits para que el proceso de linkado de los binarios de Oracle se pueda realizar.
apt-get install libc6-i386


Explicación de la librería libc6-i386

( luego me he dado cuenta que existen unas librerías libc6-i686 que son la compilación optimizada para i686 de libc6, así que sería más óptimo usarlas en vez de las libc6-i386 )

  • Debemos instalar la versión de 32bits de la librería libaio. Este proceso tengo que mirar si sería posible hacerlo con apt ( en un post anterior indiqué como instalar paquetes de distintas arquitecturas usando up2date en RedHat ), pero de momento lo haremos de forma manual ya que sólo es un paquete y lo tenemos bien localizado.
Podemos bajarlo de http://packages.ubuntu.com/edgy/libs/libaio1 , clickando en el link i386 del apartado Download libaio1 y seleccionando el mirror que más nos convenga ( leed el porqué de la existencia de estas librerías para que entendáis como mejora el rendimiento de I/O ).

y una vez aceptada la licencia de uso, descargamos el paquete .deb en el apartado Oracle Database 10g Express Edition ( Universal ) para tener soporte para varios idiomas

  • Para instalar estos 2 últimos paquetes ( libaio y oracle XE en 32bits ), deberemos forzar dpkg a que los instale aún viendo que la arquitectura donde estamos corriendo no es la misma o compatible con la compilación del software que tratamos de instalar. Para eso utilizaremos la opción --force-arquitecture
dpkg -i --force-architecture libaio1_0.3.106-0ubuntu1_i386.deb
dpkg -i --force-architecture oracle-xe-universal_10.2.0.1-1.0_i386.deb


Como supongo que quien intenta instalar un Oracle ya sabe mínimamente los requerimientos recomendados de entorno, no me meteré a explicar lo del tamaño de swap, memoria mínima... esto está muy bien explicado en cientos de webs, San Google os puede ayudar:)

Ahora ya tenemos los binarios correctamente instalados ( la instalación ya nos ha creado el usuario 'oracle' y el grupo 'dba', propietarios del software de Oracle que hemos instalado) . Sólo nos falta la configuración final y la puesta en marcha.

  • Debemos ejecutar un script proporcionado por Oracle que entre otras cosas creará los scritps de parada y arranque automático de la instancia Oracle y el listener. Este script debe ejecutarse como root, sin el uso de sudos, para ello primero obtendremos una sesión pura de root ( sin necesidad de habilitar el login directo del superusuario )
sudo -s


  • Ahora que ya tenemos una sesión de root, lanzamos el script de configuración del servicio para Oracle XE ( puerto del listener, de la aplición web de administración, passwords... )
/etc/init.d/oracle-xe configure

  • Al cabo de un rato nos debería dar el ok al porceso de configuración/creación de la BD y tener varios procesos de oracle corriendo ( el listener, pmon, smon, reco... ) y deberíamos poder acceder a la administración de la nueva BD mediante el navegador web local al servidor, yendo a la dirección http://127.0.0.1:(puerto que hayamos configurado antes)/apex
  • Es imperativo la definición de las variables de entorno ORACLE_HOME y ORACLE_SID para el usuario oracle, así podréis trabajar con las herramientas de consola ( lnsrctl, sqlplus, rman... ) sin tener problemas
su - oracle
vi $HOME/.bash_profile
export ORACLE_SID=XE
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin


Salid de la sesión oracle, volved a entrar y ya podréis trabajar normalmente con la nueva instancia

oracle@nclserver02:~$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Apr 10 16:37:03 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba
Connected.

SQL> select INSTANCE_NAME,VERSION,DATABASE_STATUS,EDITION from v$instance;

INSTANCE_NAME VERSION DATABASE_STATUS EDITION
---------------- ----------------- ----------------- -------
XE 10.2.0.1.0 ACTIVE XE

SQL> exit
Disconnected from Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production


oracle@nclserver02:~$ rman target / nocatalog

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Apr 10 16:39:59 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connected to target database: XE (DBID=2500655873)
using target database control file instead of recovery catalog

RMAN>


Fuentes: canal #oracle en irc.freenode.org
Google me llevó a http://valery.bgit.net/blog-en/2006/07/09/oracle-database-10g-express-edition-in-linux
os recomiendo la lectura de acciones post instalación

6 comentarios:
gravatar
AlbertuX dijo...
viernes, 20 de abril de 2007, 15:28:00 CEST  

Bien, con esto me he peleado (y he perdido...).
No precisamente para instalar un Oracle, si no genericamente, muchas aplicaciones importantes de uso de desktop (JRE, Flash,...) no tienen version específica de 64 bits. Eso es un problema para los "listos" que tenemos un AMD64 como PC de desktop. San Google me comento la instalación de el paquete linux32 para poder habilitar la instalación de paquetes de arquitectura, haciendo el --force-architecture. El dpkg me decia que si quieres arroz...
¿Este libc6-i386 es la libreria que has encontrado específica para este Oracle?
Deberia buscar las librerias que necesitan, cada aplicación que quiera instalar en 32 bits (?)

gravatar
dballester dijo...
viernes, 20 de abril de 2007, 17:06:00 CEST  

En cuanto a java en 64 bits si que existe: http://www.java.com/es/download/manual.jsp quizá con tu mención a jre te refieres al plug-in de java, ya que Sun todo y tener disponible una versión de su máquina virtual de java para entornos Linux 64bits entrega únicamente el plugin de java en 32bits, independientemente de que tu máquina virtual de java sea de 32 o 64 bits. Para ello 2 cosas:

1.- Parece ser que en un futuro no muy lejano ( cuando salga la release 1.7 ) Sun distribuirá el plugin de 64bits nativo http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4802695

2.- Mientras no ocurra eso, podrías probar con el java de Blackdown ( java 1.4 ) http://www.blackdown.org/java-linux/java2-status/jdk1.4-status.html
y usar esa máquina virtual para el navegador

En cuanto a lo de libc6-i386...

Si necesitas correr una aplicación compilada en 32bits en una máquina de 64 bits ( hablo de arquitectura x86 ) tienes un problema, y es que al estar compilada en 32 bits en el momento de tener que utilizar una librería determinada irá a buscar la que ha sido informada durante su compilación ( digamos por ejemplo libacl.so.1.1.0 ), se encontrará con la versión 64bits de esa librería y no será capaz de usarla ( entre otros problemas ) . Instalando paquetes para la compatibilidad, como pueden ser libc6-i386, lo que estás haciendo es instalar un set de liberías determinado ( el que te ofrezca el empaquetador del paquete ) en 32 bits sin que entren en conflicto con las nativas de 64bits ( paths distintos y cierta renconfiguración ), esto, unido a la capacidad de las cpus x86-64 de ejecutar código nativo de 32bits aunque su modo de trabajo sea 64, permite que una aplicación de 32 bits pueda ser ejecutada en un entorno de 64bits y además usando las librerías adecuadas en cada momento ( repito, esto es aplicable a arquitectura x86, x86_64 )

gravatar
AlbertuX dijo...
sábado, 21 de abril de 2007, 12:58:00 CEST  

Bien, el "apaño" para el JRE i flash (efectivamente me refieria a los plugins para el navegador), ha sido instalar un Swiftfox compilado en 32 bits, con todos sus plugins de 32 bits, y funciona a la perfección. Lo del JDK, lo he probado, si, funciona, y parece ir más rapido que el switfox (no es lo mismo usar todo el navegador a 32 bits que solo el plugin), si va un rato, pero al rato de tener una pagina con una miniaplicacion java abierta, el navegador se cierra, y punto, sin más casque, error, ni información :?
Seguimos investigando a ver...

gravatar
Anónimo dijo...
miércoles, 6 de junio de 2007, 21:07:00 CEST  

buenisimo... me a funcionado de una, muchas gracias, me estaba sacando canas verdes pero gracias a tu post lo he conseguido de verdad que gracias

gravatar
dballester dijo...
jueves, 7 de junio de 2007, 10:28:00 CEST  

Ricardo:

Gracias por el post, la idea de este blog es que sea útil - y al mismo tiempo me sirva como 'bloc de notas' ya que mi memoria no es que digamos 'fantástica'-:)

Cualquier comentario, crítica o apunte de mejora es siempre bienvenido

gravatar
Anónimo dijo...
jueves, 20 de marzo de 2008, 17:48:00 CET  

sei un grade, grazie!

Publicar un comentario