El gestor de base de datos Oracle por defecto no existe para sistemas derivados de debian, por lo tanto no existe como paquete .deb, para ello adaptaremos el sistema y crearemos un fichero .deb usando un paquete .rpm
Lo primero que haremos era descargar el fichero, para ello debemos tener cuenta en oracle.
Tambien podemos usar wget para descargarlo directamente en el server
Actualizamos la lista de repositoriosre
Remoto$ sudo apt update
Remoto$ sudo apt upgrade
nstalamos java
Remoto$ sudo apt install default-jre
Para saber si esta instalado usaremos java – version
Ahora creamos unos cuentos ficheros que son necesarios.
Vamos a proceder a configurar la variable de entorno JAVA_HOME. Para hacer esto abriremos el archivo /etc/bash.bashrc ejecutando el siguiente comando:
Remoto$ sudo vim /etc/bash.bashrc
Copiaremos al final del fichero estas líneas
#Oracle
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export PATH=$JAVA_HOME/bin:$PATH
Para cargar los cambios, se ejecuta el siguiente comando:
Remoto$ source /etc/bash.bashrc
Para comprobar que fue bien configurado podemos usar este comando, que nos dará una salida como esta ” /usr/lib/jvm/java-8-oracle”
Remoto$ echo $JAVA_HOME
En entornos basados en Devian no existen algunos ficheros que si en Red hat, vamos a crearlos
Remoto$ sudo vim /sbin/chkconfig
Con el siguiente contenido
#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Ubuntu
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo '### BEGIN INIT INFO' >> $file
echo '# Provides: OracleXE' >> $file
echo '# Required-Start: $remote_fs $syslog' >> $file
echo '# Required-Stop: $remote_fs $syslog' >> $file
echo '# Default-Start: 2 3 4 5' >> $file
echo '# Default-Stop: 0 1 6' >> $file
echo '# Short-Description: Oracle 11g Express Edition' >> $file
echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01
#EOF
Le asignamos permisos al fichero
Remoto$ sudo chmod 755 /sbin/chkconfig
Después vamos a crear el archivo /etc/sysctl.d/60-oracle.conf, para poner ciertos parámetros del kernel adicionales, usando el siguiente comando:
Remoto$ sudo vim /etc/sysctl.d/60-oracle.conf
Y añadimos el siguiente contenido
# Oracle 11g XE kernel parameters
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=536870912
El último parámetro kernel.shmmax indica el número máximo posible de memoria RAM en bytes, dividiendo 536870912 / 1024 /1024 = 512 MB
Carguemos los parámetros del kernel, con el comando:
Remoto$ sudo service procps start
Los cambios podemos verificarlos con el comando, el resultado es algo parecido a fs.file-max = 95224
Remoto$ sudo sysctl -q fs.file-max
Luego de esto, ejecutaremos los siguientes comandos, los cuales son necesarios para versiones anteriores al Ubuntu 16.04, como 14.04 y 12.94, para hacer algunos cambios más que se requieren. OJO: siempre hay ejecutarlos, aunque estemos en la versión 16.04 o 18.04, porque actualizaciones posteriores puede que no se creen y terminamos con errores a la hora de configurar Oracle Express.
Remoto$ sudo ln -s /usr/bin/awk /bin/awk àel archivo puede ya existir
Remoto$ sudo mkdir /var/lock/subsys àel archivo puede ya existir
Remoto$ sudo touch /var/lock/subsys/listener
Como oracle-xe no existe para sistemas basados en devian tendremos que usar un .rpm para ello instalaremos alien que nos transformara paquetes rpm a dev
Remoto$ sudo apt-get install alien libaio1 unixodbc
Subimos el fichero, si no lo hemos descargado en el server usando wget
Remoto$ scp oracle-xe-11.2.0-1.0.x86_64.rpm user@server.com:/tmp/
Nos movemos al directorio donde este el fichero y descomprimimos el contenido.
Remoto$ unzip oracle-xe-11.2.0-1.0.x86_64.rpm
Ahora nos movemos de directorio
Remoto$ cd Disk1
Ahora convertirnos el fichero
Remoto$ sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm
Nota: esto tarda un pelin, puedes tomar un café mientras, cuando termine nos dirá que se a generado correctamente
Ahora si instamos Oracle-xe
Remoto$ sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb
Para evitar problemas de memoria debemos ejecutar los siguientes comandos para evitar que se nos genere el error ORA-00845:MEMORY_TARGET. Debes reemplazar size=4096m por la cantidad de memoria RAM del equipo en MB.
Remoto$ sudo rm -rf /dev/shm
Remoto$ sudo mkdir /dev/shm
Remoto$ sudo mount -t tmpfs shmfs -o size=6802m /dev/shm
Ahora creamos el archivo S01shm_load en el siguiente directorio /etc/rc2.d/
Remoto$ sudo vim /etc/rc2.d/S01shm_load
Y agregamos el siguiente contenido
#!/bin/sh
case "S1" in
start) mkdir /var/lock/subsys 2>/dev/null
touch /var/lock/subsys/listener
rm /dev/shm 2>/dev/null
mkdir /dev/shm 2>/dev/null
mount -t tmpfs shmfs -o size=4096m /dev/shm ;;
*) echo error
exit 1 ;;
esac
Asignamos permisos al fichero
Remoto$ sudo chmod 755 /etc/rc2.d/S01shm_load
Ahora vamos a proceder a configurar el Oracle, para ello escribimos el siguiente comando:
Remoto$ sudo /etc/init.d/oracle-xe configure
Ahora vamos a configurar varias variables de entorno asignandoles ciertos valores, necesarios para correr nuestro Oracle.
Remoto$ sudo vim /etc/bash.bashrc
Agregamos al final del fichero el siguiente contenido
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export ORACLE_BASE=/u01/app/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
Escribimos el siguiente comando para cargar los cambios en el sistema mediante el comando:
Remoto$ source /etc/bash.bashrc
Ahora podemos comprobar que se ha ejecutado correctamente con este comando:
Remoto$ echo $ORACLE_HOME
La respuesta del comando de ser igual a la siguiente:
/u01/app/oracle/product/11.2.0/xe
Ahora reiniciamos el equipo
Remoto$ sudo reboot
Ahora podemos iniciar Oracle-xe
Remoto$ sudo service oracle-xe start
Referencias
https://jmguimera.blogspot.com/2016/08/como-instalar-y-configurar-oracle-11g.html