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