Guía en español sobre la instalación de Oracle 12.2.0.1 en Ubuntu 18.04 TLS.



Hola Amig@s,

A continuación una breve guía de instalación paso a paso Oracle 12.2.0.1 en Ubuntu 18.04 TLS. Si bien Ubuntu no es una distribución soportada por Oracle (cuando decimos no soportada, es que Oracle no ha realizado pruebas en esta distribución de Linux) no quiere de decir que no funcione.

Esta guía soluciona alguno de los problemas encontrados en otras guías de instalación.

Descargar el Oracle 12.2.0.1 para linux 64bits.

Añadir permisos:

sudo groupadd -g 502 oinstall
sudo groupadd -g 503 dba
sudo groupadd -g 504 oper
sudo groupadd nobody
sudo groupadd -g 505 asmadmin
sudo useradd -u 502 -g oinstall -G dba,asmadmin,oper -s /bin/bash -m oracle
sudo adduser oracle sudo

sudo passwd oracle

oracle

sudo mkdir -p /u01/app/oracle/product/12/dbhome_1
sudo mkdir -p /tmp/database
sudo chown -R oracle:oinstall /u01
sudo chmod -R 775 /u01
sudo chown -R oracle:oinstall /tmp/database


Configurar la red:

sudo nano /etc/hosts

Añadir 127.0.0.1 localhost.localdomain

Añadir permisos a X:

xhost +127.0.0.1
xhost +

Variables de configuración:

sudo nano /etc/sysctl.conf

#### Oracle 12c R2 Kernel Parameters ####
fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 818227
kernel.shmmax = 4189323264
kernel.shmmni = 4096
kernel.panic_on_oops = 1
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
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=1048576

sudo nano /etc/security/limits.conf

#### oracle User Settings 4 Oracle 12c R2 ####
oracle       soft  nproc  2047
oracle       hard  nproc  16384
oracle       soft  nofile 1024
oracle       hard  nofile 65536
oracle       soft  stack  10240

sudo /sbin/sysctl -p

Configuración de las variables de entorno:

su oracle

nano ~/.bashrc

Nota: Cambiar NOMBREDB por el nombre de la bbdd que tendrá la instancia. Cambiar HOSTNAME por la IP que tiene la maquina en curso.

# Oracle Settings
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_HOSTNAME=[HOSTNAME];
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12/dbhome_1;
export ORACLE_SID=[NOMBREDB];
export ORACLE_UNQNAME=$ORACLE_SID;
export PATH=/usr/sbin:$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

bash

Instalación del paquetes:

sudo apt update

sudo apt install unixodbc unixodbc-dev unzip lsb-cxx pdksh sysstat gcc g++-multilib \
  lib32ncurses5 lib32z1 ksh lesstif2 zlibc rpm libc6 libc6-dev libc6-dev-i386 libc6-i386 \
  gcc-multilib less lib32z1 libelf-dev binutils libodbcinstq4-1 libpth-dev zenity \
  libpthread-stubs0 libstdc++5 autotools-dev bzip2 elfutils g++ rlwrap libltdl-dev \
  libxm4:i386 libuil4:i386 libmrm4:i386 libxm4 libuil4 libmrm4 libmotif-common \
  libpthread-stubs0-dev build-essential expat gawk alien autoconf automake \
  lesstif2-dev

sudo su -c "echo 'deb [trusted=yes] http://cz.archive.ubuntu.com/ubuntu precise main universe' > /etc/apt/sources.list.d/extra.list"

sudo apt update

sudo apt install lesstif2 lesstif2-dev pdksh libaio-dev libpthread-stubs0 lsb-cxx

sudo apt remove /etc/apt/sources.list.d/extra.list

sudo apt update

sudo apt-mark hold libaio-dev lesstif2 lesstif2-dev pdksh libpthread-stubs0 lsb-cxx

Creación de symlinks.

sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
sudo ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1
sudo ln -sf /bin/bash /bin/sh

Instalación del software de Oracle:

chmod -R +x /tmp/database
xhost +SI:localuser:oracle

Nos cambiamos de usuario al usuario oracle:

su oracle
oracle

Descomprimirlo en tmp:


sudo mount -t tmpfs -o exec tmpfs /tmp
sudo mount -o remount,size=5G tmpfs /tmp
sudo chmod o+rwx /tmp
unzip -d /tmp linuxx64_122*.zip


Arrancamos la instalación:

/tmp/database/runInstaller

Nota: Seleccionar solo instalación del software, más tarde crearemos la instancia de base de datos.

Si al arrancar la instalación nos devuelve el error:

>>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.    Failed <<<<

Ejecutar como root: 

xhost +

Si nos indica que nos falta memoria Swap o está a 0 hay que incrementar el tamaño del fichero de intercambio (puede que haya que hacerlo antes de descomprimir):

sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
sudo mkswap /swapfile
sudo swapon /swapfile
grep SwapTotal /proc/meminfo


Luego reintentar la instalación nuevamente:

/tmp/database/runInstaller


Durante la instalación:

su root
contraseña de root

sudo /u01/app/oraInventory/orainstRoot.sh

sudo /u01/app/oracle/product/12/dbhome_1/root.sh

Nota: En el caso de que se nos aparezca un error en el instalador con el Oracle Net Configuration Assistant, simplemente reintentarlo al cabo de unos minutos.

Tras la instalación: 

Ejecutar el siguiente comando:

cd $ORACLE_HOME/lib/stubs
rm libc*
cd ../../bin
./relink all

Modificando los scripts dbstart y dbshut.

Los scripts dbstart y dbshut que se encuentran en la carpeta bin de la instalación de oracle, tienen definidos las variables de configuración. Como Oracle no ha certificado la instalación en ubuntu, hay que realizar un pequeño cambio en ellos.

La variable ORACLE_HOME_LISTNER=$1 hay que cambiarla por ORACLE_HOME_LISTNER=$ORACLE_HOME en ambos ficheros.

Mantenimiento de temporales:

sudo apt-get autoremove --purge
sudo apt-get autoclean
sudo rm -rf /var/log/*

Creando la instancia de BBDD:

Para crear nuestra instancia de BBDD tras la instalación del software, podemos hacerlo con el comando dbca o el siguiente comando por consola (lo malo es que si hay un error no muestra nada):

dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname DBTESTA -sid DBTESTA -responseFile NO_VALUE \
-characterSet WE8MSWIN1252 \
-sysPassword sys \
-systemPassword sys \
-createAsContainerDatabase false \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination "/u01/app/oracle/oradata/" \
-redoLogFileSize 500 \
-emConfiguration NONE \
-ignorePreReqs

Si al arrancar el DBCA nos devuelve el siguiente error:

No protocol specified
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11.XToolkit

Debéis ejecutar el siguiente comando como root:

su root
contraseña de root

xhost +SI:localuser:oracle

Si al intentar crear la instancia con el DBCA nos devuelve el error de startup / shutdown in progress. Se debe ha que hay una instancia de oracle corriendo. Debemos matar y liberar toda ejecución de Oracle para que sea el propio DBCA quien se encargue de ello.


$ sysresv

Shared Memory:
ID              KEY
5963791         0x00000000
5996562         0x00000000
6029333         0xb2e3c9ac

Solución:

A nivel de sistema operativo hay que quitar las areas de memoria compartida utilizando el comando:

ipcrm -m <problem shared memory id>

$ ipcrm -m 5963791
$ ipcrm -m 5996562
$ ipcrm -m 6029333

$sqlplus '/as sysdba'

sudo rm $ORACLE_HOME/dbs/lk*

sudo sysctl -w kernel.shmall=9272480

Nota: Solución de problemas con la memoria compartida.

SQL> startup
ORA-01012: not logged on

Incidencia:

Oracle ha sido cerrado de forma forzada con un shutdown o a nivel de SO.

Buscar si hay instancias corriendo:
ps -ef | grep $ORACLE_SID

Si no muestra ningún proceso corriendo, hay que utilizar la utilidad 'sysresv'.

$ sysresv

Shared Memory:
ID              KEY
5963791         0x00000000
5996562         0x00000000
6029333         0xb2e3c9ac

Solución:

A nivel de sistema operativo hay que quitar las areas de memoria compartida utilizando el comando:

ipcrm -m <problem shared memory id>

$ ipcrm -m 5963791
$ ipcrm -m 5996562
$ ipcrm -m 6029333


sudo rm $ORACLE_HOME/dbs/lk*

Añadir excepciones al firewall de Ubuntu:

sudo iptables -I INPUT -p tcp --dport 1536 -j ACCEPT

sudo iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 1536 -j ACCEPT

sudo iptables-save

sudo ufw allow from 192.168.1.0/24 to any port 1536 proto tcp

Acceso remoto a Ubuntu por SSH:

sudo apt update
sudo apt install openssh-server

Referencias:

https://tutorialforlinux.com/2019/09/17/how-to-install-oracle-12c-r2-database-on-ubuntu-18-04-bionic-64-bit-easy-guide/

https://medium.com/venturenxt/install-oracle-database-12c-on-ubuntu-16-04-c081d51c0f9d

Recuerda: Si utilizas esta guía, al menos cita la fuente.. ¿no?.

Espero que les resulte útil.
Salu2.
Share on Google Plus
    Blogger Comment

0 comentarios: