Los requisitos hardware iniciales no son demasiado exigentes. Oracle funcionará sin problemas en una máquina con 1,5Gbytes de RAM y 20 Gbytes de disco duro (que son las características de la máquina virtual que voy a usar en este ejemplo). Pero cuidado: la partición de swap debería de ser de aproximadamente 1,5 veces el tamaño de la RAM (algo más de 2Gbytes en este caso), debemos de tener al menos 2Gbytes libres en el directorio /tmp durante el proceso de instalación y los binarios de Oracle ocuparan en su ubicación final algo más de 5 Gbytes, así que si tu disco usa diferentes particiones para estos directorios has de cuidar que el reparto de espacio entre ellos sea el adecuado.
En cuanto al software, partiremos de una Debian recien instalada y sólo con el sistema base aunque, durante el proceso, instalaremos algunos paquetes adicionales y un entorno de ventanas ligero para realizar la instalación desde un entorno gráfico.
Empezaremos por instalar los paquetes de dependencias necesarias que son estos:
apt-get install build-essential sysstat unzip libstdc++5 pdksh numactl expat libaio-dev unixodbc-dev lesstif2-dev elfutils libelf-dev
Además, como acabamos de decir instalaremos un entorno de ventanas ligero para realizar la instalación desde el entorno gráfico y un navegador para posteriormente poder acceder a la consola de administración:
apt-get install xfce4 chromium
Vamos ahora a modificar algunos de los parámetros de configuración del kernel editando el fichero /etc/sysctl.conf y añadiendo al final del mismo las siguientes líneas:
kernel.shmmax=536870912 kernel.shmall=2097152 fs.file-max=6815744 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 fs.aio-max-nr = 1048576 kernel.sem = 250 32000 100 128
Para que tomen efecto las modificaciones en este fichero sin necesidad de reiniciar ejecutamos ahora lo siguiente:
sysctl -p
El instalador de Oracle también nos pedirá que lo ejecutemos desde un runlevel entre el 3 y el 5 mientras que Debian usar el 2 por defecto. Para evitar esta advertencia editaremos el fichero /etc/inittab y, en una de las primeras líneas, hacemos el cambio para usar, por ejemplo, el 3:
id:3:initdefault:
Para modificarlo también en la sesión actual sin necesidad de reiniciar ejecutamos lo siguiente:
telinit 3
Y ahora una pequeña «trampa». Para que Oracle no se de cuenta demasiado de que estamos haciendo la instalación en una distribución no soportada crearemos unos enlaces en el sistema de ficheros de forma que se encuentre determinados archivos y librerías donde espearía encontrarselos si la instalación se estuviera realizando, por ejemplo, en una Red Hat:
ln -s /usr/bin/basename /bin/basename ln -s /usr/bin/awk /bin/awk ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib ln -s /usr/lib/i386-linux-gnu/libc_nonshared.a /usr/lib ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6 /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/ ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/ ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
Vamos ahora a crear un usuario llamado oracle y un grupo llamado dba. Este será el usuario que usaremos para la instalación y posterior administración de nuestra base de datos. Para hacerlo ejecutamos lo siguiente:
groupadd dba useradd -d /home/oracle -m -g dba -G dba -s /bin/bash oracle
Para asignarle contraseña a este nuevo usuario:
passwd oracle
Ahora creamos los directorios donde realizaremos nuestra instalación:
mkdir -p /opt/oracle/product/11.2.0.1 mkdir /opt/oraInventory mkdir /opt/oradata
Y asignamos como propietario y grupo los que acabamos de crear unos instantes antes:
chown oracle:dba -R /opt/oracle /opt/oraInventory /opt/oradata
Alteramos ahora algunas de las limitaciones impuestas a este nuevo usuario que hemos creado editando el fichero /etc/security/limits.conf y añadiendo las siguientes líneas al final del mismo:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240
Y por último, en lo que a este nuevo usuario se refiere, editamos el fichero /home/oracle/.profile y añadimos sl final las siguientes variables de entorno:
export ORACLE_HOSTNAME=localhost export ORACLE_OWNER=oracle export ORACLE_BASE=/opt/oracle export ORACLE_HOME=/opt/oracle/product/11.2.0.1 export ORACLE_UNQNAME=orcl export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/i386-linux-gnu:/bin/lib:/lib/i386-linux-gnu/:/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/bin/lib:/lib/x86_64-linux-gnu/:/usr/lib64
Y ya casi casi tenemos todos los preparativos listos. Ahora copiamos los archivos de instalación de Oracle de su página de Training Eval y los dejamos en el directorio /tmp de la máquina.
Descomprimimos los dos archivos que nos hemos bajado sobre el directorio /home del usuario oracle:
unzip /tmp/linux_11gR2_database_1of2.zip -d /home/oracle unzip /tmp/linux_11gR2_database_2of2.zip -d /home/oracle
Y luego borramos los .zip para que no nos ocupen espacio:
rm /tmp/linux_11gR2_database*.zip
Ahora ya si cambiamos al usuario oracle para realizar la instalación:
su - oracle
Y entramos en el entorno gráfico:
startx
Ya en las xfce y desde un terminal ejecutamos el instalador de Oracle:
/home/oracle/database/runInstaller
Tomaremos casi siempre los valores por defecto de la instalación a menos que te manejes bien con los conceptos de esta base de datos y sepas lo que estás haciendo. Además, muchos de los valores básicos los tomará de las variables de entorno que hemos creado anteriormente en el profile del usuario oracle.
En el tercer pantallazo tendremos que introducir la contraseña del administrador: la del usuario SYS. No la olvides aunque luego, en uno de los pasos finales, tendremos la opción de cambiarla y/o modificarla.
Posteriormente en la comprobación de requisitos nos marcará varios fallos relativos a programas que parece no encontrar pero que, sin embargo, hemos instalado previamente. Esto es normal debido a las diferencias de rutas entre Debian y Red Hat. Estos deberían de ser los únicos errores que se nos presentarán si hemos hecho correctamente todo el proceso anterior. Nos aseguramos de ello y, si es así, marcamos el check de Ignorar todo y proseguimos la instalación.
A mitad de la instalación nos aparecerá un error como el del pantallazo siguiente. No pulses ningún botón aún y no te pongas nervioso que tiene solución 😉
Abrimos un terminal y editamos uno de los scripts que está usando el instalador. Este: /opt/oracle/product/11.2.0.1/sysman/lib/env_emagent.mk . En torno a la línea 2764 nos encontraremos algo así:
NMEFET_STACKLIBS_LINK=$(LDPATHFLAG)$(ORACLE_HOME)/$(LIBDIR) $(LDPATHFLAG)$(PRODLIBHOME) $(LLIBNMEMSO) $(LLIBCORE) -Wl,-rpath,$(AGENTRPATH):$(JAVA_RTLINK_PATH) $(LIB_JVM_LINK) -Wl,--allow-shlib-undefined
Debemos de añadir el argumento -lnnz11 de forma que quede así:
NMEFET_STACKLIBS_LINK=$(LDPATHFLAG)$(ORACLE_HOME)/$(LIBDIR) $(LDPATHFLAG)$(PRODLIBHOME) $(LLIBNMEMSO) $(LLIBCORE) -lnnz11 -Wl,-rpath,$(AGENTRPATH):$(JAVA_RTLINK_PATH) $(LIB_JVM_LINK) -Wl,--allow-shlib-undefined
Salvamos el fichero y, ahora así, volvemos a la ventana de advertencia anterior y pulsamos el botón de Reintentar. La instalación debería de proseguir ahora ya sin problemas.
En unos minutos accederemos a la ventana final del instalador donde se nos mostrará un resumen y se nos permitirá modificar bloquear y desbloquear usuarios por defecto y/o modificar las contraseñas de los mismos:
Y, ahora ya si por último, el instalador nos pedirá que lancemos un par de scripts adicionales de forma manual como usuario root (recuerda que toda la instalación desde el entorno gráfico la estamos haciendo con el usuario oracle que hemos creado previamente).
Abrimos otro terminal distinto al que estamos usando para el instalador y ejecutamos lo que se nos pide:
su /opt/oraInventory/orainstRoot.sh /opt/oracle/product/11.2.0.1/root.sh
Y ya hemos terminado. Ahora para acceder a la base de datos puedes usar SQL*Plus desde la línea de comandos o la consola de administración gráfica desde el navegador a través de la URL https://localhost:1158/em y usando la contraseña del usuario SYS (conectando como SYSDBA) que has proporcionado durante la instalación.
Unas notas para terminar. La instalación no configura a Oracle para que arranque por defecto tras un reinicio del sistema. Es decir, cada vez que hagamos un reboot de la máquina tendremos que volver a levantar los servicios manualmente. Tres son los componentes básicos a considerar: el llamado «listener» de Oracle (el proceso principal que proporciona la conectividad con las bases de datos), la consola de administración y la propia base de datos en si. Para levantar el primero tenemos disponible un script llamado dbstart en el directorio /opt/oracle/product/11.2.0.1/bin. Habiendo hecho logon con el usuario oracle ejecutamos lo siguiente:
dbstart $ORACLE_HOME
Y para detenerlo:
dbshut $ORACLE_HOME
Para arrancar y parar manualmente la consola de administración tenemos que abrir el script de arranque (en el fichero /opt/oracle/product/11.2.0.1/bin/emctl ) y modificar el shebang para indicar que usaremos bash, que es el shell por defecto que hemos elegido para el usuario oracle:
#!/bin/bash -f
Salvamos el fichero y, ahora si, para arrancar la consola usamos este comando:
emctl start dbconsole
Y para detenerla:
emctl stop dbconsole
Para levantar la base de datos podemos usar SQL*Plus como se nos indica aquí o entrar en el entorno gráfico y hacerlo desde la consola de administración. Si entramos en la consola nos advertirá de que la base de datos no está levantada:
Pulsamos el botón de Startup (arriba a la derecha) y en la ventana resultante nos autenticamos usando las credenciales del usuario oracle del sistema operativo:
Se nos pedirá confirmación de la operación y, si la damos, la base de datos se levantará y estará ya lista para su uso.