Next Previous Contents

6. Αυτόματο Ανέβασμα (Startup) και Κατέβασμα (Shutdown)

6.1 dbstart & dbstop

Το αυτόματο ανέβασμα (Startup) και κατέβασμα (Shutdown) της βάσης δεδομένων Oracle μπορεί να επιτευχθεί (στην 7.3.3.0.0) με τα αρχεία dbstart καιdbshut, που και τα δυο παρέχονται από την Oracle. Αυτά τα αρχεία βασίζονται στην ύπαρξη του αρχείου /etc/oratab για να δουλέψουν (αν και αλλάζοντας τα αρχεία dbshut και dbstart αυτό μπορεί να μεταφερθεί).

Το format του αρχείου /etc/oratab είναι ως ακολούθως:


SID:ORACLE_HOME:AUTO

Ένα παράδειγμα:


orcl:/home/oracle/7.3.3.0.0:Y
leaveup:/home/oracle/7.3.2.1.0:N

6.2 init.d & rc.d

Για να εκκινήσετε και σταματήσετε τη βάση δεδομένων όταν το μηχάνημα ανεβαίνει και κατεβαίνει μπορείτε να αλλάξετε τις ρουτίνες εκκίνησης της Linux μηχανής σας. Είναι αρκετά εύκολο, αν και θα ήθελα να σημειώσω εδώ, πως μπορεί να διαφέρει ανάλογα με την έκδοση Linux (slackware, debian, redhat, etc). Θα δείξω παραδείγματα που δουλεύουν για το Redhat Linux 5.0. Για να τα τροποποιήσετε ανάλογα, για τη δικιά σας έκδοση του Linux, διαβάστε την τεκμηρίωση του Linux σας. (Παρόλο που θα πρέπει να στέκει για κάθε UNIX τύπου Sys V).

Πρώτα, χρειάζεται να δημιουργήσουμε το script που θα τρέχει τις dbshut και dbstart στο directory /etc/rc.d/init.d. Δημιουργήστε το ακόλουθο αρχείο ως /etc/rc.d/init.d/oracle:


#!/bin/sh
#
# /etc/rc.d/init.d/oracle
# Description: Starts and stops the Oracle database and listeners
# See how we were called.
case "$1" in
  start)
        echo -n "Starting Oracle Databases: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c dbstart >> /var/log/oracle
        echo "Done."
        echo -n "Starting Oracle Listeners: "
        su - oracle -c "lsnrctl start" >> /var/log/oracle
        echo "Done."
        echo ""
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Finished." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        touch /var/lock/subsys/oracle
        ;;
  stop)
        echo -n "Shutting Down Oracle Listeners: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c "lsnrctl stop" >> /var/log/oracle
        echo "Done."
        rm -f /var/lock/subsys/oracle
        echo -n "Shutting Down Oracle Databases: "
        su - oracle -c dbshut >> /var/log/oracle
        echo "Done."
        echo ""
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Finished." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        ;;
  restart)
        echo -n "Restarting Oracle Databases: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c dbstop >> /var/log/oracle
        su - oracle -c dbstart >> /var/log/oracle
        echo "Done."
        echo -n "Restarting Oracle Listeners: "
        su - oracle -c "lsnrctl stop" >> /var/log/oracle
        su - oracle -c "lsnrctl start" >> /var/log/oracle
        echo "Done."
        echo ""
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Finished." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        touch /var/lock/subsys/oracle
        ;;
  *)
        echo "Usage: oracle {start|stop|restart}"
        exit 1
esac

Αξίζει να ελεγχθεί πως το αρχείο σταματάει και αρχίζει τη βάση πραγματικά σωστά, στο σύστημά σας. Κοιτάξτε το αρχείο μηνυμάτων (log file), /var/log/oracle για μηνύματα λάθους.

Αφού το script αυτό δουλεύει, χρειάζεται να δημιουργήσουμε συμβολικές ενώσεις (symbolic links) start και kill στα αντίστοιχα runlevel directories /etc/rc.d/rcX.d.

Οι επόμενες εντολές θα εξασφαλίσουν πως οι βάσεις δεδομένων θα ανέβουν στα runlevels 2,3 and 4:


$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle

Για να σταματήσετε τις βάσεις δεδομένων σε επανεκκίνηση θα χρειαστούμε τα ακόλουθα links:


$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle          # Halting
$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle          # Rebooting


Next Previous Contents