Πώς μπορούμε να εκτελέσουμε πολλαπλά scripts στην Oracle σε περιβάλλον Unix
- Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database - 7 Οκτώβριος 2024
- Τι είναι η PostgreSQL και πως κάνουμε μία πλήρης εγκατάσταση - 2 Σεπτέμβριος 2024
- Πώς ρυθμίζουμε το replication του GoldenGate ώστε να διαβάζει από το Standby του Oracle Data Guard - 2 Αύγουστος 2024
Στο άρθρο θα δούμε πως δημιουργούμε εύκολα και γρήγορα ένα 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 &