Πώς μπορούμε να εκτελέσουμε πολλαπλά scripts στην Oracle σε περιβάλλον Unix

Πώς μπορούμε να εκτελέσουμε πολλαπλά scripts στην Oracle σε περιβάλλον Unix
Πώς μπορούμε να εκτελέσουμε πολλαπλά scripts στην Oracle σε περιβάλλον Unix

Στο άρθρο θα δούμε πως δημιουργούμε εύκολα και γρήγορα ένα script που μπορεί να εκτελέσει πολλαπλά άλλα script σε βάση δεδομένων Oracle σε περιβάλλον Unix. Παρέχει ακόμη και την δυνατότητα να σταματήσει σε περίπτωση σφάλματος.

Η δημιουργία του executable

Θα πρέπει να φτιάξουμε το script που θα καλέσουμε στο οποίο θα οριστεί το περιβάλλον της βάσης και το αρχείο που θα περιέχει όλα τα scripts που θα εκτελεστούν:

vi script_tade.sh

Ορίζουμε τα paths ORACLE_BASE, ORACLE_HOME, ORACLE_SID και το command του sqlplus χωρίς να κάνει connect με το αρχείο με τις παραμέτρους:

export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/12.1.0/db_1
export ORACLE_SID=DB_TEST
$ORACLE_HOME/bin/sqlplus /nolog @/home/oracle/scripts/script.par

To parameter file

Φτιάχνουμε το αρχείο με τις παραμέτρους που θα συνδέεται κρατώντας μέσω spool τα αποτελέσματα και περιέχει τη λίστα με τα scripts:

vi script.par

Ορίζουμε το WHENEVERSQLERROR EXIT σε περίπτωση που θέλουμε να σταματήσει σε error.

Συμπληρώνουμε το username και password του χρήστη με τον οποίον θα εκτελεστούν τα script.

Με spool αποθηκεύουμε το log στο path που έχουμε ορίσει.

Μπορούμε κατά την διάρκεια να συνδεθούμε με άλλον χρήστη π.χ. sysdba και να κάνουμε recompile (utlrp):

--WHENEVER SQLERROR EXIT SQL.SQLCODE – αν θέλουμε 
connect username/password
spool /home/oracle/scripts/results.out
@/home/oracle/scripts/script.sql
@/home/oracle/scripts/script2.sql
@/home/oracle/scripts/script3.sql
spool off
connect / as sysdba
@/oracle/app/oracle/product/12.1.0/db_1/rdbms/admin/utlrp.sql
exit

Η εκτέλεση

Για να εκτελέσουμε στο τέλος το script ως background process (αφού πρώτα έχουμε δώσει στο αρχείο δικαίωμα execute):

nohup  ./script_tade.sh &
Μοιράσου το

Αφήστε μία απάντηση