Comment exécuter un script SQL Oracle à l'aide de nohup sous Linux ?

Il est conseillé d'exécuter un shell avec nohup sous Linux pour s'assurer que les tâches ou processus de longue durée continuent à s'exécuter même si votre session utilisateur est interrompue ou si une connexion réseau est perdue.

Par exemple, lorsque vous gérez une base de données Oracle, vous devez souvent exécuter des tâches qui peuvent prendre beaucoup de temps, telles que le chargement des données, les sauvegardes de la base de données ou les opérations de maintenance.

L'utilisation de nohup en conjonction avec ces tâches garantit qu'elles continueront à s'exécuter en arrière-plan, même si vous vous déconnectez, si le terminal est fermé ou s'il y a une déconnexion inattendue.

Vous éviterez ainsi le risque d'opérations incomplètes ou d'échecs dus à des interruptions involontaires, ce qui augmentera la fiabilité et la stabilité du système Oracle Database.

Vous pouvez exécuter votre script avec nohup

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

Vous pouvez également créer un script bash, en modifiant votre fichier_sql_file.sql avec votre fichier .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

Vous devriez lui donner l'autorisation d'exécution.

chmod +x execute_sql_nohup_oracle.sh

Ensuite, vous exécutez le script avec

./execute_sql_nohup_oracle.sh

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *