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

- Πώς να γυρίσουμε μία Oracle Database πίσω στον χρόνο με χρήση restore point σε περιβάλλον Data Guard - 28 Απρίλιος 2025
- Πώς μπορούμε να αυξήσουμε την απόδοση στο target Replicat του Oracle GoldenGate με παραλληλία - 19 Μάρτιος 2025
- Πώς φτιάχνουμε χρήστες σε βάσεις δεδομένων που ανήκουν σε Always On Availability Group του SQL Server - 10 Φεβρουάριος 2025
Στο άρθρο θα δούμε πως δημιουργούμε εύκολα και γρήγορα ένα 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 &