Traducir Blog

martes, agosto 26, 2008

Instalar y Configurar Oracle 10G en Debian Etch junto con SQLDeveloper 1.5

Bueno, pues eso, llevo un par de semanas haciendo que funcione Oracle 10g en mi computadora, casi que no lo logro, aquí trataré de contar un poco como ha sido mi experiencia, los pasos que he tenido que realizar y otros detalles de la instalación, una guiá que me ha parecido excelente y que me ha servido bastante para conseguir este objetivo ha sido esta

Voy a tratar de explicar un poco los pasos que he seguido en esta guiá, las dificultades que he tenido y como las he afrontado para poder instalar el motor, finalmente mostraré como instalar un cliente que particularmente me parece que es bastante util, me refiero a SQLDeveloper 1.5. Bueno.... comencemos:





INSTALACIÓN Y CONFIGURACIÓN DE ORACLE 10G:

Primero que nada, se debe descargar la base de datos desde aqui en este momento en este sitio se puede descargar Oracle 10g, se requiere el siguiente fichero: ship.db.lnx32.cpio.gz (649,170,233 bytes) (cksum - 1778052285) Tener en cuenta que debe de ser este fichero solamente, con el cual se instala la base de datos oracle 10g y herramientas bastante utiles como sqlplus, isqlplus, Enterprise Manager 10g Datagrid Control, Net Configuration Assistant... entre otras. Vamos a comenzar con la configuración inicial de paquetes y parámetros que se deben de modificar para su correcto funcionamiento, primero que todo las librerías necesarias, en mi experiencia personal, no todas las que dicen que se requieren se encuentran disponibles para Debian Etch, claro, esto también es debido a que Oracle 10g no esta disponible para Debian Etch, de hecho solamente esta certificado para Red Hat, mas adelante explicaré un poco sobre esto, es importante tener al menos las siguientes:

  • libc6-dev (de vital importancia que sea la ultima versión)

  • binutils

  • lesstif2

Estas son las mas importantes, he encontrado que en muchos sitios recomiendan otras como libmotif3, esta no se encuentra en los repositorios de Debian, pase de ella, y al final no tuve ningún problema con la instalación ;) Posterior a esto me dedique a crear los grupos y el usuario oracle para la instalación y ejecución de todos los servicios que se usaran, he ejecutado lo siguiente como root claro esta:

groupadd oinstall

groupadd dba

useradd -c "Usuario Oracle10g" -g oinstall -G dba -m -d /home/oracle oracle

En Debian Etch, hay que considerar que al usar el comando useradd el directorio HOME no es creado implícitamente, debe indicarse que se quiere crear dicho directorio y especificar su ubicación esto con las opciones -m y -d Se asigna password al nuevo usuario de este modo: sudo passwd oracle
Como
root obviamente Y listo, después de esto ya esta el usuario creado, ahora debemos crear la estructura de directorios base para la instalación del producto, simplemente creación de directorios, nada de que preocuparse:

mkdir -p /u01/app/oracle

mkdir -p /u02/oradata

chown -R oracle:oinstall /u02 /u01

chmod -R 775 /u01 /u02

Luego viene la parte de configuración, donde se especifican los parámetros del Kernel que deben modificarse, en este punto los pasos que se deben realizar son los siguientes:

Nota Importante: Los pasos son tomados de la guiá anterior encontrada aqui

  1. Enlaces Simbólicos: Primero que todo añadir los siguientes enlaces simbolicos, que en sistemas certificados por Oracle como (Red Hat Enterprise) se encuentran normalmente ya creados, sin embargo, en Debian deben ser creados, ejecutar:
    ln -s /usr/bin/awk /bin/awk
    ln -s /usr/bin/rpm /bin/rpm
    ln -s /usr/bin/basename /bin/basename
    ln -s /etc /etc/rc.d

  2. Requerimientos del Sistema: Se deben verificar los requerimientos mínimos del sistema, asumo que cuando menos conoces tu maquina ;) lo que debes de tener en cuenta es que la instalación de Oracle 10g requiere como mínimo 512 de memoria RAM y 1 Giga de SWAP, aunque esto si queremos instalarlo, en ningún momento se ha hablado de ejecutarlo, Oracle es bastante pesado y para efectos prácticos, instalarlo en un equipo GNU/Linux con 512 de RAM es... digamos tedioso de trabajar, ya que Oracle consumiría absolutamente todos los recursos..., es mejor emplear un sistema un poco mas robusto, con por lo menos 1 Giga de RAM, aunque 2 Gigas no vendrían mal ;).
    En cualquier caso si desconoces esas características las puedes consultar con los siguientes comandos:

    grep MemTotal /proc/meminfo grep SwapTotal /proc/meminfo
  3. Modificar los limites del Kernel: En esta parte es necesario modificar los parámetros del Kernel, de modo tal que quede algo optimizado para la instalación de Oracle 10g. Se deberán ejecutar inicialmente las siguientes instrucciones por separado:

    /sbin/sysctl -a |grep sem
    /sbin/sysctl -a |grep shm
    /sbin/sysctl -a |grep file-max
    /sbin/sysctl -a |grep ip_local_port_range

    La salida de este comando solamente determina los limites del Kernel que tiene en ese momento el sistema, una configuración adecuada para cada una de estas entradas seriá como se indica a continuación, en el caso de que algunos de estos valores no concuerden se deben modificar el archivo /etc/sysctl.conf y ejecutar el comando sysctl -p:

    kernel.sem = 250 32000 100 128
    kernel.shmmni = 4096
    kernel.shmall= 2097152
    kernel.shmmax = 2147484648
    fs.file-max=65536
    net.ipv4.ip_local_port_range=1024 65000


  4. Seguimos modificando los limites: Ahora se deben de modificar (si es el caso) el valor por defecto de los descriptores de fichero para el usuario oracle, podría adicionarse las siguientes lineas en el archivo /etc/security/limits.conf En la guiá indicada anteriormente define las siguientes lineas para todos los usuarios, pero este no es el objetivo, ya que solamente el usuario oracle debería tener configuradas estas variables:

    * soft nproc 2047 * hard nproc 16384 * soft nofile 1024 * hard nofile 65536


    Luego se deberá adicionar la siguiente linea (sino existe ya) al fichero /etc/pam.d/login:

    session required /lib/security/pam_limits.so

  5. Modificar el profile del usuario Oracle:
    Solamente basta con adicionar las siguientes lineas al fichero $ORACLE_HOME/.bash_profile:

    if [ $USER = "oracle" ]; then
    
    if [ $SHELL = "/bin/sh" ]; then
    ulimit -p 16384
    ulimit -n 65536

    else
    ulimit -u 16384 -n 65536
    fi
    fi


  6. MODIFICACION DE LAS VARIABLES DE ENTORNO:

    Se modifican las variables de entorno del usuario oracle con el fin de que se puedan ejecutar sin ningún problema los comandos relacionados con inicio de los listeners, inicio de la base de datos, sqlplus e inicio de isqlplus... etc. Entre otras cosas también se adicionan las rutas relacionadas:

    ORACLE_BASE=/u01/app/oracle
    
    ORACLE_HOME=/u01/app/oracle
    /product/10.1.0/db_1; export ORACLE_HOME
    ORACLE_SID=test; export ORACLE_SID
    ORACLE_TERM=xterm; export ORACLE_TERM
    ORACLE_OWNER=oracle; export ORACLE_OWNER
    NLS_LANG=SPANISH_SPAIN.WE8ISO8859P1; export NLS_LANG
    CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zip
    LD_LIBRARY_PATH=${ORACLE_HOME}/lib;
    export LD_LIBRARY_PATH

    DISABLE_HUGETLBFS=1; export DISABLE_HUGETLBFS
    TEMP=/tmp; export TEMP
    TMPDIR=/tmp; export TMP
    PATH=$PATH:/u01/app/oracle/product/10.1.0/db_1/bin;
    export PATH


  7. "Engañar" al instalador de Oracle: 

    Al descargar Oracle muy posiblemente te has dado cuenta de que este software esta solamente disponible para la distribución Red Hat..., esto es un problema al momento en el que se esta realzando la instalación de Oracle sobre Debian ya que el instalador verifica que se trata de instalar el software sobre una versión de GNU/Linux certificada, sin embargo esto puede ser resuelto sin muchas dificultades solamente creando el fichero de configuración que indica la distribución del sistema operativo que se esta empleando el instalador busca este fichero para comprobar que se trata de un sistema Red Hat, solamente se crea dicho archivo con el contenido adecuado y no es mas.... se hace de la siguiente manera:

    nano /etc/redhat-release ---Podras utilizar cualquier editor de texto...

    en el archivo escribir y guardar este contenido:


    Red Hat Linux release 2.1 (drupal)
    

    Y esto es todo, Ahora se continua con la instalación


INSTALACIÓN DE ORACLE 10G EN DEBIAN ETCH
Pues inicialmente, vamos a descomprimir de la siguiente forma el archivo descargado:

gunzip ship.XXXX.cpio.gz cpio -idmv <>

Con esto se crea el directorio Disk1 el cual contiene el instalador de oracle 10g llamado runInstaller, lo ejecutamos:
./runInstaller.sh

En el caso de que en las comprobaciones de la pantalla arroje un error y no se pueda proceder con la instalación, es probable que se tr ate de que el servidor x no se encuentra iniciado , (bastante comun), para solucionarlo como root tratar de ejecutar lo siguiente

xhost +


Esto mostrara un mensaje informando que el servidor x se encuentra listo para recibir nuevos clie
ntes, después como el usuario normal creado anteriormente se vuelve a ejecutar el instalador


PASOS DE INSTALACIÓN:
1. En el primer paso se selecciona instalación avanzada:

2. Se dejan los valores por defecto:

 

3. Se elige edición Enterprise del producto en la siguiente interfaz.

Posterior a esto se realiza la verificación del producto para validar que las librerías necesarias se encuentren instaladas y los requisitos de sistema se cumplan correctamente, posterior a esto, se selecciona el tipo de base de datos que se quiere instalar, especificando que se creara una nueva base de datos, Se introducen los datos relacionados con la misma, nombre de la BD y SID, normalmente se deja el SID generado a partir del nombre.
Se sigue el proceso de instalación con los valores por defecto hasta que se llega al punto de especificar el tipo de almacenamiento, el mas común es "Sistema de archivos" donde se especificara el directorio creado
anteriormente

/u02/oradata
se continua con los valores por defecto las próximas 2 pantallas, y se procede a instalar cuando aparece el botón Instalar, después de aproximadamente 20 minutos o 30 dependiendo de tu computadora, veras que el instalador termina y comienza la creación de la nueva base de datos, esto tarda aproximadamente 5 o 10 minutos.
Finalmente se muestran las rutas de acceso a las herramientas instaladas, tales como Oracle Enterprise Manager 10g, iSQLPlus UltraSearch normalmente ubicadas en las direcciones:

URL de Ultra Search:

http://localhost:5620/ultrasearch
URL de Herramienta de Administración de Ultra Search:
http://localhost:5620/ultrasearch/admin
URL de iSQL*Plus:
http://localhost:5560/isqlplus
URL de Enterprise Manager 10g Database Control:
http://localhost:5500/em

Con esto finaliza la instalación y configuración de Oracle 10g en Debian Etch, ahora se explicara un poco las bases previas para usar las herramientas, y servicios relacionados:


1. Creación del Servicio de Oracle:

Si se necesita que la base de datos arranque con el sistema (algo que personalmente no recomiendo mucho por el tema de consumo innecesario de recursos) se deberá editar el archivo de configuración /etc/oratab en este fichero se especifica lo siguiente:

*:/u01/app/oracle/product/10.1.0/db_1:N

SID_BD:/u01/app/oracle/product/10.1.0/db_1:Y

Luego se crea el script de arranque en /etc/init.d/oracle con el siguiente contenido:

#!/bin/bash

#
# Run-level Startup script for the Oracle Instance and Listener
#
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME="/u01/app/oracle/product/10.1.0/db_1"
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
# start TNS listener
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
# start database
su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
# stop TNS listener
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
# stop database
su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0

Luego se le dan permisos de ejecución

chmod 755 oracle

Y se añaden los niveles de ejecución

ln -s /etc/init.d/oracle /etc/rc.d/rc2.d/S99oracle

ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc4.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc0.d/K01oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc6.d/K01oracle

Y con esto basta ya cada vez que se inicie el sistema oracle es iniciado también, en el caso de que se requiera iniciar o detener la base de datos, se puede ejecutar como cualquier servicio de GNU/Linux ejecutando desde /etc/init.d/

./oracle start|stop

Ahora vamos con los servicios:
Listener:
Para que clientes como SQLDeveloper puedan conectarse a la base de datos Oracle y hacer uso de ella, es necesario que el servicio de red este disponible, inclusive aunque dicho cliente se ejecute en la maquina local, esto se consigue con un Listener de la base de datos, dicho servicio se crea normalmente con un fichero de configuración muy importante ubicado en $ORACLE_HOME/network/admin/listener.ora, en el se especifica el tipo de servicio de red que se presta y la dirección de la base de datos, en un plano mas general pueden crearse los listeners manualmente o utilizar la utilidad del Asistente de Configuración de Red el cual es una interfaz sencilla que permite crear los listeners con un sencillo paso a paso de forma gráfica.
Para ejecutarlo basta con escribir en consola el comando
netca en pasos anteriores se han configurado las variables de entorno y el path para el usuario oracle, se espera que siempre se ejecuten todos los comando que se dan a continuación con dicho usuario. En el caso de que el comando netca no sea reconocido, todas las utilidades de oracle se encuentran en el directorio $ORACLE_HOME/bin/ desde donde se podrán ejecutar todos los comandos sin ningún tipo de dificultad como si se tratara de un servicio normal. Otro comando que permite una administración mas completa de los servicios en red es netmgr Ahora se puede ejecutar el comando de inicio del listener, es un servicio que permite iniciar y detener el listener con el comando
lsnrctl start|stop

Se debe tener precaución en ejecutarse con el usuario adecuado, es decir el usuario Oracle para que no falle el inicio o parada del servicio.

ISQLPlus:
Al igual que el listener, se trata de un servicio de Oracle que viene desde la versión 9i, donde se pueden ejecutar los comandos SQL ingresados por un usuario desde una consola Web por medio del puerto 5620 normalmente, esta ruta completa se da cuando se termina de instalar el motor.
para iniciar o detener el servicio basta con ejecutar el comando


isqlplusctl start|stop

Y ya esta, se puede acceder desde un navegador web a esta herramienta haciendo uso de Login y Password.

OEM (Oracle Enterprise Manager) :
Se trata de una potente herramienta incluida desde oracle 10g que permite visualizar y generar reportes muy variados sobre administración, rendimiento y tuning de la base de datos, permite realizar tareas administrativas de mantenimiento y generación de copias de seguridad, bastante robusta y fácil de manejar, se encuentra en un entorno web, asi que al igual que isqlplus se puede acceder a ella por medio de un navegador web y con un usuario con rol de sysdba, normalmente usuario sys. Para iniciar o detener el servicio se ejecuta:

emctl start|stop dbconsole

SQLPLUS:
Otra opción menos interactiva pero bastante robusta y común para los desarrolladores de oracle desde antiguas versiones es SQLPlus, basada en una consola de texto, donde se permite conectar a una base de datos oracle sin necesidad de tener un listener activo en el momento de la conexión
Su uso típico es el siguiente:


sqlplus /nolog
SQL> conn sys/passdesys as sysdba

Conectado.

SQL> SELECT * FROM V$INSTANCE;

INSTALANDO SQLDEVELOPER PARA CONEXIÓN A BASE DE DATOS ORACLE 10G:

Ahora se procede a instalar SQLDeveloper, el procedimiento es realmente simple, solamente se requiere descargar SQLDeveloper desde el sitio oficial de Oracle aqui
En el enlace que dice
SQLDeveloper 1.5 se podrá descargar el software que vendrá en forma de un paquete RPM, el cual se puede convertir posteriormente en un paquete .deb por medio del comando alien el cual se puede instalar con un simple comando de instalación con APT
Para ejecutarlo saldría en consola algo similar a esto:

jdaanialdebian:/home/oracle# alien sqldeveloper-1.5.54.40-1.noarch.rpm
Warning: Skipping conversion of scripts in package sqldeveloper: postinst
Warning: Use the --scripts parameter to include the scripts.
sqldeveloper_1.5.54.40-2_all.deb generated
jdaanialdebian:/home/oracle#

Esto indica que el paquete .deb ha sido generado y puede instalarse sin ningun problema con el uso del comando
dpkg de la siguiente forma:

jdaanialdebian:/home/oracle# dpkg -i sqldeveloper_1.5.54.40-2_all.deb
(Leyendo la base de datos ...
131324 ficheros y directorios instalados actualmente.)
Preparando para reemplazar sqldeveloper 1.5.54.40-2 (usando sqldeveloper_1.5.54.40-2_all.deb) ...
Desempaquetando el reemplazo de sqldeveloper ...
Configurando sqldeveloper (1.5.54.40-2) ...
jdaanialdebian:/home/oracle# sqldeveloper

Oracle SQL Developer
Copyright (c) 2008, Oracle. All rights reserved.

Type the full pathname of a J2SE installation (or Ctrl-C to quit), the path will be stored in ~/.sqldeveloper/jdk

En este punto al ser la primera vez que se ejecuta el instalador pide la ruta de instalación del JDK de Java, en el caso de que no sepas como instalarlo y configurarlo, puedes remitirte a una entrada anterior a este blog donde se explican este tipo de tareas y algunas otras aqui
Una vez se configura esto, ya se puede ejecutar el
SQLDeveloper con tan solo escribir sqldeveloper en la consola.

Por el momento es todo, espero que esta guiá le sirva de algo a aquellas personas que necesitan ayuda con
Oracle 10g en GNU/Linux Debian.

JDAANIAL.

[+/-] Continuar leyendo...