Αύξηση τμημάτων κοινόχρηστης μνήμης

Όταν το WebSphere Business Monitor επεξεργαστεί ένα συμβάν στην πλατφόρμα AIX, εμφανίζεται ένα σφάλμα SQL. Επίσης, όταν το WebSphere δεν κατορθώνει να αποδώσει αρχικές τιμές για τη σύνδεση βάσεων δεδομένων, τόσο κατά την εκκίνηση όσο και κατά την επεξεργασία συμβάντων. Η αποτυχία οφείλεται σε ένα όριο επιβεβλημένο από το λειτουργικό σύστημα που αφορά τον αριθμό των τμημάτων κοινόχρηστης μνήμης που είναι διαθέσιμος στο IBM DB2.

όταν μια Δοκιμαστική σύνδεση από το WebSphere Admin Console (πόροι jdbc) αποτυγχάνει παρουσιάζοντας το ακόλουθο σφάλμα:
Η δοκιμή σύνδεσης απέτυχε για την προέλευση δεδομένων MonitorDataSource στον εξυπηρετητή
server1 στον κόμβο Node01 με την ακόλουθη εξαίρεση: java.lang.Exception:
java.sql.SQLException: SQL1224N Αδυναμία εκκίνησης της λειτουργίας βάσης δεδομένων για
την εξυπηρέτηση αίτησης ή τερματίστηκε λόγω τερματισμού του συστήματος βάσης δεδομένων
ή εκτέλεσης εντολής. SQLSTATE=55032 DSRA0010E: SQL State = 55032, Κωδικός σφάλματος =
-1,224.
Το σφάλμα αυτό πιθανότατα επισημαίνει ότι έχει γίνει υπέρβαση του αριθμού τμημάτων κοινόχρηστης μνήμης που επιτρέπει το σύστημα AIX για τη βάση δεδομένων.

Όταν προκύψει αυτό το σφάλμα, πρέπει να αλλάξετε τη ρύθμιση του DB2 και να αυξήσετε τον αριθμό τμημάτων κοινόχρηστης μνήμης. Αυτή τη στιγμή, ο ειδικός αποκαταστάσεων δεν υποστηρίζει τον ορισμό ενός ψευδωνύμου του DB2 με ανάδρομο βρόχο (loopback) για την αποφυγή του προβλήματος της κοινόχρηστης μνήμης.

Λύση

Το DB2 χρησιμοποιεί μια δυνατότητα επέκτασης κοινόχρηστης μνήμης για να παρακάμψει το πρόβλημα. Για να ενεργοποιήσετε τη δυνατότητα αυτή, τοποθετήστε τις ακόλουθες γραμμές κοντά στην αρχή των /etc/rc.db2 and <instance_home>/sqllib/db2profile, (όπου το <instance_home> είναι ο κεντρικός κατάλογος κάθε χρήστη χρήσης, για παράδειγμα, /home/db2inst1) μετά το σχόλιο ενότητας αλλά πριν τις εκτελέσιμες γραμμές:
# Local addition to fix AIX shared memory problem:
EXTSHM=ON
export EXTSHM
Σημείωση: Η καταχώρηση αυτή κάνει διάκριση μικρών κεφαλαίων. Τοποθετήστε την καταχώρηση στα db2profiles όλων των χρηστών χρήσεων και του χρήστη εξυπηρετητή διαχειριστών. Στη συνέχεια συνδεθείτε με την ταυτότητα κάθε χρήστη χρήσης, καθώς και του χρήστη εξυπηρετητή διαχειριστών και εκτελέστε την ακόλουθη εντολή:
db2set DB2ENVLIST=EXTSHM

Σε κάθε χρήση θα οριστεί μια μεταβλητή προφίλ DB2 χάρη στην οποία η τιμή της μεταβλητής περιβάλλοντος EXTSHM θα συμπεριλαμβάνεται στο περιβάλλον των διεργασιών daemon του DB2 κατά την εκκίνησή τους. Καθορίστε το EXTSHM στα db2profiles κάθε χρήσης που εκτελούνται κατά τη σύνδεση, για να βεβαιωθείτε ότι η μεταβλητή έχει οριστεί σε κάθε περιβάλλον χρήσεων. Τέλος, τοποθετήστε το στο /etc/rc.db2 για να βεβαιωθείτε ότι η μεταβλητή έχει οριστεί όταν εκκινούνται οι διεργασίες DB2 processes κατά την έναρξη. Τέλος, επανεκκινήστε το σύστημα για να βεβαιωθείτε ότι όλες οι διεργασίες DB2 εκκινήθηκαν και περιέχουν στο περιβάλλον τους το EXTSHM=ON.

Αν θέλετε η επιδιόρθωση να εφαρμόζετε αυτόματα κατά τη δημιουργία των νέων χρήσεων στο μέλλον, προσθέστε τις γραμμές που ορίζουν και εξάγουν το EXTSHM στο αρχείο /usr/lpp/db2_08_02/cfg/db2profile, το οποίο αντιγράφεται στο <instance_home>/sqllib/db2profile κατά τη δημιουργία της χρήσης. Για να βεβαιωθείτε ότι η μεταβλητή προφίλ DB2ENVLIST έχει επίσης οριστεί, προσθέστε τον παρακάτω κώδικα μετά τον ορισμό της μεταβλητής INSTHOME:
if [ -x $INSTHOME/sqllib/adm/db2set ]
τότε αν [ "`$INSTHOME/sqllib/adm/db2set DB2ENVLIST`" != "EXTSHM" ]
then $INSTHOME/sqllib/adm/db2set DB2ENVLIST=EXTSHM
fi fi 
Ο κώδικας αυτός προκαλεί τον ορισμό της μεταβλητής προφίλ χρήσης DB2ENVLIST την πρώτη φορά που χρησιμοποιείται μια νέα χρήση.
Σημείωση:
  • Θεωρείται δεδομένο ότι το DB2Version 8.0 είναι εγκατεστημένο στο /usr/lpp/db2_08_02. Αν η εγκατάσταση βρίσκεται σε άλλη θέση, θα πρέπει να εργαστείτε από τη θέση της εγκατάστασής σας.
  • Για την έκδοση 8.0 του DB2, θα πρέπει να προσθέσετε τις ακόλουθες γραμμές στο αρχείο <instance_home>/sqllib/userprofile, αν υπάρχει, διαφορετικά θα πρέπει να δημιουργήσετε ένα αρχείο προφίλ χρήστη με άδειες 755 . Οι γραμμές είναι οι εξης:
    EXTSHM=ON
    export EXTSHM

Copyright IBM Corporation 2005, 2006. Με την επιφύλαξη παντός δικαιώματος.