PHP + Oracle

Puesto que la encantadora gente que compró Sun ha recortado aún más la nueva versión "express" de su base de datos por excelencia y, por si fuera poco, ha decidido que sólo sea accesible para los poseedores de nuevas máquinas aptas para 64 bits y únicamente soporte distribuciones GNU/Linux con paquetería rpm (¿les habrá suplicado RedHat para manternelo?), me he decantado por usar la versión 10.2 XE (Express Edition).

Si aún con lo dicho quieres instalar la versión 11g, como hice yo, tendrás que lidiar -una vez hayas conseguido configurar los parametros de tu kernel con la poca información existente- con los problemas de sobrecarga de CPU que está dando en máquinas virtuales. Busca, busca y acaba en el foro oficial de Oracle y te responderán que tu sistema operativo no está soportado. Créeme, usa la 10g si no eres muy amigo de RedHat o no cumples alguno de los nuevos requisitos mostrados aquí http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#BHCHGDIE

Nota: Oracle 10g necesita 990MB de swap. Si no los tuvieses, mira ésta entrada de mi blog


Instalación de Oracle 10g en Debian/Ubuntu


Necesitamos lo siguiente en Ubuntu:
sudo apt-get install libc6

Bajamos 2 paquetes desde el servidor de Oracle, yo voy a hacerlo con el comando wget (-c para recuperar descargas fallidas):
wget -c http://oss.oracle.com/debian/dists/unstable/main/binary-i386/libaio_0.3.104-1_i386.deb http://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb

Antes de instalarlos ejecuta el siguiente comando, que además te servirá de calculadora para la terminal y tus scripts (sal de ella con el comando "quit", la primera vez que lo usé quedé atrapado :P )
sudo apt-get install bc

Y ahora sí, instala:
sudo dpkg -i libaio_0.3.104-1_i386.deb
sudo dpkg -i oracle-xe-universal_10.2.0.1-1.1_i386.deb

Lo siguiente sería configurar Oracle:
sudo /etc/init.d/oracle-xe configure




He cambiado el puerto por defecto al 8081, he escrito una contraseña y le he indicado que no se inicie en cada arranque del sistema.

Añade lo siguiente al final del fichero de configuración de tu intérprete de comandos (~/.bashrc o ~/.zhrc o cualquiera que uses) para indicar las variables de entorno:
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH

Desloguea o reinicia para que se tomen en cuenta, también puedes ejecutar:
source ~/.bashrc

Si todo es correcto, en la dirección http://127.0.0.1:8081/apex puedes ver (8081 porque, como indiqué, lo he cambiado en la configuración):




Vamos a jugar un poco con una base de datos predefinida en Oracle 10g, denominada Human Resources (HR), así comprobamos que lo hemos hecho todo bien.


Usando la utilidad sqlplus que provee Oracle hemos ingresado, conectado como administrador (con la contraseña que pusimos en la configuración inicial) y cambiado la contraseña del usuario HR. Tras ello, ingresamos con este usuario y su contraseña para mostrar sus tablas.



Manejo de Oracle desde PHP


En el siguiente paso vamos a mostrar esa misma tabla del punto anterior desde una página web generada con PHP. Para ello será necesario tener instalado y funcionando un servidor con su respectivo módulo de PHP. Puedes seguir ésta corta entrada de mi blog para hacerlo en Apache sobre GNU/Linux, obviando la parte de MySQL.

Existen diversas formas de conectar y acceder a una base de datos. Igual que la extensión MySQLi proporciona un rápido y fácil acceso, oci8 ofrece capacidades concretas y un alto rendimiento para el trabajo con Oracle. Sin embargo, desde PHP 5.1 esto es considerado old school:

PDO es una nueva librería orientada a objetos a modo de capa de abstracción para el acceso de los datos, cuya principal ventaja es ser independiente de la base de datos. Oracle proporciona el driver pdo_oci que, reiterando el principio de éste artículo, no está integrado en el paquete php de Debian y derivados. En ArchLinux, gracias a su comunidad, lo tienes todo en el repositorio de usuarios (AUR), pero como Ubuntu es la distribución que seguramente estés usando, te ha tocado compilar PHP a mano si quieres acceder a bases de datos Oracle:


No hay comentarios: