Cómo Instalar Oracle 11g en Ubuntu Linux: Guía Completa
Oracle Database es un fiable software de gestión de bases de datos multiplataforma desarrollado por Oracle Corporation. Ofrece una serie de ventajas, entre las que se incluyen un alto rendimiento, amplias funciones, compatibilidad con clústeres, compatibilidad con PL/SQL, etc. La base de datos Oracle (a la que nos referiremos como Oracle en esta entrada del blog) puede instalarse en Solaris, Windows y Linux. La instalación en Windows es la opción más sencilla, mientras que la instalación de Oracle en Solaris y Linux requiere una configuración manual previa a la instalación. En cuanto a las distribuciones de Linux, Oracle recomienda instalar la base de datos Oracle en Red-Hat, Oracle Linux y SUSE Linux Enterprise Server.
No obstante, también puede instalar Oracle en Ubuntu Linux y Open SUSE Linux. Ubuntu es una popular distribución de Linux que se utiliza ampliamente en el mundo y la entrada del blog de hoy proporciona instrucciones paso a paso de cómo instalar Oracle en Ubuntu. En este tutorial, instalaremos la base de datos Oracle Enterprise Edition (EE) 11g R2 en Ubuntu.
Preparación de Ubuntu Linux
En este tutorial, se utiliza un Ubuntu 16.04.6 recién instalado. El sistema operativo se instaló en la máquina virtual VMware sin activar la opción «Descargar actualizaciones al instalar Ubuntu» y sin utilizar la opción «Instalar software de terceros» durante la instalación del sistema operativo.
Si nunca ha instalado Oracle en Linux, debería aprender a instalar Oracle en Ubuntu en una máquina virtual antes de instalar Oracle en un ordenador físico o un servidor.
Si utiliza una máquina virtual VMware, no olvide instalar VMware Tools. También puedes utilizar máquinas virtuales VirtualBox e Hyper-V.
Asegúrese de haber seleccionado la zona horaria correcta durante la instalación. En este ejemplo, la zona horaria es GMT 0 (Londres).
Puedes comprobar la zona horaria con el comando:
timedatectl
Comprobar la versión de Ubuntu:
lsb_release -a
La salida es la siguiente en nuestro ejemplo:
En este tutorial sobre cómo instalar Oracle 11g en Ubuntu, se utilizan los siguientes parámetros de hardware VM:
- CPU: 1 CPU
- RAM: 4 GB
- Unidad de disco duro: 40 GB
user1 es un usuario normal en este ejemplo(user1 se crea durante la instalación de Ubuntu y se utiliza para iniciar sesión en Ubuntu).
Los siguientes paquetes están instalados:
- vim, el editor de texto
- net-tools, herramientas para la gestión de redes
- openssh-server, el servidor SSH que permite conectarse a la consola Linux (terminal) de forma remota
Si no tienes estos paquetes instalados en tu Ubuntu Linux, puedes instalarlos usando el comando:
sudo apt-get install -y vim net-tools openssh-server
El servidor SSH se instala por conveniencia. Debe ejecutar muchos comandos en la consola antes de utilizar el instalador de Oracle en Ubuntu.
Para habilitar la autenticación mediante contraseñas, edite el archivo sshd_config:
vim /etc/ssh/sshd_config
Descomente la línea (elimine «#» al principio de una línea):
PasswordAuthentication yes
Guarde los cambios y salga pulsando la tecla Esc en vim y escribiendo :wq
Reinicie el servicio sshd (demonio), ejecutando el comando con privilegios de root:
sudo service ssh restart
Configuración de un archivo de intercambio
Ubuntu 16 utiliza una partición swap por defecto. Puede personalizar el tamaño de la partición de intercambio al instalar Ubuntu. Si ha seleccionado las opciones de particionado predeterminadas o ha seleccionado un tamaño incorrecto para la partición de intercambio, aún puede crear un archivo de intercambio del tamaño personalizado y utilizar el archivo de intercambio en lugar de una partición de intercambio existente. El tamaño de la swap debe ser igual al doble del tamaño de la RAM. Si va a instalar Oracle en Ubuntu con 4 GB de RAM, debe preparar un archivo de intercambio o una partición de 8 GB. Vamos a crear el archivo de intercambio de 8 GB.
Desactivar temporalmente el uso del área de intercambio:
sudo swapoff -a
Cree un nuevo archivo de 8-GB con la herramienta dd:
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
Configure el archivo de 8-GB creado para ser utilizado como archivo swap:
sudo mkswap /swapfile
Habilite de nuevo el uso de la zona swap:
sudo swapon /swapfile
Compruebe el tamaño de su área de intercambio después de crear un nuevo archivo de intercambio:
grep SwapTotal /proc/meminfo
Configuración de los ajustes de red
Por defecto, Ubuntu 16 obtiene una dirección IP automáticamente para una interfaz de red (si hay un servidor DHCP en la red). Antes de instalar Oracle en Ubuntu, debe establecer una dirección IP estática y configurar un nombre de host.
Compruebe la configuración IP actual:
ifconfig
En la salida, puede ver los nombres de sus adaptadores de red y direcciones IP. En nuestro caso, el nombre de la interfaz de red necesaria es ens33.
Configurar la dirección IP estática
Edite el archivo de configuración de interfaces de red con vim:
sudo vim /etc/network interfaces
La dirección IP estática necesaria para instalar la base de datos Oracle en Ubuntu es 192.168.101.11 en la interfaz actual de la máquina Linux en este ejemplo. Edite el archivo de configuración como se indica a continuación:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.101.11
netmask 255.255.255.0
gateway 192.168.101.2
dns-nameservers 192.168.101.2 8.8.8.8
Guarde los cambios y salga.
Aplique los cambios:
sudo /etc/init.d/networking restart
O reinicie la máquina:
init 6
Compruebe que se han aplicado los nuevos ajustes de IP:
ifconfig
O bien:
hostname -I
Después de comprobar la configuración de la dirección IP, compruebe el nombre de host.
Comprobación del nombre de host
En nuestro caso, el nombre de host utilizado para instalar Oracle en Ubuntu es ubuntu-oracle11.
Compruebe el nombre de host actual:
hostnamectl
Si ha olvidado configurar el nombre de host durante la instalación de Ubuntu o desea cambiar el nombre de host por otros motivos, aún puede hacerlo.
Para renombrar el host y establecer un nuevo nombre de host(ubuntu-oracle11), ejecute el comando:
sudo hostnamectl set-hostname ubuntu-oracle11
Comprueba si se aplica el nuevo nombre de host:
less /etc/hostname
Edite el archivo hosts:
sudo vim /etc/hosts
El contenido del archivo /etc/hosts debe tener este aspecto:
127.0.0.1 localhost
127.0.1.1 ubuntu-oracle11
Reinicie la máquina:
init 6
Intenta hacer ping al nombre de host definido en tu máquina Ubuntu:
ping ubuntu-oracle11
Configuración del entorno para Oracle
Para instalar Oracle en Ubuntu, es necesario configurar el entorno Linux: crear usuarios y grupos del sistema, configurar los parámetros del kernel, establecer un perfil del sistema, establecer variables de entorno para un usuario, definir los límites del shell, crear enlaces simbólicos e instalar los paquetes necesarios.
Creación de usuarios y grupos
Abra la consola local o conéctese a la consola de Linux a través de SSH como un usuario normal y, a continuación, obtenga los privilegios de root:
sudo -i
Los siguientes comandos deben ejecutarse como root.
Añada los grupos requeridos por Oracle.
Crear el grupo Oracle Inventory:
groupadd oinstall
Crear el grupo Oracle DBA:
groupadd dba
Crea el directorio home para el usuario Oracle:
mkdir /home/oracle/
Cree el directorio para instalar Oracle:
mkdir -p /u01/app/oracle
A continuación, cree la cuenta de usuario Oracle que es miembro del grupo dba, tiene el directorio de inicio /home/oracle/ y utiliza /bin/bash como shell por defecto:
useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle
Establece la contraseña para el usuario oracle (no olvides esta contraseña):
passwd oracle
Establezca el usuario oracle como propietario del directorio home de Oracle y del directorio de instalación de Oracle. El usuario oracle es miembro del grupo oinstall.
chown -R oracle:oinstall /home/oracle
chown -R oracle:oinstall /u01/app/oracle
Nota: A diferencia de Oracle 10, en Oracle 11 no es necesario crear el grupo nobody.
Cree el directorio para Oracle Inventory:
mkdir -p /u01/app/oraInventory
Establezca el usuario oracle como propietario del directorio Oracle Inventory:
chown -R oracle:oinstall /u01/app/oraInventory
Configuración de los parámetros del núcleo
Para instalar Oracle en Ubuntu se necesitan parámetros de kernel personalizados que afectan al rendimiento de Oracle. Los parámetros de memoria compartida, incluyendo el tamaño mínimo y máximo, el número de segmentos de memoria compartida y los semáforos que pueden ser considerados como banderas para la memoria compartida deben ser personalizados de acuerdo con la documentación de Oracle. También es necesario configurar el número máximo de archivos que se pueden abrir a la vez, el número máximo de conexiones de red simultáneas y el tamaño del búfer de envío y recepción de la red. Los parámetros del núcleo considerados pueden clasificarse en tres grupos: específicos del núcleo(kernel), específicos de la red(network) y gestores de archivos(fs). Edite el archivo /etc/sysctl.conf para anular los parámetros del kernel de Linux:
vim /etc/sysctl.conf
Añada las líneas que se muestran a continuación al final de este archivo de configuración.
# ============================
# Oracle 11g
# ============================
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmni = 4096
# Replace kernel.shmmax with the half of your memory size in bytes
# if lower than 4 GB minus 1
# 2147483648 is 2 GigaBytes (4 GB of RAM / 2)
kernel.shmmax=2147483648
#
# Max number of network connections. Use sysctl -a | grep ip_local_port_range to check.
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
#
# The maximum allowed value, set to avoid overhead and input/output errors
fs.aio-max-nr = 1048576
# 512 * Processes
fs.file-max = 6815744
fs.suid_dumpable = 1
#
# To allow dba to allocate hugetlbfs pages
# 1001 is your oinstall group, you can check this id with the grep oinstall /etc/group command
vm.hugetlb_shm_group = 1001
Aplica los parámetros del núcleo que hayas configurado:
sysctl -p
Configuración de los límites del shell
Debe establecer los límites del shell para mejorar el rendimiento del software de base de datos Oracle.
Edite el archivo /etc/security/limits.conf:
vim /etc/security/limits.conf
Añade las siguientes líneas al final del archivo de configuración:
# Oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
La primera columna especifica el usuario para el que se establecen los límites.
La segunda columna funciona con dos opciones: suave y dura. Soft es el número máximo que puede configurar el usuario, mientras que hard es el número máximo que puede reconfigurar el usuario definido (oracle). Si el usuario del oráculo alcanza el valor bajo crítico de 2047 establecido en la primera línea y necesita ampliar el límite, el usuario puede aumentar el límite a 16384. Los valores superiores a 16384 no pueden ser configurados por el usuario oracle, pero sí por root.
La tercera columna define en qué recursos se aplican los límites establecidos.
La cuarta columna define el número máximo del parámetro de recursos especificado en la tercera columna.
Configuración PAM
Asegúrese de que el archivo de configuración /etc/pam.d/login
contiene la siguiente línea:
session required pam_limits.so
Puede hacerlo con el comando
cat /etc/pam.d/login | grep pam_limits.so
Si falta la línea mencionada, añádala manualmente.
Configuración del perfil de la carcasa
Las variables de entorno de todo el sistema se establecen en el perfil de shell bash global que se establece en el archivo de configuración /etc/profile.
Edite /etc/profile y establezca algunos parámetros necesarios para oracle de forma global y permanente:
vim /etc/profile
Añade las siguientes líneas:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Nota: Es útil saber cuándo se puede utilizar cada fichero de configuración del shell porque más adelante necesitarás configurar un perfil que contenga variables de entorno para el usuario oracle.
Bash login shell carga su configuración desde los siguientes archivos en el orden apropiado:
- /etc/perfil
- ~/.bash_profile
- ~/.bash_login
- ~/.profile
/etc/perfil puede considerarse como un perfil global para el shell de inicio de sesión bash.
./perfil_bash se aplica para los shells de inicio de sesión bash, por ejemplo, cuando se inicia sesión en la interfaz de línea de comandos de Linux directamente utilizando un teclado conectado a este ordenador Linux, o cuando se abre una nueva sesión de consola después de iniciar sesión utilizando el terminal SSH.
.profile – este archivo se lee para bash y otros shells como sh.
Bash shell interactivo sin inicio de sesión carga la configuración desde ~/.bashrc
Significa que si ya has iniciado sesión en tu máquina Linux (por ejemplo, has iniciado sesión en Ubuntu con GUI) y luego has abierto una nueva ventana de consola (terminal), entonces la configuración del shell, incluyendo las variables de entorno, se carga desde el archivo .bashrc antes de que tengas acceso al símbolo del sistema.
El shell no interactivo y no de inicio de sesión de Bash carga la configuración establecida en la variable de entorno $BASH_ENV variable de entorno. El intérprete de comandos no interactivo y sin inicio de sesión se utiliza cuando se ejecuta un script.
Instalación de los paquetes necesarios
Debe instalar los paquetes requeridos por Oracle. Tenga cuidado al instalarlos porque un paquete que falte puede provocar errores durante la instalación de Oracle o la creación de la base de datos.
Actualizar el árbol de repositorios:
apt-get update
Instalar paquetes para evitar errores que pueden producirse durante la instalación de Oracle en Ubuntu. La mayoría de los paquetes se pueden instalar con el gestor de paquetes estándar de Ubuntu desde repositorios en línea.
apt-get install alien
apt-get install autoconf
apt-get install automake
apt-get install autotools-dev
apt-get install binutils
apt-get install bzip2
apt-get install doxygen
apt-get install elfutils
apt-get install expat
apt-get install gawk
apt-get install gcc
apt-get install gcc-multilib
apt-get install g++-multilib
apt-get install libelf-dev
apt-get install libltdl-dev
apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
apt-get install libpth-dev
apt-get install libpthread-stubs0-dev
apt-get install libstdc++5
apt-get install make
apt-get install openssh-server
apt-get install rlwrap
apt-get install rpm
apt-get install sysstat
apt-get install unixodbc
apt-get install unixodbc-dev
apt-get install unzip
apt-get install x11-utils
apt-get install zlibc
apt-get install libaio1
apt-get install libaio-dev
Quedan algunos paquetes por instalar, pero para instalarlos necesitarás estos consejos y trucos.
apt-get install ia32-libs
Cuando ejecutes el comando para instalar este paquete con apt-get, verás un mensaje diciendo que este paquete no está disponible.
Existe un paquete alternativo que puede instalarse en lugar de ia32-libs. Instalar el paquete alternativo lib32z1:
apt-get install lib32z1
Vamos a instalar el siguiente paquete:
apt-get install libmotif4
Este paquete tampoco está disponible. Debe descargar e instalar este paquete manualmente. Descargue el archivo libmotif4_2.3.4-8ubuntu1_amd64.deb de un recurso gratuito. Guarde el archivo deb descargado en un directorio personalizado, por ejemplo, /home/usuario1/Downloads, antes de poder instalar este paquete.
El flujo de trabajo para instalar paquetes deb en Ubuntu es el siguiente (ejecute los comandos con privilegios de root):
sudo dpkg -i nombre_paquete.deb
sudo apt-get -f install
En este caso, ejecutamos los comandos para instalar paquetes como un usuario normal, por ejemplo, usuario1 utilizando sudo. Pulsa Ctrl+D para salir de la sesión de root y volver a la sesión de usuario1 en la consola (terminal).
Vaya al directorio donde se almacenan los archivos descargados:
cd /home/user1/Downloads
Descargue el archivo utilizando un enlace directo:
wget http://launchpadlibrarian.net/207968936/libmotif4_2.3.4-8ubuntu1_amd64.deb
sudo dpkg -i libmotif4_2.3.4-8ubuntu1_amd64.deb
sudo apt-get -f install
El siguiente paquete no se puede instalar automáticamente:
sudo apt-get install libpthread-stubs0
E: No se puede localizar el paquete libpthread-stubs0
Descargue e instale este paquete manualmente.
wget http://launchpadlibrarian.net/154418307/libpthread-stubs0-dev_0.3-4_amd64.deb
sudo dpkg -i libpthread-stubs0-dev_0.3-4_amd64.deb
sudo apt-get -f install
De forma similar, instale el siguiente paquete:
sudo apt-get install lsb-cxx
E: Unable to locate package lsb-cxx
Puede descargar el paquete lsb-cxx manualmente.
wget http://packages.linuxmint.com//pool/upstream/l/lsb/lsb-cxx_4.1+Debian11ubuntu6mint1_amd64.deb
sudo dpkg -i lsb-cxx_4.1+Debian11ubuntu6mint1_amd64.deb
sudo apt-get -f install
Instalar un paquete más:
sudo apt-get install pdksh
E: El paquete ‘pdksh’ no tiene candidato de instalación
El flujo de trabajo para instalar el paquete pdksh es el mismo. Este paquete puede descargarse aquí.
wget http://launchpadlibrarian.net/200019501/pdksh_50e-2ubuntu1_all.deb
sudo dpkg -i pdksh_50e-2ubuntu1_all.deb
sudo apt-get -f install
Oracle 11g requiere la instalación de la versión de 32 bits del paquete libstdc++5 que no se instala en Ubuntu 16 automáticamente. A continuación se explica cómo instalar este paquete manualmente.
Los siguientes comandos se ejecutan como root. Cree un directorio temporal para descargar el paquete:
mkdir /tmp/libstdc++5
cd /tmp/libstdc++5
Descargue el paquete (se muestran los enlaces a los paquetes de 32 y 64 bits):
wget http://mirrors.edge.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-30_i386.deb
wget http://mirrors.edge.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-30_amd64.deb
Instale los paquetes descargados con dpkg:
dpkg --force-architecture -i libstdc++5_3.3.6-30_i386.deb
Nota: Si los enlaces no funcionan, se pueden publicar versiones más recientes de los paquetes en lugar de versiones antiguas. En este caso, visite una página web en el navegador y copie los enlaces correctos a los paquetes deb necesarios:
http://mirrors.edge.kernel.org/ubuntu/pool/universe/g/gcc-3.3/
Reinicie la máquina Linux para aplicar los cambios.
init 6
Creación de enlaces simbólicos
Hay que crear enlaces simbólicos (symlinks) para que la estructura de archivos y directorios utilizada en Ubuntu sea similar a la estructura de archivos de Red Hat. Cree los enlaces simbólicos para hacer que la estructura del sistema de archivos parezca idéntica a la estructura del sistema de archivos de Red Hat para evitar errores durante la instalación de Oracle.
Ejecute los comandos como root:
mkdir /usr/lib64
ln -s /etc /etc/rc.d
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/basename /bin/basename
ln -s /usr/bin/rpm /bin/rpm
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib64/
ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
ln -sf /bin/bash /bin/sh
ln -s /etc/rc0.d /etc/rc.d/rc0.d
ln -s /etc/rc2.d /etc/rc.d/rc2.d
ln -s /etc/rc3.d /etc/rc.d/rc3.d
ln -s /etc/rc4.d /etc/rc.d/rc4.d
ln -s /etc/rc5.d /etc/rc.d/rc5.d
ln -s /etc/rc6.d /etc/rc.d/rc6.d
ln -s /etc/init.d /etc/rc.d/init.d
Los comandos anteriores ayudan a prevenir errores, tales como:
- genclntsh: Failed to link libclntsh.so.11.1 in make file for rdbms/lib/ins_rdbms.mk because of missing library: /usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a inside
- lib//libagtsh.so: undefined reference to `nnfyboot’ in make: rdbms/lib/dg4odbc] Error 1
Ahora evitemos un error más: /lib64/libgcc_s.so.1: Archivo o directorio no existe, al crear lib/liborasdkbase.so.11.1 en ins_rdbms.mk. Ve al directorio /lib64 y ejecuta el comando:
cd /lib64
ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 .
No te pierdas el punto al final del comando.
Establezca la versión de Linux como Red Hat Linux versión 5 en /etc/redhat-release. Las distribuciones de Red Hat Linux almacenan su versión en ese fichero.
echo 'Red Hat Linux release 5' > /etc/redhat-release
Configuración del perfil de usuario oracle
Ahora necesitas configurar el entorno de usuario para el usuario oracle.
Inicia sesión como oracle si has abierto la consola como otro usuario:
su oracle
Ejecuta los comandos como oracle:
cd
vim ~/.bashrc
Añade las siguientes líneas al archivo .bashrc
:
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
# Enter your hostname
ORACLE_HOSTNAME=ubuntu-oracle11; export ORACLE_HOSTNAME
ORACLE_UNQNAME=ORADB11G; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=ORADB11G; export ORACLE_SID
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
umask 022
Aplica los ajustes:
source ~/.bashrc
Ahora deberías reiniciar Ubuntu. Tenga en cuenta que los ajustes se aplicarán después de reiniciar, incluso sin ejecutar la fuente ~/.bashrc.
init 6
Preparación del instalador de Oracle
Ya casi hemos terminado con los preparativos para instalar Oracle. Sólo hay unos pocos pasos más antes de que pueda iniciar el instalador e instalar Oracle en Ubuntu. Después de reiniciar la máquina Ubuntu, inicie sesión como oracle en la interfaz gráfica de usuario de Ubuntu.
Abre un navegador web.
En nuestro ejemplo, dos archivos descargados se guardan en /home/oracle/Downloads para mayor comodidad:
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
Abra la consola en Ubuntu y ejecute los siguientes comandos como oracle. Vaya al directorio donde se almacenan los archivos descargados:
cd /home/oracle/Downloads
o cd ~/Downloads/
Descomprima los archivos de instalación de los archivos zip descargados:
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
Los archivos extraídos se almacenan en:
/home/oracle/Downloads/database
Ahora ya está listo para ejecutar el instalador e instalar Oracle en Ubuntu.
Instalación de Oracle
Vaya al directorio en el que se descargaron los archivos de instalación. Ejecutar comandos como oracle en la consola iniciada en la sesión GUI.
cd /home/oracle/Downloads/database
Ejecute el instalador de Oracle:
./runInstaller
1. Configure las actualizaciones de seguridad
Desmarque la casilla «Deseo recibir actualizaciones de seguridad a través de My Oracle Support«.
Haga clic en Siguiente para ir al siguiente paso del asistente de instalación de Oracle.
Verá el mensaje: No ha facilitado una dirección de correo electrónico. ¿Desea permanecer desinformado sobre problemas de seguridad críticos en su configuración? Ignore este mensaje y pulse Sí.
2. Opción de instalación
Seleccione Crear y configurar una base de datos.
3. System Class
Seleccione Server Class, que es una opción avanzada para instalar la base de datos Oracle en Ubuntu.
4. Opciones de Grid
Seleccione Instalación de base de datos de instancia única como tipo de instalación de base de datos.
5. Tipo de instalación
Seleccione Instalación avanzada como tipo de instalación. Esta opción permite establecer contraseñas, juegos de caracteres, idiomas, opciones de almacenamiento, etc.
6. Idiomas del producto
Seleccione los idiomas necesarios. En este ejemplo, se seleccionan Inglés e Inglés (Reino Unido).
7. Database Edition
Seleccione Enterprise Edition para la base de datos que va a instalar.
8. Seleccione la ubicación base de Oracle
Normalmente se utilizan el directorio base de Oracle y el directorio raíz de Oracle.
Base Oracle: /u01/app/oracle
Ubicación del software: /u01/app/oracle/product/11.2.0/dbhome_1
9. Crear inventario
El directorio que se utiliza para almacenar los archivos de instalación de Oracle se denomina «directorio de inventario de Oracle».
Directorio de Inventario: /u01/app/oraInventory
oraInventory Nombre del grupo: oinstall
10. Tipo de configuración
Seleccione el tipo de base de datos que desea crear:
Propósito General / Procesamiento de Transacciones
11. Identificadores de base de datos
Puede definir el mismo valor para un nombre de base de datos global y para un identificador de servicio Oracle.
Nombre global de la base de datos: ORADB11G
Identificador de servicio Oracle (SID): ORADB11G
12. Opciones de configuración
En este paso hay cuatro pestañas. Puede establecer la configuración en cada pestaña de la siguiente manera:
Memoria: Activar la gestión automática de memoria (por defecto).
Juegos de caracteres: Utilice Unicode (AL32UTF8).
Seguridad: Afirmar todos los nuevos ajustes de seguridad (por defecto).
Esquemas de ejemplo: Crear base de datos con esquemas de ejemplo (no obstante, puede dejar el valor por defecto).
13. Opciones de gestión
Puede dejar los parámetros por defecto.
14. Almacenamiento de bases de datos
Lea las recomendaciones que aparecen en la ventana y seleccione Sistema de archivos.
Especifique la ubicación del archivo de base de datos: /u01/app/oracle/oradata
15. Backup y recuperación
En este punto puede seleccionar la opción: No habilitar backups automatizados (por defecto).
Los backups son importantes, pero es mejor configurar los backups de la base de datos Oracle después de instalar Oracle en Ubuntu.
16. Contraseñas de esquema
Puede seleccionar Utilizar la misma contraseña para todas las cuentas. Introduzca una contraseña y confírmela.
17. Grupos de sistemas operativos
Lea la descripción que aparece en la ventana y seleccione los grupos necesarios.
Administrador de base de datos (OSDBA) Grupo: dba
Operador de base de datos (OSOPER) Grupo: oinstall
18. Comprobaciones de requisitos previos
Ahora el instalador de Oracle comprueba si la configuración del sistema cumple los requisitos previos. Aparecerán advertencias para este paso. El parámetro del núcleo del sistema operativo semmni se configuró anteriormente, pero se muestra el estado fallido para este parámetro.
Parámetro del núcleo del sistema operativo: semmni Fallido
Puede comprobar el valor de este parámetro para verificar que todo es correcto. Compruebe el parámetro semmni con el comando (ejecutado como root):
/sbin/sysctl -a | grep sem
kernel.sem = 250 32000 100 128
o
cat /proc/sys/kernel/sem
250 32000 100 128
Si el último valor no es inferior a 128, entonces todo está bien, y puede ignorar esta advertencia.
Por algún motivo, el comprobador de requisitos previos de Oracle no puede determinar que el parámetro semmni sea correcto y que los paquetes necesarios estén instalados. Si el contenido de su ventana de comprobaciones de requisitos previos es similar al de la ventana mostrada en la captura de pantalla anterior, marque la casilla Ignorar todo y haga clic en Siguiente para continuar.
19. Resumen
Compruebe el resumen de configuración para asegurarse de que ha configurado todos los ajustes necesarios. Puede guardar el archivo de respuesta(db.rsp), ya que puede resultarle útil cuando necesite instalar Oracle en varias máquinas Linux o si va a instalar Oracle en Ubuntu Server sin la GUI.
Ahora puede supervisar cómo el instalador de Oracle está copiando los archivos hasta que el instalador pase a la etapa Vincular binarios.
Vinculación de binarios para Oracle: corrección de errores de vinculación y compilación
Esta etapa es una de las más difíciles de instalar la base de datos Oracle en Ubuntu Linux. La probabilidad de obtener errores en este paso es alta. En el ejemplo actual, se encuentra el siguiente error cuando instalamos Oracle 11g en Ubuntu 16:
Error al invocar el objetivo ‘install’ de makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’. Consulte ‘/u01/app/oraInventory/logs/installActions2020-01-22_12-53-06PM.log’ para más detalles.
Tenga en cuenta que pueden producirse errores similares aunque instale Oracle en Oracle Linux. El nombre de su archivo de registro debe ser diferente.
Nota: Los archivos con extensión .mk son makefiles y se utilizan para compilar programas. Un makefile determina qué «piezas» del programa compilar y qué archivos del programa deben compilarse y enlazarse juntos. Algunos componentes del software de Oracle están escritos en Java (por ejemplo, Oracle Universal Installer que tiene una interfaz gráfica de usuario) y otros componentes están escritos en C. Los componentes escritos en Java deben interpretarse sin compilar (Java es multiplataforma), mientras que los componentes escritos en C deben compilarse y la vinculación de binarios y bibliotecas es la etapa necesaria de este proceso. Oracle utiliza este enfoque para añadir más flexibilidad y permitir la instalación de Oracle en distintos sistemas operativos (Windows, Linux, Solaris). Otra ventaja es el tamaño reducido del instalador. La desventaja es que pueden producirse errores en la etapa de vinculación de binarios durante el proceso de instalación de Oracle. En la mayoría de los casos, deberá añadir los indicadores adecuados editando los archivos .mk para solucionar los problemas de enlace.
Averigüemos cómo solucionar los errores de enlace de binarios que se producen al instalar la base de datos Oracle en Ubuntu Linux.
Inicie sesión como oracle a través de SSH en la máquina Ubuntu y compruebe el archivo de registro:
tail -n 100 /u01/app/oraInventory/logs/installActions2020-01-22_12-53-06PM.log
Cuando leas la salida del log, presta atención a la línea que explica el error.
INFO: /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk:11
: la receta para el objetivo ‘ctxhx’ falló
ins_ctx.mk:11 le remite a la línea 11 del archivo ins_ctx.mk.
Abramos el archivo ins_ctx.mk
y comprobemos la línea 11 de ese archivo.
vim /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
En el modo de navegación de vim escriba :set number
para ver los números de línea.
Busquemos la línea número 11.
Cuando se utiliza el modo de navegación en vim, puede encontrar la cadena necesaria con el comando:
/LINK_CTXHX
Editar la siguiente sección:
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
La línea número 11 debe ser editada como sigue:
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
/usr/lib64/stdc.a
Guarde el ins_ctx.mk
y salga de vim.
Ahora vuelva a la ventana de error de instalación de Oracle y haga clic en Reintentar.
El proceso de instalación continúa, pero a los pocos segundos aparece otro error al construir las librerías del agente:
Error al invocar el objetivo ‘agent nmhs’ de makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk’.
Ejecute los siguientes comandos como oracle para solucionar este problema:
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
Nota: sed es un editor de texto de flujo que se utiliza para ahorrar tiempo de edición de los archivos .mk en comparación con la edición de ellos con vim u otros editores de texto interactivos.
Después de ejecutar los dos comandos anteriores, haga clic en Reintentar en la ventana de error de instalación de Oracle. Puede ver que el error se ha solucionado y que la instalación de la base de datos Oracle en Ubuntu Linux sigue adelante. Sin embargo, a los pocos segundos se produce otro error al enlazar los ejecutables RDBMS:
Error al invocar el objetivo ‘all_no_orcl’ de makefile ‘/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk’.
Ejecute los siguientes comandos como oracle para solucionar este error y otros similares:
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
cd $ORACLE_HOME/lib
ln -s libclient11.a libagtsh.a
$ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0
sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh
sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
A continuación, vuelva a la ventana de error y haga clic en Reintentar. Ahora el proceso de instalación debería reanudarse sin errores.
Oracle Database Configuration Assistant (DBCA) se abrirá después de pasar la etapa Link binaries.
Ejecución de scripts de configuración
Estamos casi en la línea de meta de la instalación de la base de datos Oracle en Ubuntu.
Ejecute estos dos scripts como root:
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
En la siguiente captura de pantalla puede ver que los scripts se han ejecutado correctamente.
La instalación de Oracle Database se ha realizado correctamente.
Si ve esta notificación, puede cerrar la ventana del instalador de Oracle.
Compruebe que Oracle se ejecuta en Ubuntu
Abra un navegador web en su máquina Ubuntu que ejecuta Oracle y compruebe si Oracle se está ejecutando abriendo la interfaz web de Oracle Database Control Manager. Para ello, puede utilizar los siguientes enlaces:
https://localhost:1158/em
https://ubuntu-oracle11:1158/em
https://192.168.101.11:1158/em
También puede intentar conectarse a la máquina Ubuntu que ejecuta Oracle desde otro host de su red.
Defina los parámetros de conexión.
Nombre de usuario: SYS
Contraseña: Su contraseña que se ha establecido durante la instalación de Oracle
Conectar Como: SYSDBA
A continuación puede ver la captura de pantalla de Oracle Enterprise Manager para cuando Oracle se está ejecutando correctamente.
Configuración posterior a la instalación de Oracle
Oracle ya está instalado, y ahora debemos configurar la base de datos para que se inicie automáticamente una vez arrancado Ubuntu. Debe editar el archivo de configuración /etc/oratab para configurar Oracle para que se inicie durante el arranque del sistema.
Ejecute el comando como root.
vim /etc/oratab
Sustituya N por Y al final de la línea:
ORADB11G:/u01/app/oracle/product/11.2.0/dbhome_1:Y
Comandos útiles
Antes de configurar Oracle para que se inicie automáticamente, debe saber cómo iniciar los componentes de Oracle manualmente. Esto también ayudará al diagnóstico. Ejecute estos comandos como usuario oracle.
Iniciar la base de datos:
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
Detener la base de datos:
$ORACLE_HOME/bin/dbshut $ORACLE_HOME
Inicie Database Control Enterprise Manager que proporciona una interfaz web para el control de la base de datos:
emctl start dbconsole
Detener Database Control Manager:
emctl stop dbconsole
Compruebe el estado de Database Control Manager:
emctl status dbconsole
Iniciar la escucha:
$ORACLE_HOME/bin/lsnrctl start
Detener el listener:
$ORACLE_HOME/bin/lsnrctl stop
Compruebe el estado del listener:
$ORACLE_HOME/bin/lsnrctl status
Iniciar Database Configuration Assistant (en el shell GUI, no en la cosola SSH):
dbca
El listener de Oracle puede configurarse editando el archivo:
vim $ORACLE_HOME/network/admin/listener.ora
Conexión a la base de datos en la consola:
sqlplus / as sysdba;
Creación de un script de inicio para Oracle en Ubuntu
Veamos cómo configurar Oracle para que se inicie automáticamente al arrancar Ubuntu. Después de editar /etc/oratab, debes crear un script de arranque en el directorio /etc/init.d/.
Crea el nuevo archivo del script de inicio de Oracle en Ubuntu (ejecuta el comando como root):
vim /etc/init.d/oracle
Añade el siguiente contenido a ese archivo:
#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
### BEGIN INIT INFO
# Provides: Oracle
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Startup/Shutdown Oracle listener and instance
### END INIT INFO
#ORACLE_UNQNAME="ORADB11G"
#export $ORACLE_UNQNAME
echo "ORACLE_UNQNAME is $ORACLE_UNQNAME"
ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"
ORACLE_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_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: "
echo "dbstart"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
echo "lsnrctl start"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
#Optional : for Enterprise Manager software only
echo "emctl start dbconsole"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch /var/lock/oracle
echo "OK - a script has been executed"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
#Optional : for Enterprise Manager software only
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORAClE_HOME/bin/emctl stop dbconsole"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
echo "OK - a script has been executed"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0
Establece los permisos correctos:
chown oracle:oinstall /etc/init.d/oracle
chmod 0775 /etc/init.d/oracle
Haz que este script se inicie justo después del arranque del sistema operativo (disponible para los niveles de ejecución por defecto):
update-rc.d oracle defaults
Puedes editar la prioridad de inicio si es necesario.
Ejecute el script para detener Oracle (puede ejecutar este script como root):
/etc/init.d/oracle stop
Si desea iniciar Oracle, ejecute este script con el comando:
/etc/init.d/oracle start
Nota: Preste atención a la siguiente línea y líneas similares en el script de inicio de Oracle:
source "/home/oracle/.bashrc" && su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
Primero configuramos el shell para que lea los ajustes almacenados en el archivo .bashrc del usuario oracle, incluyendo variables como ORACLE_HOSTNAME, ORACLE_BASE, PATH, etc. que son necesarias para que los componentes de Oracle se ejecuten correctamente. Una vez aplicados los ajustes bash del usuario oracle a la sesión shell actual, se ejecuta el siguiente comando para iniciar la base de datos Oracle.
¿Cuál es la diferencia entre su -
y su
?
user1@hostname:~$ su - username2
– este comando ejecuta la sesión de shell de línea de comandos como el usuario seleccionado (nombredeusuario2) con los ajustes del usuario seleccionado(nombredeusuario2) como si hubiera iniciado sesión como nombredeusuario2 al crear una nueva sesión de shell directamente (desde cero). Las variables de entorno de nombredeusuario2 se utilizan en esta sesión de shell.
user1@hostname:~$ su username2
– este comando ejecuta el shell de línea de comandos como el usuario seleccionado(username2) con los ajustes del usuario actual(user1) y las variables de entorno del user1 son heredadas por username2 en esta sesión de shell.
su -c
(–command) significa que un comando especificado debe ejecutarse como el usuario seleccionado.
Solución de problemas
Repasemos algunos posibles problemas que pueden surgir al instalar Oracle en Ubuntu y si existen métodos para solucionarlos.
ORA-12547: TNS:contacto perdido
Database Configuration Assistant no puede crear una base de datos y se produce un error.
ORA-12547: TNS:contacto perdido.
Los archivos de registro de la operación actual se encuentran en:
/u01/app/oracle/cfgtoollogs/dbca/ORADB11G
Comprueba el archivo de registro:
tail -n 100 /u01/app/oracle/cfgtoollogs/dbca/ORADB11G/cloneDBCreation.log
Preste atención a estas cadenas:
oracleORADB11G: error al cargar bibliotecas compartidas: libaio.so.1: no se puede abrir el archivo de objetos compartidos: No such file or directory
ORA-12547: TNS:lost contact
Una de las razones por las que se muestra este mensaje de error es la ausencia de bibliotecas relacionadas con los paquetes apropiados-libaio1, libaio-dev. Compruebe si los paquetes mencionados están instalados, en caso contrario instálelos:
sudo apt-get install libaio1
sudo apt-get install libaio-dev
Oracle no se inicia automáticamente al arrancar Ubuntu
Puede ocurrir que esté ejecutando el script como root y vea el mensaje:
«Variable de entorno ORACLE_UNQNAME no definida. Por favor, establezca ORACLE_UNQNAME como nombre único de la base de datos».
Oracle no se inicia automáticamente cuando Ubuntu arranca en esta situación. Si aparece este mensaje de error al iniciar Oracle Enterprise Manager 11g Database Control, debe comprobar las variables de entorno.
How to check the ORACLE_UNQNAME?
Puede comprobar el ORACLE_UNQNAME (ejecutar comandos como oracle).
sqlplus / as sysdba;
SQL> SELECT name, db_unique_name FROM v$database;
SQL> exit
Edita /etc/profile (como root):
vim /etc/profile
Añada la línea al final del archivo /etc/profile:
ORACLE_UNQNAME=ORADB11G; export ORACLE_UNQNAME
Reinicie la máquina Ubuntu en la que está instalado Oracle.
Ahora este error no debería aparecer al ejecutar el script y Oracle debería iniciarse después de ejecutar el comando /etc/init.d/oracle start
manualmente. Sin embargo, Oracle sigue sin iniciarse automáticamente durante el arranque de Ubuntu Linux. La razón de este problema es que las variables de entorno no están configuradas para el shell en el que se ejecuta el script. Vea la explicación del script de inicio de Oracle más arriba y revise su script cuidadosamente.
¿Es posible instalar Oracle 11g en Ubuntu 18?
Ubuntu 18 tiene versiones más recientes de las bibliotecas del sistema Linux que son muy compatibles con Oracle 11g R2. Es muy probable que obtenga errores en la etapa Link Binaries de la instalación de Oracle. Por ejemplo:
Error al invocar el objetivo ‘links proc gen_pcscfg’ de makefile ‘ u01/app/oracle/product/11.2.0/dbhome_1/precomp/lib/ins_precomp.mk ‘.
Por eso en este tutorial se utiliza Ubuntu 16. Por supuesto, puede intentar instalar Oracle 11g en Ubuntu 18, pero prepárese para algunas dificultades. Es posible que tenga que instalar paquetes y bibliotecas de las versiones anteriores y, por tanto, reducir la versión del sistema operativo Ubuntu.
El flujo de trabajo de la instalación de la base de datos Oracle en Ubuntu 18 es similar a la instalación de la base de datos Oracle en Ubuntu 16 (para Oracle 11g R2 EE). En la etapa Vincular binarios, cuando se producen errores, debe analizar los registros, investigar la documentación y corregir los errores de vinculación.
El siguiente comando puede ser útil para volver a vincular manualmente las bibliotecas después de editar los archivos:
$ORACLE_HOME/bin/relink all
Conclusión
Esta entrada del blog le guiará a través de la instalación de Oracle 11g R2 Enterprise Edition, que es un proceso mucho más complejo que la instalación de Oracle XE (Express Edition). La instalación de la base de datos Oracle en Ubuntu requiere que realice una configuración manual de los archivos y parámetros del sistema.
Instalar Oracle en Ubuntu Linux no es tarea fácil, pero Oracle Enterprise Edition ofrece muchas ventajas. Los pasos de instalación de Oracle que requieren gran atención por tu parte son la instalación de los paquetes de Ubuntu, la vinculación de los binarios y la creación de un script de inicio. Si sus versiones de Ubuntu y Oracle coinciden con las versiones utilizadas en este post, siga el tutorial paso a paso para una instalación satisfactoria de Oracle. Después de hacer la instalación de la base de datos Oracle, no olvide hacer backups.