martes, 15 de abril de 2025

Instalar Oracle 19C en Oracle Linux 9

 Este blog explicare paso a paso los requisitos e instalación de la base de datos Oracle 19C para Oracle Linux 9, pero para realizarla durante la instalación del motor de base de datos debemos aplicar un parche ya que si usan solo el instalador LINUX.X64_193000_db_home  nos dará error.

Revisa articulo Oracle:

Requirements for Installing Oracle Database/Client 19c (19.22 or higher) on OL9 or RHEL9 64-bit (x86-64) (Doc ID 2982833.1)


Recursos

  • IP:192.168.20.28
  • HOST:SRVORACLE
  • SO RHL8
  • 10G Ram 4Cpus y 200GB de disco
  • Usuario:root

Archivos a descargar desde la pagina de Oracle
Instalador del motos de base de datos LINUX.X64_193000_db_home.zip

OPatch for DB 19.0.0.0.0 Patch 6880880, Asegúrate de seleccionar la versión y plataforma correcta 
19.22 GI RU Patch 35940989 o superior



Preparar Sistema Operativo

Vemos la versión

cat /etc/oracle-release



Actualizar 

sudo yum update




Preparar Sistema Operativo - Instalar componente para la instalación grafica

Si tienes el sistema operativo con la interfaz grafica omite estos paso, como yo no lo tengo lo realizaré con MobaXterm. https://mobaxterm.mobatek.net/download.html

 
En el servidor para que nos permita usar el instaldor de Oracle con la interfaz gráfica instalaremos los componentes necesarios.

sudo yum install xterm* xorg*





Editar el archivo sshd_config y establecer X11Forwarding yes

nano /etc/ssh/sshd_config




Reiniciar

sudo reboot



Desactivar Firewalld

Para nuestro ejercicio vamos a desactivar el firewall de OLinux  pero en un escenario real es mejor agregar las reglas de input a los puertos que usa oracle.

sudo systemctl stop firewalld
sudo systemctl disable firewalld




Nombre del servidor

Si no tienes establecido el nombre del host sigue estos pasos.

Editar el archivo /etc/hosts, vamos a indicar el nombre del servidor el cual será SRVORACLE  para que resuelva la ip 192.168.20.28

sudo nano /etc/hosts




También lo realizamos con el comando hostnamectl

hostnamectl set-hostname SRVORACLE



 Prerequisitos Oracle

sudo yum install -y oracle-database-preinstall-19c



 Usuario oracle y parametros

Setear la clave del Usuario oracle.

sudo passwd oracle


Modificar archivo /etc/selinux/config y cambiar el parámetro SELINUX=permissive 

sudo nano /etc/selinux/config




Guarda y reiniciar el servidor

sudo reboot



 Crear oracle home y dar los permisos

Vamos a crear todo el directorio requerido para la instalación de los archivos binarios de Oracle y donde se alojarán los archivos de la base de datos.

mkdir -p /u01/app/oracle/product/19.3/db_home
mkdir -p /u01/install
mkdir -p /u02/oradata
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /u02
chmod -R 775 /u01
chmod -R 775 /u02

Variables de ambiente

Crear las variables de ambiente para que se carguen en la sesión del usuario oracle.

su - oracle

 Creamos directorio donde alojaremos el script

mkdir /home/oracle/scripts

 Creamos archivo setEnv.sh para establecer las variables

nano /home/oracle/scripts/setEnv.sh

 Pegamos la configuración

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=SRVORACLE
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/db_home
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=orcl
export PDB_NAME=noracle
export DATA_DIR=/u02/oradata
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


Agregamos la linea en el bash profile del usuario oracle para que al iniciar sesión cargue las variables

echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
echo "export PATH" >> /home/oracle/.bash_profile

 Con Usuario root cambiamos los permisos de /home/oracle/scripts/setEnv.sh

sudo chown -R oracle:oinstall /home/oracle/scripts
sudo chmod u+x /home/oracle/scripts/setEnv.sh

 


 Subir los archivos descagador al servidor, descomprimir e instalamos

Subir los archivos descargador previamente: instalador del motor de base de datos, el OPatcha y parche de oracle a la carpeta  /u01/install/


chown oracle:oinstall -R /u01/install/


En una sesión del usuario oracle



Descromprimir

#$ORACLE_HOME Asegúrate que este seteado
. /home/oracle/scripts/setEnv.sh

#Instalador de oracle
unzip -qqd $ORACLE_HOME /u01/install/LINUX.X64_193000_db_home.zip
 
#OPatch
mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bkp
unzip -qqd $ORACLE_HOME /u01/install/p6880880_190000_Linux-x86-64.zip
 
#Parche 19.26
unzip -qqd /u01/install /u01/install/p35940989_190000_Linux-x86-64.zip

 
#Con usuario oracle
su - oracle
#establecer compatibilidad de la instalacion con OL8
export CV_ASSUME_DISTID=OL8 

 

Establecemos variables para permitir ejecución via xhost para la instalación visual de Oracle

DISPLAY=MI_IP:0.0; export DISPLAY
echo $DISPLAY
xhost +



Ahora si, empezamos la ejecución de la instalación con el parche

cd $ORACLE_HOME
./runInstaller -applyRU /u01/install/35940989/35943157 -applyOneOffs /u01/install/35940989/35967489

 


Tipo de instalación de base de datos

Vamos a instalar el software y crear la base de datos

Seleccionar clase de la instancia.

Pueden seleccionar la Desktop class si están haciendo una practica en su lapto o desktop, en mi caso usar la Server Class(Mas pasos de instalación)


Seleccionar la edición de la base





Seleccionar el directorio de la instalación. 





Tipo de configuración

Dependiendo del tipo de transacciones seleccionamos Genera / Transaccional o Data Warehousing


DBName y  SID




Configuración instancia

Seleccionamos la memoria recomendada, charset (en mi caso uso WE8MSWIN1252) e instalo el esquema de ejemplo.


Configuración almacenamiento

Es una buena practica separa la unidad de binarios oracle y datos.



Credenciales y seguridades




Ejecuciones desde el root

Se necesitaran realizar ejecuciones via ssh con privilegios root


Instalación en progreso








Listo, probamos la conexion y ya tenemos base






viernes, 11 de abril de 2025

Oracle Database inicio automatico al reiniciar el servidor linux

Para los que hemos realizado la instalación de la base de datos Oracle sobre linux sabemos el inicio y bajado de la base no es automatico durante el apagado y encendido del servidor.

Para que sea automatica te mostrare los pasos. Estos pasos los he probado en version 12, 18 y 19c por lo que no tendras problemas de aplicarlos.

Primero deberas validar si tienes al archivo /home/oracle/scripts/setEnv.sh, en mi caso esta es la confihuración:

[oracle@oracledb01 ~]$ cat /home/oracle/scripts/setEnv.sh
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=oracledb01
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/db_home
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=orcl
export PDB_NAME=noracle
export DATA_DIR=/u01/oradata
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

Si no lo tienes creado setEnv.sh a continuación te indico como, pero recuerda cambiar los valores de las variables de ambiente segun tu instalación:

[oracle@oracledb01 ~]$ mkdir /home/oracle/scripts
[oracle@oracledb01 ~]$ cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=oracledb01
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/db_home
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=orcl
export PDB_NAME=noracle
export DATA_DIR=/u01/oradata
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF


Crear referencia archivo setEnv.sh con el profile del usuario Oracle

[oracle@oracledb01 ~]$ echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile

Una vez creado setEnv.sh vamos a crear los scripts de inicio start_all.sh y de stop_all.sh

[oracle@oracledb01 ~]$ cat > /home/oracle/scripts/start_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbstart \$ORACLE_HOME
EOF


[oracle@oracledb01 ~]$ cat > /home/oracle/scripts/stop_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbshut \$ORACLE_HOME
EOF

Cambiamos los permisos

[oracle@oracledb01 ~]$ chown -R oracle.oinstall /home/oracle/scripts
[oracle@oracledb01 ~]$ chmod u+x /home/oracle/scripts/*.sh

Modificamos el /etc/oratab para indicar el dbstart debe considerar iniciar la instancia cambiamos

[oracle@oracledb01 ~]$ nano /etc/oratab
orcl:/u01/app/oracle/product/19.3/db_home:Y


Hasta ahi ya tenemos el script para poder bajar y subir todos los servicios de oracle por medio de scripsts. Ahora necesitamos crear el servicio de Linux para llamar a los scripts que creamos previamente. Para realizar esto crearemos un archivo para asociarlo como servicio del sistema operativo /etc/init.d/dbora

[oracle@oracledb01 ~]$ nano /etc/init.d/dbora
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_OWNER to the user id of the owner of the 
# Oracle database software.

ORA_OWNER=oracle

case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        # Remove "&" if you don't want startup as a background process.
        su $ORA_OWNER -c "/home/oracle/scripts/start_all.sh >> /home/oracle/scripts/startup_shutdown.log 2>&1" &

        touch /var/lock/subsys/dbora
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        su $ORA_OWNER -c "/home/oracle/scripts/stop_all.sh >> /home/oracle/scripts/startup_shutdown.log 2>&1"
        rm -f /var/lock/subsys/dbora
        ;;
esac


Cambiamos permisos 750 del archivo /etc/init.d/dbora

[oracle@oracledb01 ~]$ chmod 750 /etc/init.d/dbora


Asocie el servicio "dbora" con los niveles de ejecución adecuados y configúrelo para que se inicie automáticamente mediante el siguiente comando

[oracle@oracledb01 ~]$ chkconfig --add dbora

Ahara si , puedes iniciar y detener los servicios de oracle como servicio dbora del systema operativo.

# service dbora start
# service dbora stop

Tambien recuerda que los servicios de oracle se levantaran de forma automatica al iniciar el servidor.