Instalación de un servidor Oracle database 19c sobre Red Hat Enterprise Linux
Warning: This information may be outdated. Please note the date of the post.
Requisitos para el entorno de trabajo
Vamos a instalar ORACLE 19c sobre Linux 8. Para ello vamos a trabajar en una máquina virtual.
Requisitos:
Nuestra máquina virtual constará de los siguentes requisitos
- 2 Gb de Ram (mínimo), en mi caso le puesto 6Gb
- 2 CPU
- 30 Gb de almacenamiento mínimo, en mi caso le he puesto 60Gb
- Sistema Linux: (Red Hat Enterprise Linux for x86_64 (v. 8.3 for x86_64))
- Red puente hacia la máquina anfitriona
Preinstalación
Necesitamos instalar el paquete de Oracle con los paquetes esenciales anteriores a su instalación
- Permisos de superusuario
su -
- Obtenemos el paquete de preinstalación de oracle
curl -o oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
- Cuando intentamos instalar el paquete nos da un fallo de dependencias entonces las instalamos y con ellas otros paquetes necesarios. Estas dependencias pueden variar de un sistema a otro, hay que fijarse muy bien en el error que te muestra e instalar las dependencias /librerias necesarias.
[root@localhost user]# rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
advertencia:oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm: EncabezadoV3 RSA/SHA256 Signature, ID de clave ec551f03: NOKEY
error: Error de dependencias:
compat-libcap1 es necesario por oracle-database-preinstall-19c-1.0-1.el7.x86_64
compat-libstdc++-33 es necesario por oracle-database-preinstall-19c-1.0-1.el7.x86_64
libaio-devel es necesario por oracle-database-preinstall-19c-1.0-1.el7.x86_64
- Instalamos paquetes necesarios:
yum install -y gcc-c ++ make
yum install -y ksh
yum install -y sysstat
yum install -y xorg-x11-utils
yum install java-11-openjdk-devel
yum install -y libnsl
- Instalamos dependencias:
dnf install libaio-devel
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm
rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm
- Volvemos a instalar el paquete de preinstalación y vemos que ahora se ha instalado correctamente, una vez cumplidas todas las dependencias.
[root@localhost user]# rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
advertencia:oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm: EncabezadoV3 RSA/SHA256 Signature, ID de clave ec551f03: NOKEY
Verifying... ################################# [100%]
Preparando... ################################# [100%]
Actualizando / instalando...
1:oracle-database-preinstall-19c-1.################################# [100%]
Usuario oracle y grupos. Cambio de contraseña.
- Comprobamos que se ha creado el usuario de oracle
[root@localhost user]# grep 'oracle' /etc/passwd
oracle:x:65535:65535::/home/oracle:/bin/bash
- Comprobamos que se han creado los grupos necesarios para oracle
[root@localhost user]# grep 'oracle' /etc/group
oinstall:x:65535:oracle
dba:x:65536:oracle
oper:x:65537:oracle
backupdba:x:65538:oracle
dgdba:x:65539:oracle
kmdba:x:65540:oracle
racdba:x:65541:oracle
- Cambiamos la contraseña de Oracle para asegurarnos la nuestra
passwd oracle
Creación del directorio de trabajo
- Creamos el directorio de trabajo
mkdir -p /u01/app/oracle/product/19.3/dbhome_1
cd /u01/app/oracle/product/19.3/dbhome_1
Descarga de Oracle 19c e instalación del mismo
- Descargamos el software desde la pagina oficial comprimido en .zip
https://www.oracle.com/es/database/technologies/oracle19c-linux-downloads.html
- Descomprimimos en el directorio que hemos creado anteriormente
[root@localhost dbhome_1]# unzip /home/user/Descargas/LINUX.X64_193000_db_home.zip
- Vemos los archivos actuales
[root@localhost dbhome_1]# ls
addnode deinstall javavm OPatch QOpatch sqldeveloper
apex demo jdbc opmn R sqlj
assistants diagnostics jdk oracle19c-linux-downloads.html racg sqlpatch
bin dmu jlib oracore rdbms sqlplus
clone drdaas ldap ord relnotes srvm
crs dv lib ords root.sh suptools
css env.ora md oss root.sh.old ucp
ctx has mgw oui root.sh.old.1 usm
cv hs network owm runInstaller utl
data install nls perl schagent.conf wwg
dbjava instantclient odbc plsql sdk xdk
dbs inventory olap precomp slax
- Le damos los permisos necesarios al usuario oracle sobre nuestro directorio de trabajo, es decir lo hacemos propietario del mismo.
chown -R oracle:oinstall /u01
- Comprobamos que se ha cambiado el propietario recursivamente
[root@localhost dbhome_1]# ls -l / | grep 'u01'
drwxrwxrwx. 3 oracle oinstall 17 dic 7 20:38 u01
- Entramos como usuario Oracle
su - oracle
[oracle@localhost ~]$ pwd
/home/oracle
- Cambiamos las variables de entorno editando el siguiente fichero de configuración, yo he descargado el editor ’nano’ porque me resulta más cómo de ‘vi’
yum install nano
nano .bash_profile
- El fichero debe quedar de la siguiente forma
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/19.3/dbhome_1
ORACLE_SID=orcl
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID
- Comprobamos que tenemos las variables operativas
[oracle@localhost ~]$ env | grep ORACLE
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1
- Vemos que usando la variable accedemos a nuestro directorio de trabajo
[oracle@localhost ~]$ cd $ORACLE_HOME
[oracle@localhost dbhome_1]$ pwd
/u01/app/oracle/product/19.3/dbhome_1
- Comprobamos que tenemos el ejecutable de Oracle y que tiene los propietarios adecuados.
[oracle@localhost dbhome_1]$ ls -l runInstaller
-rwxrwxrwx. 1 oracle oinstall 1783 mar 8 2017 runInstaller
- Vamos a conectarnos por ssh al usuario oracle pero antes vamos a ejecutar una variable para que se pueda traer la ventana de oracle a nuestra máquina anfitriona
[oracle@localhost dbhome_1]$ export DISPLAY=:0
[oracle@localhost dbhome_1]$ echo $DISPLAY
:0
- Desde la máquina fisica nos conectamos por ssh al usuario oracle utilizando la opción -X
celiagm@debian:~$ ssh -X oracle@192.168.100.213
oracle@192.168.100.213's password:
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Tue Dec 8 14:00:55 2020 from ::1
- Ahora nos vamos a editar un fichero de configuración de oracle para evitar que nos salga un error muy común en la instalación de Oracle sobre Linux 8. Este error es ‘supportedOSCheck’
[oracle@localhost dbhome_1]$ su -
Contraseña:
[root@localhost ~]# nano /u01/app/oracle/product/19.3/dbhome_1/cv/admin/cvu_config
- Añadimos la siguiente linea
CV_ASSUME_DISTID=OEL8.1
- Ahora sí, ejecutamos la instalación desde el usuario Oracle remotamente:
[oracle@localhost dbhome_1]$ ./runInstaller
Iniciando el asistente de configuración de Oracle Database...
El archivo de respuesta para esta sesión se puede encontrar en:
/u01/app/oracle/product/19.3/dbhome_1/install/response/db_2020-12-08_02-08-39PM.rsp
Encontrará el log de esta sesión de instalación en:
/tmp/InstallActions2020-12-08_02-08-39PM/installActions2020-12-08_02-08-39PM.log
Se han movido los logs de sesión de instalación a:
/u01/app/oraInventory/logs/InstallActions2020-12-08_02-08-39PM
Pasos seguidos para la instalación
- Vamos a crear una base de datos de instancia única.

