12 mar 2010

Debian Etch + Oracle 10g 10.2.0.1

Si en el anterior tuto contamos como instalar una Oracle XE, en este vamos a explicar paso a paso como instalar una Oracle 10g.
Para ello nos hemos basado en:
http://linux.togaware.com/survivor/Oracle_10g.html
Los problemas que he ido encontrando los iré remarcando porque es la única diferencia respecto a lo que se explica en la parte original.

Recordad que la única dificultad que tiene Oracle es que está orientada 100% a Red Hat, Suse o Asianux, por lo que para Debian teníamos algo más de trabajo (no mucho más).

Pues bien, empecemos.

1. Instalar los paquetes básicos y ajustes iniciales

#apt-get install gcc make binutils libmotif3 lesstif2 rpm libaio1 libdb3
Para sistemas de 64 bits:
#apt-get install ia32-libs libc6-dev-i386 libc6-dev
Oracle coloca los logs en /home/app/oracle/oraInventory/logs/.
Para ello vamos a hacer algunos ajustes para que nuestra Debian "engañe" a Oracle y le haga creer que está en Red Hat.

Creamos los enlaces simbólicos:
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename # Suggested by Giuseppe Sacco
ln -s /etc /etc/rc.d                  # Required for root.sh
2. Descarga de Oracle 10g
Después de registrarnos en Oracle, nos podemos descargar el paquete:
http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux32.zip
Descargado el paquete descomprimimos y guardamos en una carpeta temporal.

3. Revisamos una serie de parámetros del system
grep MemTotal /proc/meminfo --> Se necesita algo más de 500MB
grep SwapTotal /proc/meminfo --> Alrededor de 1GB
# dd if=/dev/zero of=swapfile bs=1024 count=1024
# mkswap swapfile
# swapon swapfile
3. Cuentas de usuario
Comprobamos las cuentas que tenemos y según el resultado así debemos generar las cuentas y grupos:
grep oinstall /etc/group
grep dba /etc/group
grep nobody /etc/group
id oracle
id nobody
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd nobody
/usr/sbin/useradd -m -g oinstall -G dba -p passwd -d /home/oracle oracle
/usr/sbin/useradd -g nobody nobody
mkdir -p /u01/app/oracle --> Necesario para la instalacion
mkdir -p /u02/oradata --> Idem
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u0
4. Revision de parámetros del Kernel
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range
Salida:

kernel.sem = 250 32000 100 128

kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000
Si no coincide, y no se aproxima, debemos editar:  /etc/sysctl.conf

ejecutamos /sbin/sysctl -p para aplicar los cambios.
Añadir las siguientes líneas a /etc/security/limits.conf :
*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536
Añadimos (o descomentamos) en /etc/pam.d/login y /etc/pam.d/su

session    required     /lib/security/pam_limits.so
Como estamos usando BASH, añadimos a /etc/profile :

if [ $USER = "oracle" ]; then
      if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
            ulimit -n 65536
      else
            ulimit -u 16384 -n 65536
      fi
fi
4. Config de usuario Oracle
Nos logueamos como usurio oracle, y añadimos al final del  /.bash_profile
umask 022
ORACLE_BASE=/u01/app/oracle
ORACLE_SID=test
ORA_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1
export ORACLE_BASE ORACLE_SID ORA_HOME
unset ORACLE_HOME
unset TNS_ADMIN
5. Arrancar el Instalador de Oracle
Nos logamos con el usuario con el que arrancamos el entorno gráfico. Y liberamos el servidor X:
xhost +
En caso de erro quizá sea necesario:
export DISPLAY=:0
xhost +
Después login con oracle
su -
password:
#su oracle
oracle$cd /tmp/Disk1; ./runInstaller -ignoreSysPrereqs
Hacemos la instalación que más rabia nos dé. Y si nos pide algo, debemos tener una consola logueados como root para instalar lo necesario. Lo más normal que nos pase:
- nos falte algún paquete --> apt-get install paq.deb
- No encuentre algún archivo --> find y después algún ln -s
- Falte alguna ruta en el PATH --> ln -s ejecutable_que_falta /bin/nom_ejec

6. Configurando Oracle 10g para el arranque

Para arrancar y parar Oracle 10g usando "wajig start|stop" commands, necesitamos editar /etc/oratab , y crear el script de arranque en /etc/init.d.
/etc/oratab :

test1:/u01/app/oracle/product/10.1.0/db_1:Y
test2:/u01/app/oracle/product/10.1.0/db_1:Y
test3:/u01/app/oracle/product/10.1.0/db_1:N
debian:~# su oracle
$  cat /etc/init.d/oracle
#!/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/oracle/product/10.1.0/Db\_1"
ORA_HOME=/u01/app/oracle/oracle/product/10.2.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: "
        su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
        su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
        su - $ORA_OWNR -c "$ORA_HOME/bin/emctl start dbconsole"
        touch /var/lock/subsys/oracle
        echo "OK"
        ;;
    stop)
        # Oracle listener and instance shutdown
        echo -n "Shutdown Oracle: "
        su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
        su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
        su - $ORA_OWNR -c "$ORA_HOME/bin/emctl stop dbconsole"
        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
Para que el script esté disponible a la hora de arrancar "wajig start|stop oracle" :
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
Para parar y arrancar:
wajig start oracle
wajig stop oracle
Para administrar con el Enterprise Manager de Oracle 10g:
http://localhost:1158/em
Posibles cosas a retocar:
$ vim /u01/app/oracle/oracle/product/10.2.0/db_1/bin/dbstart
#ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
ORACLE_HOME_LISTNER=/u01/app/oracle/oracle/product/10.2.0/db_1

Share This!



No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.