Cómo ejecutar un script SQL de Oracle con nohup en Linux

Deberías ejecutar un shell con nohup en Linux para asegurarte de que las tareas o procesos de larga duración continúan ejecutándose incluso si tu sesión de usuario finaliza o se pierde una conexión de red.

Por ejemplo, cuando se gestiona una base de datos Oracle, a menudo es necesario ejecutar tareas que pueden llevar mucho tiempo, como la carga de datos, las copias de seguridad de la base de datos o las operaciones de mantenimiento.

El uso de nohup junto con estas tareas garantiza que seguirán ejecutándose en segundo plano, incluso si se cierra la sesión, se cierra el terminal o se produce una desconexión inesperada.

De este modo, puede evitar el riesgo de operaciones incompletas o fallidas debido a interrupciones involuntarias, aumentando en última instancia la fiabilidad y estabilidad del sistema Oracle Database.

Puede ejecutar su script con nohup

nohup sqlplus '/ as sysdba' @my_script.sql > my_script.out 2>&1 &

O también puede crear un script bash, sólo tiene que modificar your_sql_file.sql con su archivo .sql

#!/bin/bash

# Set the Oracle environment variables
export ORACLE_HOME="/path/to/your/oracle/home"
export PATH="$ORACLE_HOME/bin:$PATH"
export ORACLE_SID="your_oracle_sid"

# Set the SQL file path
SQL_FILE="your_sql_file.sql"

# Set the output file name based on the SQL_FILE with a .log extension
OUTPUT_FILE="${SQL_FILE%.*}.log"

# Run the SQL commands using sqlplus inside a nohup command
if [ -f "$SQL_FILE" ]; then
  echo "Executing $SQL_FILE in nohup mode..."
  
  nohup bash -c "sqlplus / as sysdba <<EOF > $OUTPUT_FILE 2>&1
    SET ECHO ON;
    SET SERVEROUTPUT ON;
    SET TIME ON;
    SET TIMING ON;
    @$SQL_FILE;
    EXIT;
EOF" &

  echo "SQL file execution started in nohup mode. Check $OUTPUT_FILE for progress and results."
else
  echo "Error: SQL file not found"
fi

Deberías darle permiso de ejecución.

chmod +x execute_sql_nohup_oracle.sh

A continuación, ejecute el script con

./execute_sql_nohup_oracle.sh

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *