Ελληνικό Oracle Database HOWTO <author>Paul Haigh, <tt/paul@nailed.demon.co.uk/ <date>v1.0, 10 Μαρτίου 1998 <abstract> Ενας οδηγός για την εγκατάσταση και ρύθμιση του Oracle Database Server σε ένα σύστημα Linux </abstract> <!-- Πίνακας Περιεχομένων--> <toc> <!-- Αρχή --> <sect>Εισαγωγή <sect1>Ιστορία Αναθεωρήσεων <p> <itemize> <item><tt>v0.1 - 21 Φεβρουαρίου 1998 - Paul Haigh - Αρχική Έκδοση</tt> <item><tt>v0.2 - 01 Μαρτίου 1998 - Paul Haigh - Προστέθηκαν σχόλια για τα Proofreaders</tt> <item><tt>v1.0 - 10 Μαρτίου 1998 - Paul Haigh - Δημοσίευση του στο LDP </tt> </itemize> <sect1>Πνευματικά Δικαιώματα <p> Oracle Database HOWTO copyright (c) 1998, Paul Haigh. <p> Όπως όλα τα κείμενα Linux HOWTO, μπορεί να επαναπαραχθεί και διανεμηθεί ολόκληρο ή μέρος του, σε κάθε μέσο, φυσικό ή ηλεκτρονικό, όσο αυτή η σημείωση περί πνευματικής ιδιοκτησίας διατηρείται σε όλα τα αντίγραφα. <p> Η εμπορική αναδιανομή επιτρέπεται και ενθαρρύνεται. Παρόλα αυτά, ο συγγραφέας θα ήθελε να ειδοποιηθεί για τέτοιες διανομές. Μπορείτε να μεταφράσετε αυτό το HOWTO σε κάθε γλώσσα, με την προϋπόθεση πως αφήνετε αυτή τη δήλωση περί πνευματικής ιδιοκτησίας ακέραιη και πως θα προσθέσετε μια σημείωση που να δηλώνει τον μεταφραστή του κειμένου. <sect1>Disclaimer <p> Ενώ προσπάθησα να συμπεριλάβω την πιο σωστή και πρόσφατη πληροφορία που ήταν διαθέσιμη σε μένα, δεν μπορώ να εγγυηθώ πως η χρήση των πληροφοριών αυτού του κειμένου, δεν θα καταλήξει σε απώλεια δεδομένων ή εξοπλισμού. ΔΕΝ ΠΑΡΕΧΩ ΚΑΜΙΑ ΕΓΓΥΗΣΗ για τις πληροφορίες του HOWTO και δεν μπορώ να θεωρηθώ νομικά υπεύθυνος για ό,τι συνέπειες απορρέουν από την χρήση των πληροφορίας σε αυτό το HOWTO. <sect1>Σκοπός αυτού του HOWTO <p> Σε αυτό το HOWTO θα επιχειρήσω να καλύψω τα θέματα της εγκατάστασης και της βασικής διαχείρισης μιας Βάσης Δεδομένων Oracle που τρέχει σε μια μηχανή Linux. Συγκεκριμένα, θα καλύψω την εγκατάσταση του Oracle server, τη ρύθμιση του SQL*Net και του client. <p> Αυτό το κείμενο δεν αποτελεί ένα εις βάθος εγχειρίδιο της χρήσης και διαχείρισης μιας Β.Δ. Oracle, και αν αυτό ψάχνετε υπάρχουν υπέροχα βιβλία για αυτά τα θέματα που έχουν εκδοθεί από την O'Reilly και άλλους. <p> Δεν πρόκειται να καλύψω την ανάπτυξη προγραμμάτων σε Oracle κάτω από UNIX. Αν αυτό είναι απολύτως αναγκαίο για εσάς, θα σας πρότεινα να αγοράσετε το SCO Developement System της SCO (με τον OpenServer 5.x), που μου είπαν πως μπορεί να αποκτηθεί στην πολύ λογική τιμή των US $19, από την <tt/www.sco.com/. <sect1>Απαιτήσεις <p> Υποθέτω πως έχετε κάποια στοιχεία που θα χρειαστείτε για να ακολουθήσετε αυτό το HOWTO. <itemize> <item><bf>Oracle Server CD για τον SCO Openserver (Version 7.3.3.0.0.)</bf> <descrip> <bf>Πρέπει</bf> να είναι μια νόμιμη κόπια. Να θυμάστε πως η Oracle είναι μια κερδοσκοπική επιχείρηση και χρεώνει για τα προϊόντα της. Αν θέλετε μια δωρεάν SQL συμβατή βάση δεδομένων χρησιμοποιήστε την PostgresSQL ή κάποια παρόμοια. Είναι επίσης δυνατόν να εγκαταστήσετε την oracle, χρησιμοποιώντας μια άδεια δοκιμαστικής χρήσης / αξιολόγησης 60 ημερών, από αρχείο που μπορείτε να κατεβάσετε από το <tt/tar/ web site της Oracle. Προσωπικά δεν το έχω δοκιμάσει και είναι πλήρως ανεπικύρωτο. </descrip> <item><bf>Ένα Linux Server</bf> <descrip> Δεν θα το διαβάζατε αυτό, εάν δεν είχατε. Σωστά; </descrip> <item><bf>Πυρήνα 2.0.30+</bf> <descrip> Δεν μπορώ να εγγυηθώ πως αυτές οι οδηγίες θα είναι ακριβείς για οποιονδήποτε άλλο πυρήνα. (όχι ότι εγγυώμαι και για τον 2.0.30 ...). </descrip> <item><bf>iBCS</bf> <descrip> Είναι πολύ σημαντικό να το έχετε εγκαταστήσει και να δουλεύετε με την τελευταία δυνατή έκδοση του για την πλατφόρμα σας. (Χρησιμοποιώ το iBCS-2.0-10.i386.rpm για Redhat Linux). </descrip> <item><bf>Μεγάλο χώρο στο δίσκο</bf> <descrip> 600 Mb+ είναι ένα λογικό ποσό. Είναι δυνατό να εγκαταστήσετε και με λιγότερο αλλά θα χρειαστεί να κάνετε κάποιες θυσίες, και δεν μου αρέσει ποτέ να αρχίζω έτσι. Παρόλα αυτά, θα προσπαθήσω να υποδείξω τα σημεία εκείνα στα οποία μπορεί να ελευθερωθεί χώρος. </descrip> <item><bf>32Mb+ Ram</bf> <descrip> Ξέρω πως ακούγεται μάλλον πολύ, ειδικότερα για τα μέτρα του Linux, αλλά να θυμάστε πως η Oracle είναι ένα σύνθετο κομμάτι λογισμικού. Δεν θα είχατε τις ίδιες επιφυλάξεις εάν είχατε SCO! <p> Δεν ισχυρίζομαι πως η Oracle δεν δουλεύει με λιγότερο, απλά λέω πως εάν είναι λιγότερο από ότι η Oracle συνιστά και δεν θα το πρότεινα. </descrip> <item><bf>’άδειες από την Oracle</bf> <descrip> Ξέρω πως το έχω ήδη αναφέρει, αλλά θέλω να είμαι ξεκάθαρος πως αυτό το θέμα είναι σημαντικό. Χρήση λογισμικού της Oracle χωρίς άδεια είναι παράνομη. </descrip> </itemize> <sect1>Μελλοντικές Βελτιώσεις <p> Αυτοί είναι οι τομείς του Oracle server που δεν καλύπτονται σε αυτό το HOWTO. Παρόλα αυτά, αν ο χρόνος το επιτρέψει, θα επιχειρήσω να τους βάλω σε επόμενες εκδόσεις του HOWTO. <p> <itemize> <item>Ανάπτυξη προγραμμάτων Oracle Pro* χρησιμοποιώντας βιβλιοθήκες της Oracle. <item>Εγκατάσταση διαφορετικών εκδόσεων του Oracle server. <item>Εγκατάσταση του Oracle Web Server. <item>Πως να κάνετε relink τον Πυρήνα της Oracle. </itemize> <sect>Εγκατάσταση του λογισμικού της Oracle <sect1>Προετοιμασία του Server <sect2>Δημιουργία ενός χρήστη Oracle <p> Όπως είναι λογικό χρειαζόμαστε έναν χρήστη να κρατάει την βάση δεδομένων της Oracle. Μια που δεν επιθυμούμε να κάνουμε relink τον πυρήνα της Oracle (περισσότερα για αυτό αργότερα) θα πρέπει να αποδεχτούμε τις προκαθορισμένες παραμέτρους της Oracle για το όνομα του χρήστη και το όνομα του group. Αυτές συμπεριλαμβάνουν τον χρήστη ORACLE και το group DBA. <enum> <item>Συνδεθείτε ως Root <p> <item>Δημιουργείστε το χρήστη oracle και το group dba. <tscreen><code> $ groupadd dba $ useradd oracle </code></tscreen> <item> Βεβαιωθείτε πως ένα home directory δημιουργείται για τον χρήστη oracle. <tscreen><code> $ mkdir /home/oracle $ mkdir /home/oracle/7.3.3.0.0 (Version of Oracle) $ chown -R oracle.dba /home/oracle </code></tscreen> </enum> <sect1>Εγκατάσταση από CDROM <p> Δυστυχώς ο Oracle Installer από το δισκάκι του SCO δεν θα δουλέψει. Μπορεί να αντιμετωπίσετε πληθώρα προβλημάτων, από core dumps μέχρι κρέμασμα. Σαν αποτέλεσμα, χρειάζεται να αντιγράψουμε τα αρχεία από το CDROM χειρωνακτικά και να τα αποσυμπιέσουμε: <p> (Βεβαιωθείτε πως το CDROM είναι προσαρτημένο (mounted) στο σύστημα). <enum> <item>Συνδεθείτε σαν Oracle <item>Αλλάξτε directory σε <tt>/home/oracle/7.3.3.0.0.</tt> <item>Αντιγράψτε όλα τα αρχεία εγκατάστασης από το CDROM <tscreen><code> $ cp -a /mnt/cdrom/* . </code></tscreen> <item>Αποσυμπιέστε όλα τα αρχεία της Oracle από το CDROM. <tscreen><code> $ find . -name *_ -exec ~/7.3.3.0.0/orainst/oiuncomp {} \; </code></tscreen> </enum> <sect1>Εργασίες μετά την Εγκατάσταση <sect2>Εργασίες για τον Root <p> Προσθέστε τις επόμενες γραμμές στο <tt>/etc/profile</tt> ή στο <tt/.profile/ για κάθε χρήστη που πρόκειται να χρησιμοποιήσει την Oracle. <tscreen><code> # Oracle Specific ORACLE_HOME=/home/oracle/7.3.3.0.0 ORACLE_SID=orcl ORACLE_TERM=vt100 export ORACLE_HOME ORACLE_SID ORACLE_TERM # Alter path for Oracle PATH="$PATH:$ORACLE_HOME/bin" </code></tscreen> <p> Επίσης χρειάζεται να αλλάξουμε τον ιδιοκτήτη και τα προνόμια χρήσης της βοηθητικής εφαρμογής της Oracle ulimit increase. <tscreen><code> $ chown root.root $ORACLE_HOME/bin/osh $ chmod u+s $ORACLE_HOME/bin/osh </code></tscreen> <sect2>Εργασίες για τον Oracle <p> Αλλάξτε τα προνόμια χρήσης των αρχείων της Oracle για να εξασφαλίσετε την σωστή λειτουργία. <tscreen><code> $ chmod +x $ORACLE_HOME/bin/* $ chmod u+s $ORACLE_HOME/bin/oracle </code></tscreen> <p> Τα εργαλεία της Oracle απαιτούν τα μηνύματα να κρατούνται στο directory<tt>$ORACLE_HOME/tool_name/mesg</tt>. Έτσι, μετακινήστε τα αρχεία <tt/msb/ από τα directories <tt/msg_ship/ στα directories <tt/mesg/ . <tscreen><code> $ mv $ORACLE_HOME/plsql/mesg/mesg_ship/* $ORACLE_HOME/plsql/mesg/. $ mv $ORACLE_HOME/rdbms/mesg/mesg_ship/* $ORACLE_HOME/rdbms/mesg/. $ mv $ORACLE_HOME/svrmgr/mesg/mesg_ship/* $ORACLE_HOME/svrmgr/mesg/. </code></tscreen> Δημιουργείστε τα ακόλουθα directories αν δεν υπάρχουν: <tscreen><code> $ mkdir $ORACLE_HOME/rdbms/log $ mkdir $ORACLE_HOME/rdbms/audit $ mkdir $ORACLE_HOME/network/log </code></tscreen> <sect2>Πράγματα που μπορείτε να απομακρύνετε: <p> Τα παρακάτω directories μπορούν να απομακρυνθούν με ασφάλεια: <itemize> <item><tt>$ORACLE_HOME/guicommon2/</tt> <item><tt>$ORACLE_HOME/ctx/</tt> <item><tt>$ORACLE_HOME/md/</tt> <item><tt>$ORACLE_HOME/mlx/</tt> <item><tt>$ORACLE_HOME/precomp/</tt> <item><tt>$ORACLE_HOME/slax/</tt> </itemize> <sect>Δημιουργία μιας Βάσης Δεδομένων <p> Τώρα, ο Oracle server είναι εγκατεστημένος και χρειάζεται να δημιουργήσουμε μια βάση δεδομένων για να ελέγξουμε την εγκατάσταση. <sect1>Δημιουργία του Αρχείου Αρχικοποίησης <p> Αντιγράψτε το αρχείο <tt>$ORACLE_HOME/dbs/init.ora</tt> στο <tt>$ORACLE_HOME/dbs/initorcl.ora</tt>: <tscreen><code> $ cd $ORACLE_HOME/dbs $ cp init.ora initorcl.ora </code></tscreen> Τροποποιήστε το, προσθέτοντας τις ακόλουθες γραμμές: <tscreen><code> db_name = orcl COMPATIBLE=7.3.3.0.0 </code></tscreen> <sect1>Δημιουργήστε το Script Εγκατάστασης Βάσης Δεδομένων<p> Δημιουργήστε ένα αρχείο script που να λέγεται makedb.sql στο <tt>$ORACLE_HOME/dbs</tt> directory: <tscreen><code> connect internal startup nomount set echo on spool makedb.log create database orcl maxinstances 1 maxlogfiles 8 datafile '$ORACLE_HOME/dbs/orcl_syst_01.dbf' size 40M reuse logfile '$ORACLE_HOME/dbs/orcl_redo_01.dbf' size 1M reuse, '$ORACLE_HOME/dbs/orcl_redo_02.dbf' size 1M reuse, '$ORACLE_HOME/dbs/orcl_redo_03.dbf' size 1M reuse; @$ORACLE_HOME/rdbms/admin/catalog.sql create tablespace rollback datafile '$ORACLE_HOME/dbs/orcl_roll_01.dbf' size 8.5M reuse; create tablespace temporary datafile '$ORACLE_HOME/dbs/orcl_temp_01.dbf' size 5M reuse temporary; create tablespace users datafile '$ORACLE_HOME/dbs/orcl_user_01.dbf' size 10M reuse; create rollback segment r1 tablespace rollback storage ( optimal 5M ); alter rollback segment r1 online; connect system/manager @$ORACLE_HOME/rdbms/admin/catdbsyn.sql connect internal @$ORACLE_HOME/rdbms/admin/catproc.sql connect system/manager @$ORACLE_HOME/sqlplus/admin/pupbld.sql spool off exit </code></tscreen> <sect1>Εκτέλεση του Script Εγκατάστασης Βάσης Δεδομένων <p> Αρχίστε το <tt/svrmgrl/ και τρέξτε το script: <tscreen><code> $ cd $ORACLE_HOME/dbs $ svrmgrl Oracle Server Manager Release 2.3.3.0.0 - Production Copyright (c) Oracle Corporation 1994, 1995. All rights reserved. Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production SVRMGR> connect internal Connected. SVRMGR> startup nomount ORACLE instance started. Total System Global Area 4313312 bytes Fixed Size 41876 bytes Variable Size 4140364 bytes Database Buffers 122880 bytes Redo Buffers 8192 bytes SVRMGR> @makedb <πολλά μηνύματα> SVRMGR> exit Server Manager complete. </code></tscreen> <sect1>Εκκίνηση της Βάσης Δεδομένων <p> Αρχικά, χρειάζεται να σηκώσουμε την βάση δεδομένων με το χέρι (θα το αυτοματοποιήσουμε στη συνέχεια). Για να αρχίσουμε μια βάση δεδομένων Oracle χρειάζεται να δώσουμε την εντολή <tt>startup</tt> αφού συνδεθούμε μαζί της εσωτερικά: <tscreen><code> $ svrmgrl Oracle Server Manager Release 2.3.3.0.0 - Production Copyright (c) Oracle Corporation 1994, 1995. All rights reserved. Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production SVRMGR> connect internal Connected. SVRMGR> startup ORACLE instance started. Total System Global Area 4313316 bytes Fixed Size 41876 bytes Variable Size 4140368 bytes Database Buffers 122880 bytes Redo Buffers 8192 bytes Database mounted. Database opened. SVRMGR> exit Server Manager complete. </code></tscreen> <sect1>Σταματώντας την Βάση Δεδομένων <p> Αξίζει να αναφερθεί πως η επανεκκίνηση ενός Linux server χωρίς πρώτα το κατέβασμα (shutting down) της βάσης δεδομένων της Oracle, έχει ένα μεγάλο κίνδυνο να διαβρώσει (corrupt) τη βάση δεδομένων. <p> Έτσι, πριν δώσουμε την εντολή του Linux <tt>shutdown</tt>,είναι συνετό να κατεβάσουμε τη βάση δεδομένων: <tscreen><code> $ svrmgrl Oracle Server Manager Release 2.3.3.0.0 - Production Copyright (c) Oracle Corporation 1994, 1995. All rights reserved. Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production SVRMGR> connect internal Connected. SVRMGR> shutdown Database closed. Database dismounted. ORACLE instance shut down. SVRMGR> exit Server Manager complete. </code></tscreen> <sect1>Δημιουργία ενός Προκαθορισμένου Χρήστη (Default User) <p> Η βάση δεδομένων, όπως δημιουργήθηκε, έχει δυο ειδικούς χρήστες που δημιουργούνται αυτόματα. Αυτοί είναι: <tscreen><code> Username Password SYSTEM MANAGER SYS change_on_install </code></tscreen> <p> Αυτοί οι χρήστες τυπικά χρησιμοποιούνται για να κρατάν τις πληροφορίες του data dictionary information για τη βάση δεδομένων. Είναι καλή ιδέα να αλλάξουμε τα passwords από τα προκαθορισμένα όσο πιο γρήγορα γίνεται. <p> Αυτό μπορεί να κατορθωθεί με: <tscreen><code> sqlplus system/manager SQL*Plus: Release 3.3.3.0.0 - Production on Sat Feb 21 12:43:33 1998 Copyright (c) Oracle Corporation 1979, 1996. All rights reserved. Connected to: Oracle7 Server Release 7.3.3.0.0 - Production Release SQL> alter user system identified by <newpassword>; User altered. SQL> alter user sys identified by <newpassword>; User altered. SQL> exit; Disconnected from Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production </code></tscreen> <p> Μια που ο χρήστης <tt>system/manager</tt> είναι παρόμοιος με το να χρησιμοποιείς <tt/root/ σε μια μηχανή UNIX, χρειάζεται να δημιουργήσουμε ένα χρήστη με λιγότερες δυνατότητες να βλάψει το σύστημα. (θυμηθείτε να σηκώσετε την βάση δεδομένων πριν επιχειρήσετε να δημιουργήσετε ένα χρήστη) <p> Συνδεθείτε στο SQL*Plus και δημιουργήστε ένα χρήστη: <tscreen><code> $ sqlplus system/manager SQL*Plus: Release 3.3.3.0.0 - Production on Sat Feb 21 12:43:33 1998 Copyright (c) Oracle Corporation 1979, 1996. All rights reserved. Connected to: Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production SQL> create user <user> identified by <psw> 2 default tablespace users 3 temporary tablespace temp; User created. SQL> grant connect, resource to <user> Grant succeeded. SQL> exit Disconnected from Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production </code></tscreen> <p> Τώρα που έχετε ένα νέο χρήστη στο σύστημα, μπορείτε να παίξετε με το νέο σύστημα. Για να συνδεθείτε με την βάση δεδομένων της Oracle: <tscreen><code> $ sqlplus <user>/<password> </code></tscreen> <p> Εάν αυτό ολοκληρώνεται χωρίς μηνύματα λάθους έχετε μια βάση Oracle που δουλεύει. Αν δεν θέλετε να συνδέεστε στη βάση αυτή από πουθενά πλην αυτού του Server, τότε η δουλειά τελείωσε, απολαύστε την! <p> Αν, παρόλα αυτά, όπως και οι περισσότεροι άνθρωποι θέλετε να ρυθμίσετε το λογισμικό δικτύωσης, ώστε να μπορείτε να συνδέεστε και από άλλες μηχανές, συνεχίστε το διάβασμα. <sect>Ρυθμίστε το SQL*Net του Server <p> Όλα αυτά τα αρχεία ρυθμίζουν το λογισμικό δικτύωσης της Oracle (SQL*Net, τώρα Net8 for Oracle8). Αυτά τα αρχεία θα πρέπει να έχουν ήδη δημιουργηθεί στο server στο <tt>$ORACLE_HOME/network/admin</tt> directory. <sect1><tt>tnsnames.ora</tt> <p> Το αρχείο <tt/TNSNAMES.ORA/ αναγνωρίζει τις διαθέσιμες υπηρεσίες της μηχανής. Στο στιγμιότυπο (instance) μας θα περιγράψουμε όλες τις βάσεις δεδομένων που ο server έχει προσκολλημένες. Για κάθε ένα στιγμιότυπο της Βάσης Δεδομένων (database instance) του server σας, προσθέστε ένα τμήμα σαν το παρακάτω: <tscreen><code> orcl.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = <INSERT HOST NAME OF SERVER HERE> ) (Port = 1521) ) (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = <INSERT HOST NAME OF SERVER HERE> ) (Port = 1526) ) ) (CONNECT_DATA = (SID = ORCL) ) ) </code></tscreen> <sect1><tt>listener.ora</tt> <p> Το αρχείο <tt>listener.ora</tt> περιέχει τις περιγραφές των υπηρεσιών μας που άλλες μηχανές επιτρέπεται να συνδεθούν με αυτές, καθώς και οποιαδήποτε ρύθμιση που απαιτείται από τον listener του server. <p> Περιέχει τμήμα για το όνομα και τη διεύθυνση του listener, τις βάσεις δεδομένων που εξυπηρετούνται από τον listener, καθώς και παραμέτρους ρύθμισης. <p>Να ένα παράδειγμα: <tscreen><code> # Name of listener and addresses to listen on LISTENER = ( ADDRESS_LIST = (ADDRESS = (PROTOCOL=tcp) (HOST=<INSERT HOST>) (PORT=1521) (COMMUNITY=UK_SUP_TCPIP) ) (ADDRESS = (PROTOCOL=ipc) (KEY=700) (COMMUNITY=UK_SUP_TCPIP) ) ) # List of services served by this listener SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=orcl) (ORACLE_HOME=/home/oracle/7.3.3.0.0) ) ) # Start of configuration parameters. TRACE_LEVEL_LISTENER=OFF TRACE_FILE_LISTENER = "listener" LOG_FILE_LISTENER = "listener" CONNECT_TIMEOUT_LISTENER = 10 STOP_LISTENER = YES DBA_GROUP = dba </code></tscreen> <sect1><tt>sqlnet.ora</tt> <p> Το αρχείο <tt>sqlnet.ora</tt> περιέχει ρυθμίσεις για έναν συγκεκριμένο κόμβο του δικτύου. Αυτό είναι ανεξάρτητο του αριθμού των βάσεων ή του αριθμού των listeners. Το πιο σημαντικό πράγμα στο αρχείο αυτό είναι η μεταβλητή ρυθμίσεων <tt>Dead Connection Timeout</tt>. <p> Η Dead connection timeout ελέγχει κάθε εισερχόμενη διεργασία (process) προς ένα στιγμιότυπο μιας βάσης δεδομένων και βεβαιώνει πως το μέρος του πελάτη (client) ανταποκρίνεται ακόμα. Αν ο πελάτης (ανεξαρτήτως τύπου) δεν ανταποκρίνεται τότε η Oracle server shadow process σκοτώνεται (kill). <p> Αυτό είναι πολύ χρήσιμο Εάν έχετε πολλούς πελάτες που κάνουν πρόσβαση στη βάση δεδομένων, ειδικά σε φάση ανάπτυξης όπου αυτοί οι πελάτες είναι πιθανό να αποτυγχάνουν να βγουν ομαλά (exit cleanly) από την Β.Δ. της Oracle. <p> Παρακάτω είναι ένα αντίγραφο του αρχείου μου <tt>sqlnet.ora</tt> για να χρησιμοποιήσετε: <tscreen><code> TRACE_LEVEL_CLIENT = OFF sqlnet.expire_time = 30 # The number of seconds between client checks. names.default_domain = world name.default_zone = world </code></tscreen> <sect1>Εκκίνηση και Τερματισμός των Listeners <p> Τώρα που οι ρυθμίσεις των listeners και του SQL*Net ολοκληρώθηκαν, μπορούμε να επιχειρήσουμε να συνδεθούμε στη βάση, χρησιμοποιώντας το λογισμικό δικτύωσης. (Πριν, συνδεόμασταν με απευθείας σύνδεση στη βάση, ενώ εδώ προσομοιώνουμε μια σύνδεση από μια απομακρυσμένη μηχανή πελάτη) <p> Για να αρχίσουμε τον listener με τις παραπάνω ρυθμίσεις: <tscreen><code> $ lsnrctl LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:38:25 Copyright (c) Oracle Corporation 1994. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> start Starting /home/oracle/7.3.3.0.0/bin/tnslsnr: please wait... TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production System parameter file is /home/oracle/7.3.3.0.0/network/admin/listener.ora Log messages written to /home/oracle/7.3.3.0.0/network/log/listener.log Listening on: (ADDRESS=(PROTOCOL=tcp)(DEV=6)(HOST=192.168.1.1)(PORT=1521)) Listening on: (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=700)) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production Start Date 23-FEB-98 20:38:50 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security OFF SNMP ON Listener Parameter File /home/oracle/7.3.3.0.0/network/admin/listener.ora Listener Log File /home/oracle/7.3.3.0.0/network/log/listener.log Services Summary... orcl has 1 service handler(s) The command completed successfully LSNRCTL> exit </code></tscreen> <p> Για να τερματίσουμε τους listeners: <tscreen><code> $ lsnrctl LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:43:20 Copyright (c) Oracle Corporation 1994. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> stop Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP)) The command completed successfully LSNRCTL> exit </code></tscreen> <p> Αν έχετε μια στήσει ένα DNS που δεν επιστρέφει τη διεύθυνση IP για το hostname που δηλώσατε, η έναρξη και ο τερματισμός του listener μπορεί να πάρει κάποια ώρα (2-3 λεπτά. εξαρτώμενο από την τιμή μεταβλητής του χρόνου λήξης του DNS). Αν αυτό συμβαίνει, μην ανησυχείτε, έχετε υπομονή. <sect>Ρυθμίσεις Πελάτη (Client) <sect1>Πελάτες Windows <p> Η ρύθμιση του SQL*Net σε PC χρησιμοποιώντας τις νέες εκδόσεις του λογισμικού Oracle Client είναι πολύ εύκολη. Ο καλύτερος (και ευκολότερος) τρόπος να επιτευχθεί μια πλήρως λειτουργική εγκατάσταση ενός πελάτη, είναι να χρησιμοποιηθεί το εργαλείο <tt>SQL*Net Easy Configuration</tt> που παρέχεται από την Oracle. <p> Το εργαλείο αυτό έχει ένα interface αυτοματοποιημένου προγράμματος (wizard) για να σας περάσει από την εγκατάσταση των αρχείων <tt/tnsnames.ora/ και <tt/sqlnet.ora/. <p> Διαλέξτε "Add Database Alias" και βάλτε ένα όνομα για το ψευδώνυμο (alias) της βάσης όταν ερωτηθείτε when prompted. Αυτό το ψευδώνυμο είναι το όνομα με το οποίο θα αναφέρεστε στο στιγμιότυπο της βάσης, και σαν τέτοιο θα πρέπει να είναι ίδιο με το όνομα του στιγμιότυπου (orcl στην περίπτωσή μας). <p> Δώστε το TCP/IP ως πρωτόκολλο, και όταν ερωτηθείτε, δώστε το hostname της μηχανής που φιλοξενεί τη Β.Δ. και το όνομα του στιγμιότυπου της βάσης δεδομένων. <p> Αυτό ήταν. <p> Παρόλα αυτά, αν δεν έχετε το εργαλείο <tt>SQL*Net Easy Configuration</tt> μην ανησυχείτε. Μπορείτε απλά να δημιουργήσετε τα αρχεία <tt>tnsnames.ora</tt> και <tt>sqlnet.ora</tt> files στο <tt>$ORACLE_HOME/network/admin</tt> directory του πελάτη, ακριβώς όπως είναι στο server. Αυτό θα σας παρέχει ένα ψευδώνυμο ίδιο με το όνομα στον server (που έτσι και αλλιώς αποτελεί πάντα μια καλή τακτική). <sect1>Πελάτες Unix <p> Οι πελάτες UNIX δεν είναι πολύ διαφορετικοί από τους πελάτες windows. Αν έχετε το <tt/Network Manager/ της Oracle τότε χρησιμοποιήστε το με τον ίδιο τρόπο όπως παραπάνω. Αν όχι, πάλι μπορείτε να χρησιμοποιήσετε απλά τα ίδια αρχεία ρυθμίσεων του server στο <tt>$ORACLE_HOME/network/admin</tt> directory. <sect>Αυτόματο Ανέβασμα (Startup) και Κατέβασμα (Shutdown) <sect1><tt/dbstart/ & <tt/dbstop/ <p> Το αυτόματο ανέβασμα (Startup) και κατέβασμα (Shutdown) της βάσης δεδομένων Oracle μπορεί να επιτευχθεί (στην 7.3.3.0.0) με τα αρχεία <tt/dbstart/ και<tt/dbshut/, που και τα δυο παρέχονται από την Oracle. Αυτά τα αρχεία βασίζονται στην ύπαρξη του αρχείου <tt>/etc/oratab</tt> για να δουλέψουν (αν και αλλάζοντας τα αρχεία <tt/dbshut/ και <tt/dbstart/ αυτό μπορεί να μεταφερθεί). <p> Το format του αρχείου <tt>/etc/oratab</tt> είναι ως ακολούθως: <tscreen><code> SID:ORACLE_HOME:AUTO </code></tscreen> <p> Ένα παράδειγμα: <tscreen><code> orcl:/home/oracle/7.3.3.0.0:Y leaveup:/home/oracle/7.3.2.1.0:N </code></tscreen> <sect1><tt/init.d/ & <tt/rc.d/ <p> Για να εκκινήσετε και σταματήσετε τη βάση δεδομένων όταν το μηχάνημα ανεβαίνει και κατεβαίνει μπορείτε να αλλάξετε τις ρουτίνες εκκίνησης της Linux μηχανής σας. Είναι αρκετά εύκολο, αν και θα ήθελα να σημειώσω εδώ, πως μπορεί να διαφέρει ανάλογα με την έκδοση Linux (slackware, debian, redhat, etc). Θα δείξω παραδείγματα που δουλεύουν για το Redhat Linux 5.0. Για να τα τροποποιήσετε ανάλογα, για τη δικιά σας έκδοση του Linux, διαβάστε την τεκμηρίωση του Linux σας. (Παρόλο που θα πρέπει να στέκει για κάθε UNIX τύπου Sys V). <p> Πρώτα, χρειάζεται να δημιουργήσουμε το script που θα τρέχει τις <tt/dbshut/ και <tt/dbstart/ στο directory <tt>/etc/rc.d/init.d</tt>. Δημιουργήστε το ακόλουθο αρχείο ως <tt>/etc/rc.d/init.d/oracle</tt>: <tscreen><code> #!/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 </code></tscreen> <p> Αξίζει να ελεγχθεί πως το αρχείο σταματάει και αρχίζει τη βάση πραγματικά σωστά, στο σύστημά σας. Κοιτάξτε το αρχείο μηνυμάτων (log file), <tt>/var/log/oracle</tt> για μηνύματα λάθους. <p> Αφού το script αυτό δουλεύει, χρειάζεται να δημιουργήσουμε συμβολικές ενώσεις (symbolic links) start και kill στα αντίστοιχα runlevel directories <tt>/etc/rc.d/rcX.d</tt>. <p> Οι επόμενες εντολές θα εξασφαλίσουν πως οι βάσεις δεδομένων θα ανέβουν στα runlevels 2,3 and 4: <tscreen><code> $ 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 </code></tscreen> <p> Για να σταματήσετε τις βάσεις δεδομένων σε επανεκκίνηση θα χρειαστούμε τα ακόλουθα links: <tscreen><code> $ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # Halting $ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # Rebooting </code></tscreen> <sect>Άλλα πραγματάκια <sect1>Intelligent Agent <p> Αν έχετε ανάγκη για τον <tt>Oracle Intelligent Agent</tt>, βρήκα πως μπορείτε να τον τρέξετε χωρίς αλλαγές ρυθμίσεων. Για να αρχίσετε τον IA δοκιμάστε: <tscreen><code> $ lsnrctl dbsnmp_start </code></tscreen> <p> Για να σταματήσετε τον IA δοκιμάστε: <tscreen><code> $ lsnrctl dbsnmp_stop </code></tscreen> <p> Δεν φαίνεται να υπάρχουν μηνύματα που να δείχνουν την επιτυχημένη ή μη αρχή ή τερματισμό του intelligent agent. Παρόλα αυτά, ο IA απάντησε στον Enterprise manager στην πλευρά του client και έτσι μπορώ να υποθέσω πως δουλεύει <sect>Ευχαριστίες / Αναγνωρίσεις <p> Το κείμενο βασίστηκε σε ένα κείμενο του Bob Withers, <tt>bwit@pobox.com</tt>. Επιπλέον πληροφορίες πάρθηκαν από κείμενα που γράφτηκαν από τους Georg Rehfeld, <tt>rehfeld@wmd.de</tt> και David Mansfield, <tt>david@claremont.com</tt>. <p> Διάβασμα και έλεγχος του κειμένου έγινε από τους Bob Withers, Mark Watling, <tt>mwatling@mjw-ltd.demon.co.uk</tt>, Peter Sodhi, <tt>petersodhi@unn.unisys.com</tt> και Greg Hankins, <tt>greg.hankins@cc.gatech.edu</tt>. <p> Οι ευχαριστίες μου στην τρομερή υποστήριξη από τους ανθρώπου που αναμίχθηκαν σε αυτό το κείμενο και στην έρευνα που έγινε σε αυτό Ειδικές ευχαριστίες στον Bob Withers και τον Mark Watling για τα επιπλέον σχόλια και βοήθεια που προσέφεραν. <sect> Περί της Ελληνικής Μετάφρασης <p> Για σχόλια, παρατηρήσεις, διορθώσεις, ενημερώσεις περί της Ελληνικής μετάφρασης αυτού του HOWTO, στείλτε email στην Βούλα Σανιδά : <htmlurl url="mailto:voulariba@hellug.gr " name="voulariba@hellug.gr "> ή στον Ευριπίδη Παπακώστα : <htmlurl url="mailto:evris@hellug.gr " name="evris@hellug.gr "> και εναλλακτικά : <htmlurl url="mailto:ep@rocketmail.com" name="ep@rocketmail.com"> </article>