- Elegiremos la clase de Servidor para que nos permita configuraciones más avanzadas

- Elegiremos la Edición Enterprise

- Como hemos creado nuestro directorio de trabajo previamente se ha configurado por defecto, lo dejamos tal cual.

- Lo mimso con la ruta del directorio de inventario y el nombre del grupo del sistema cuyos usuarios tendrán permisos sobre el inventario.

- Elegiremos la opción de Uso General / Procesamiento de Transaciones

- Ahora se elige el nombre de la base de datos global, el identificador del Sistema Oracle (SID) y el nombre de Datos de Conexión.

- Comprobaremos que está seleccionado ‘Usar Unicode’

- Instalamos el esquema de ejemplo

- Indicamos la ubicación del sistema de archivos donde se va almacenar nuestros datos. Se recomienda usar otro disco distinto. Pero en este caso para una instalación de prueba para nuestra práctica lo dejaremos así.

- No utilizaremos Cloud Control

- Si deseamos tener una recuperación de la base de datos podemos marcar esta casilla, pero ahora no lo activaremos, se recomienda hacerlo.

- También se recomiendan usar varias contraseñas para los distintos usuarios, en este caso como es de prueba lo haremos con la misma.

- Este paso pertenece a la selección de privilegios en cuanto a los grupos creados previamentes, lo dejamos como se ha configurado por defecto.

- Se comprobaran los requisitos del sistema y si todo ha ido bien nos mostrará un resumen de las comprobaciones. Después procedemos a ‘Instalar’

- Una vez se haya acabado la instalación, la cuál dura unos minutos, nos indica que se ha configurado correctamente.

Comprobación de que se puede ejecutar SQL PLUS
- Iniciamos sql desde la línea de comandos
sqlplus / as sysdba
- Comprobamos que se ha instalado correctamente
[oracle@localhost dbhome_1]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Dec 8 14:45:56 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Conectado a:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
Añadir datos
- Nos conectamos de la siguiente forma a sql plus como administrador, nos pedirá la contraseña.
sqlplus sys as sysdba
- Ahora vamos a inicializar la instancia
startup
Nos saldrá algo parecido a:
SQL> startup
ORACLE instance started.
Total System Global Area 1795159792 bytes
Fixed Size 9135856 bytes
Variable Size 419430400 bytes
Database Buffers 1358954496 bytes
Redo Buffers 7639040 bytes
Base de datos montada.
Base de datos abierta.
- Procedemos a crear el usuario que se va conectar a la base de datos y nos sucede un error. Este error se debe a que tenemos un contenedor creado den la base de datos actual.
SQL> create user celiagm identified by celiagm;
create user celiagm identified by celiagm
*
ERROR en linea 1:
ORA-65096: nombre de usuario o rol comun no valido
- Para crear un usuario común ejecutaremos lo siguiente.
alter session set "_ORACLE_SCRIPT"=true;
- Ahora si podemos crear el usuario y le damos los privilegios necesarios.
SQL> create user celiagm identified by celiagm;
Usuario creado.
SQL> grant connect to celiagm;
Concesion terminada correctamente.
SQL> grant resource to celiagm;
Concesion terminada correctamente.
SQL> grant unlimited tablespace to celiagm;
Concesion terminada correctamente.
- Nos desconectamos como administrador y entramos como el usuario creado.
disconnect
connect celiagm/celiagm
Crear las tablas e insertar datos
Para ello vamos a utilizar un proyecto que hice en el primer año del ciclo que se trata de una base de datos sobre una escuela infantil.
La puedes encontrar aquí
Nota: Cuando consultes ‘select * from cat’ debes de tener 12 filas seleccionadas, es decir 12 tablas.
Consulta de prueba:
SQL> select nif from relaciones where relacion = 'Padre';
NIF
---------
41255644C
47845789X
K4747894D
47458759P
20011122Q
Y4005598D
47789222B
42556648E
20045444H
K4747894D
26603366E