Ελληνικό Oracle Database HOWTO Paul Haigh, paul@nailed.demon.co.uk v1.0, 10 Μαρτίου 1998 Ενας οδηγός για την εγκατάσταση και ρύθμιση του Oracle Database Server σε ένα σύστημα Linux ______________________________________________________________________ Table of Contents 1. Εισαγωγή 1.1 Ιστορία Αναθεωρήσεων 1.2 Πνευματικά Δικαιώματα 1.3 Disclaimer 1.4 Σκοπός αυτού του HOWTO 1.5 Απαιτήσεις 1.6 Μελλοντικές Βελτιώσεις 2. Εγκατάσταση του λογισμικού της Oracle 2.1 Προετοιμασία του Server 2.1.1 Δημιουργία ενός χρήστη Oracle 2.2 Εγκατάσταση από CDROM 2.3 Εργασίες μετά την Εγκατάσταση 2.3.1 Εργασίες για τον Root 2.3.2 Εργασίες για τον Oracle 2.3.3 Πράγματα που μπορείτε να απομακρύνετε: 3. Δημιουργία μιας Βάσης Δεδομένων 3.1 Δημιουργία του Αρχείου Αρχικοποίησης 3.2 Δημιουργήστε το Script Εγκατάστασης Βάσης Δεδομένων 3.3 Εκτέλεση του Script Εγκατάστασης Βάσης Δεδομένων 3.4 Εκκίνηση της Βάσης Δεδομένων 3.5 Σταματώντας την Βάση Δεδομένων 3.6 Δημιουργία ενός Προκαθορισμένου Χρήστη (Default User) 4. Ρυθμίστε το SQL*Net του Server 4.1 (TT 4.2 (TT 4.3 (TT 4.4 Εκκίνηση και Τερματισμός των Listeners 5. Ρυθμίσεις Πελάτη (Client) 5.1 Πελάτες Windows 5.2 Πελάτες Unix 6. Αυτόματο Ανέβασμα (Startup) και Κατέβασμα (Shutdown) 6.1 (TT 6.2 (TT 7. Άλλα πραγματάκια 7.1 Intelligent Agent 8. Ευχαριστίες / Αναγνωρίσεις 9. Περί της Ελληνικής Μετάφρασης ______________________________________________________________________ 1. Εισαγωγή 1.1. Ιστορία Αναθεωρήσεων · v0.1 - 21 Φεβρουαρίου 1998 - Paul Haigh - Αρχική Έκδοση · v0.2 - 01 Μαρτίου 1998 - Paul Haigh - Προστέθηκαν σχόλια για τα Proofreaders · v1.0 - 10 Μαρτίου 1998 - Paul Haigh - Δημοσίευση του στο LDP 1.2. Πνευματικά Δικαιώματα Oracle Database HOWTO copyright (c) 1998, Paul Haigh. Όπως όλα τα κείμενα Linux HOWTO, μπορεί να επαναπαραχθεί και διανεμηθεί ολόκληρο ή μέρος του, σε κάθε μέσο, φυσικό ή ηλεκτρονικό, όσο αυτή η σημείωση περί πνευματικής ιδιοκτησίας διατηρείται σε όλα τα αντίγραφα. Η εμπορική αναδιανομή επιτρέπεται και ενθαρρύνεται. Παρόλα αυτά, ο συγγραφέας θα ήθελε να ειδοποιηθεί για τέτοιες διανομές. Μπορείτε να μεταφράσετε αυτό το HOWTO σε κάθε γλώσσα, με την προϋπόθεση πως αφήνετε αυτή τη δήλωση περί πνευματικής ιδιοκτησίας ακέραιη και πως θα προσθέσετε μια σημείωση που να δηλώνει τον μεταφραστή του κειμένου. 1.3. Disclaimer Ενώ προσπάθησα να συμπεριλάβω την πιο σωστή και πρόσφατη πληροφορία που ήταν διαθέσιμη σε μένα, δεν μπορώ να εγγυηθώ πως η χρήση των πληροφοριών αυτού του κειμένου, δεν θα καταλήξει σε απώλεια δεδομένων ή εξοπλισμού. ΔΕΝ ΠΑΡΕΧΩ ΚΑΜΙΑ ΕΓΓΥΗΣΗ για τις πληροφορίες του HOWTO και δεν μπορώ να θεωρηθώ νομικά υπεύθυνος για ό,τι συνέπειες απορρέουν από την χρήση των πληροφορίας σε αυτό το HOWTO. 1.4. Σκοπός αυτού του HOWTO Σε αυτό το HOWTO θα επιχειρήσω να καλύψω τα θέματα της εγκατάστασης και της βασικής διαχείρισης μιας Βάσης Δεδομένων Oracle που τρέχει σε μια μηχανή Linux. Συγκεκριμένα, θα καλύψω την εγκατάσταση του Oracle server, τη ρύθμιση του SQL*Net και του client. Αυτό το κείμενο δεν αποτελεί ένα εις βάθος εγχειρίδιο της χρήσης και διαχείρισης μιας Β.Δ. Oracle, και αν αυτό ψάχνετε υπάρχουν υπέροχα βιβλία για αυτά τα θέματα που έχουν εκδοθεί από την O'Reilly και άλλους. Δεν πρόκειται να καλύψω την ανάπτυξη προγραμμάτων σε Oracle κάτω από UNIX. Αν αυτό είναι απολύτως αναγκαίο για εσάς, θα σας πρότεινα να αγοράσετε το SCO Developement System της SCO (με τον OpenServer 5.x), που μου είπαν πως μπορεί να αποκτηθεί στην πολύ λογική τιμή των US $19, από την www.sco.com. 1.5. Απαιτήσεις Υποθέτω πως έχετε κάποια στοιχεία που θα χρειαστείτε για να ακολουθήσετε αυτό το HOWTO. · Oracle Server CD για τον SCO Openserver (Version 7.3.3.0.0.) Πρέπει να είναι μια νόμιμη κόπια. Να θυμάστε πως η Oracle είναι μια κερδοσκοπική επιχείρηση και χρεώνει για τα προϊόντα της. Αν θέλετε μια δωρεάν SQL συμβατή βάση δεδομένων χρησιμοποιήστε την PostgresSQL ή κάποια παρόμοια. Είναι επίσης δυνατόν να εγκαταστήσετε την oracle, χρησιμοποιώντας μια άδεια δοκιμαστικής χρήσης / αξιολόγησης 60 ημερών, από αρχείο που μπορείτε να κατεβάσετε από το tar web site της Oracle. Προσωπικά δεν το έχω δοκιμάσει και είναι πλήρως ανεπικύρωτο. · Ένα Linux Server Δεν θα το διαβάζατε αυτό, εάν δεν είχατε. Σωστά; · Πυρήνα 2.0.30+ Δεν μπορώ να εγγυηθώ πως αυτές οι οδηγίες θα είναι ακριβείς για οποιονδήποτε άλλο πυρήνα. (όχι ότι εγγυώμαι και για τον 2.0.30 ...). · iBCS Είναι πολύ σημαντικό να το έχετε εγκαταστήσει και να δουλεύετε με την τελευταία δυνατή έκδοση του για την πλατφόρμα σας. (Χρησιμοποιώ το iBCS-2.0-10.i386.rpm για Redhat Linux). · Μεγάλο χώρο στο δίσκο 600 Mb+ είναι ένα λογικό ποσό. Είναι δυνατό να εγκαταστήσετε και με λιγότερο αλλά θα χρειαστεί να κάνετε κάποιες θυσίες, και δεν μου αρέσει ποτέ να αρχίζω έτσι. Παρόλα αυτά, θα προσπαθήσω να υποδείξω τα σημεία εκείνα στα οποία μπορεί να ελευθερωθεί χώρος. · 32Mb+ Ram Ξέρω πως ακούγεται μάλλον πολύ, ειδικότερα για τα μέτρα του Linux, αλλά να θυμάστε πως η Oracle είναι ένα σύνθετο κομμάτι λογισμικού. Δεν θα είχατε τις ίδιες επιφυλάξεις εάν είχατε SCO! Δεν ισχυρίζομαι πως η Oracle δεν δουλεύει με λιγότερο, απλά λέω πως εάν είναι λιγότερο από ότι η Oracle συνιστά και δεν θα το πρότεινα. · ’άδειες από την Oracle Ξέρω πως το έχω ήδη αναφέρει, αλλά θέλω να είμαι ξεκάθαρος πως αυτό το θέμα είναι σημαντικό. Χρήση λογισμικού της Oracle χωρίς άδεια είναι παράνομη. 1.6. Μελλοντικές Βελτιώσεις Αυτοί είναι οι τομείς του Oracle server που δεν καλύπτονται σε αυτό το HOWTO. Παρόλα αυτά, αν ο χρόνος το επιτρέψει, θα επιχειρήσω να τους βάλω σε επόμενες εκδόσεις του HOWTO. · Ανάπτυξη προγραμμάτων Oracle Pro* χρησιμοποιώντας βιβλιοθήκες της Oracle. · Εγκατάσταση διαφορετικών εκδόσεων του Oracle server. · Εγκατάσταση του Oracle Web Server. · Πως να κάνετε relink τον Πυρήνα της Oracle. 2. Εγκατάσταση του λογισμικού της Oracle 2.1. Προετοιμασία του Server 2.1.1. Δημιουργία ενός χρήστη Oracle Όπως είναι λογικό χρειαζόμαστε έναν χρήστη να κρατάει την βάση δεδομένων της Oracle. Μια που δεν επιθυμούμε να κάνουμε relink τον πυρήνα της Oracle (περισσότερα για αυτό αργότερα) θα πρέπει να αποδεχτούμε τις προκαθορισμένες παραμέτρους της Oracle για το όνομα του χρήστη και το όνομα του group. Αυτές συμπεριλαμβάνουν τον χρήστη ORACLE και το group DBA. 1. Συνδεθείτε ως Root 2. Δημιουργείστε το χρήστη oracle και το group dba. ______________________________________________________________________ $ groupadd dba $ useradd oracle ______________________________________________________________________ 3. Βεβαιωθείτε πως ένα home directory δημιουργείται για τον χρήστη oracle. ______________________________________________________________________ $ mkdir /home/oracle $ mkdir /home/oracle/7.3.3.0.0 (Version of Oracle) $ chown -R oracle.dba /home/oracle ______________________________________________________________________ 2.2. Εγκατάσταση από CDROM Δυστυχώς ο Oracle Installer από το δισκάκι του SCO δεν θα δουλέψει. Μπορεί να αντιμετωπίσετε πληθώρα προβλημάτων, από core dumps μέχρι κρέμασμα. Σαν αποτέλεσμα, χρειάζεται να αντιγράψουμε τα αρχεία από το CDROM χειρωνακτικά και να τα αποσυμπιέσουμε: (Βεβαιωθείτε πως το CDROM είναι προσαρτημένο (mounted) στο σύστημα). 1. Συνδεθείτε σαν Oracle 2. Αλλάξτε directory σε /home/oracle/7.3.3.0.0. 3. Αντιγράψτε όλα τα αρχεία εγκατάστασης από το CDROM ______________________________________________________________________ $ cp -a /mnt/cdrom/* . ______________________________________________________________________ 4. Αποσυμπιέστε όλα τα αρχεία της Oracle από το CDROM. ______________________________________________________________________ $ find . -name *_ -exec ~/7.3.3.0.0/orainst/oiuncomp {} \; ______________________________________________________________________ 2.3. Εργασίες μετά την Εγκατάσταση 2.3.1. Εργασίες για τον Root Προσθέστε τις επόμενες γραμμές στο /etc/profile ή στο .profile για κάθε χρήστη που πρόκειται να χρησιμοποιήσει την Oracle. ______________________________________________________________________ # 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" ______________________________________________________________________ Επίσης χρειάζεται να αλλάξουμε τον ιδιοκτήτη και τα προνόμια χρήσης της βοηθητικής εφαρμογής της Oracle ulimit increase. ______________________________________________________________________ $ chown root.root $ORACLE_HOME/bin/osh $ chmod u+s $ORACLE_HOME/bin/osh ______________________________________________________________________ 2.3.2. Εργασίες για τον Oracle Αλλάξτε τα προνόμια χρήσης των αρχείων της Oracle για να εξασφαλίσετε την σωστή λειτουργία. ______________________________________________________________________ $ chmod +x $ORACLE_HOME/bin/* $ chmod u+s $ORACLE_HOME/bin/oracle ______________________________________________________________________ Τα εργαλεία της Oracle απαιτούν τα μηνύματα να κρατούνται στο directory$ORACLE_HOME/tool_name/mesg. Έτσι, μετακινήστε τα αρχεία msb από τα directories msg_ship στα directories mesg . ______________________________________________________________________ $ 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/. ______________________________________________________________________ Δημιουργείστε τα ακόλουθα directories αν δεν υπάρχουν: ______________________________________________________________________ $ mkdir $ORACLE_HOME/rdbms/log $ mkdir $ORACLE_HOME/rdbms/audit $ mkdir $ORACLE_HOME/network/log ______________________________________________________________________ 2.3.3. Πράγματα που μπορείτε να απομακρύνετε: Τα παρακάτω directories μπορούν να απομακρυνθούν με ασφάλεια: · $ORACLE_HOME/guicommon2/ · $ORACLE_HOME/ctx/ · $ORACLE_HOME/md/ · $ORACLE_HOME/mlx/ · $ORACLE_HOME/precomp/ · $ORACLE_HOME/slax/ 3. Δημιουργία μιας Βάσης Δεδομένων Τώρα, ο Oracle server είναι εγκατεστημένος και χρειάζεται να δημιουργήσουμε μια βάση δεδομένων για να ελέγξουμε την εγκατάσταση. 3.1. Δημιουργία του Αρχείου Αρχικοποίησης Αντιγράψτε το αρχείο $ORACLE_HOME/dbs/init.ora στο $ORACLE_HOME/dbs/initorcl.ora: ______________________________________________________________________ $ cd $ORACLE_HOME/dbs $ cp init.ora initorcl.ora ______________________________________________________________________ Τροποποιήστε το, προσθέτοντας τις ακόλουθες γραμμές: ______________________________________________________________________ db_name = orcl COMPATIBLE=7.3.3.0.0 ______________________________________________________________________ 3.2. Δημιουργήστε το Script Εγκατάστασης Βάσης Δεδομένων Δημιουργήστε ένα αρχείο script που να λέγεται makedb.sql στο $ORACLE_HOME/dbs directory: ______________________________________________________________________ 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 ______________________________________________________________________ 3.3. Εκτέλεση του Script Εγκατάστασης Βάσης Δεδομένων Αρχίστε το svrmgrl και τρέξτε το script: ______________________________________________________________________ $ 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. ______________________________________________________________________ 3.4. Εκκίνηση της Βάσης Δεδομένων Αρχικά, χρειάζεται να σηκώσουμε την βάση δεδομένων με το χέρι (θα το αυτοματοποιήσουμε στη συνέχεια). Για να αρχίσουμε μια βάση δεδομένων Oracle χρειάζεται να δώσουμε την εντολή startup αφού συνδεθούμε μαζί της εσωτερικά: ______________________________________________________________________ $ 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. ______________________________________________________________________ 3.5. Σταματώντας την Βάση Δεδομένων Αξίζει να αναφερθεί πως η επανεκκίνηση ενός Linux server χωρίς πρώτα το κατέβασμα (shutting down) της βάσης δεδομένων της Oracle, έχει ένα μεγάλο κίνδυνο να διαβρώσει (corrupt) τη βάση δεδομένων. Έτσι, πριν δώσουμε την εντολή του Linux shutdown,είναι συνετό να κατεβάσουμε τη βάση δεδομένων: ______________________________________________________________________ $ 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. ______________________________________________________________________ 3.6. Δημιουργία ενός Προκαθορισμένου Χρήστη (Default User) Η βάση δεδομένων, όπως δημιουργήθηκε, έχει δυο ειδικούς χρήστες που δημιουργούνται αυτόματα. Αυτοί είναι: ______________________________________________________________________ Username Password SYSTEM MANAGER SYS change_on_install ______________________________________________________________________ Αυτοί οι χρήστες τυπικά χρησιμοποιούνται για να κρατάν τις πληροφορίες του data dictionary information για τη βάση δεδομένων. Είναι καλή ιδέα να αλλάξουμε τα passwords από τα προκαθορισμένα όσο πιο γρήγορα γίνεται. Αυτό μπορεί να κατορθωθεί με: ______________________________________________________________________ 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 ; User altered. SQL> alter user sys identified by ; 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 ______________________________________________________________________ Μια που ο χρήστης system/manager είναι παρόμοιος με το να χρησιμοποιείς root σε μια μηχανή UNIX, χρειάζεται να δημιουργήσουμε ένα χρήστη με λιγότερες δυνατότητες να βλάψει το σύστημα. (θυμηθείτε να σηκώσετε την βάση δεδομένων πριν επιχειρήσετε να δημιουργήσετε ένα χρήστη) Συνδεθείτε στο SQL*Plus και δημιουργήστε ένα χρήστη: ______________________________________________________________________ $ 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 identified by 2 default tablespace users 3 temporary tablespace temp; User created. SQL> grant connect, resource to 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 ______________________________________________________________________ Τώρα που έχετε ένα νέο χρήστη στο σύστημα, μπορείτε να παίξετε με το νέο σύστημα. Για να συνδεθείτε με την βάση δεδομένων της Oracle: ______________________________________________________________________ $ sqlplus / ______________________________________________________________________ Εάν αυτό ολοκληρώνεται χωρίς μηνύματα λάθους έχετε μια βάση Oracle που δουλεύει. Αν δεν θέλετε να συνδέεστε στη βάση αυτή από πουθενά πλην αυτού του Server, τότε η δουλειά τελείωσε, απολαύστε την! Αν, παρόλα αυτά, όπως και οι περισσότεροι άνθρωποι θέλετε να ρυθμίσετε το λογισμικό δικτύωσης, ώστε να μπορείτε να συνδέεστε και από άλλες μηχανές, συνεχίστε το διάβασμα. 4. Ρυθμίστε το SQL*Net του Server Όλα αυτά τα αρχεία ρυθμίζουν το λογισμικό δικτύωσης της Oracle (SQL*Net, τώρα Net8 for Oracle8). Αυτά τα αρχεία θα πρέπει να έχουν ήδη δημιουργηθεί στο server στο $ORACLE_HOME/network/admin directory. 4.1. tnsnames.ora Το αρχείο TNSNAMES.ORA αναγνωρίζει τις διαθέσιμες υπηρεσίες της μηχανής. Στο στιγμιότυπο (instance) μας θα περιγράψουμε όλες τις βάσεις δεδομένων που ο server έχει προσκολλημένες. Για κάθε ένα στιγμιότυπο της Βάσης Δεδομένων (database instance) του server σας, προσθέστε ένα τμήμα σαν το παρακάτω: ______________________________________________________________________ orcl.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = ) (Port = 1521) ) (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = ) (Port = 1526) ) ) (CONNECT_DATA = (SID = ORCL) ) ) ______________________________________________________________________ 4.2. listener.ora Το αρχείο listener.ora περιέχει τις περιγραφές των υπηρεσιών μας που άλλες μηχανές επιτρέπεται να συνδεθούν με αυτές, καθώς και οποιαδήποτε ρύθμιση που απαιτείται από τον listener του server. Περιέχει τμήμα για το όνομα και τη διεύθυνση του listener, τις βάσεις δεδομένων που εξυπηρετούνται από τον listener, καθώς και παραμέτρους ρύθμισης. Να ένα παράδειγμα: ______________________________________________________________________ # Name of listener and addresses to listen on LISTENER = ( ADDRESS_LIST = (ADDRESS = (PROTOCOL=tcp) (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 ______________________________________________________________________ 4.3. sqlnet.ora Το αρχείο sqlnet.ora περιέχει ρυθμίσεις για έναν συγκεκριμένο κόμβο του δικτύου. Αυτό είναι ανεξάρτητο του αριθμού των βάσεων ή του αριθμού των listeners. Το πιο σημαντικό πράγμα στο αρχείο αυτό είναι η μεταβλητή ρυθμίσεων Dead Connection Timeout. Η Dead connection timeout ελέγχει κάθε εισερχόμενη διεργασία (process) προς ένα στιγμιότυπο μιας βάσης δεδομένων και βεβαιώνει πως το μέρος του πελάτη (client) ανταποκρίνεται ακόμα. Αν ο πελάτης (ανεξαρτήτως τύπου) δεν ανταποκρίνεται τότε η Oracle server shadow process σκοτώνεται (kill). Αυτό είναι πολύ χρήσιμο Εάν έχετε πολλούς πελάτες που κάνουν πρόσβαση στη βάση δεδομένων, ειδικά σε φάση ανάπτυξης όπου αυτοί οι πελάτες είναι πιθανό να αποτυγχάνουν να βγουν ομαλά (exit cleanly) από την Β.Δ. της Oracle. Παρακάτω είναι ένα αντίγραφο του αρχείου μου sqlnet.ora για να χρησιμοποιήσετε: ______________________________________________________________________ TRACE_LEVEL_CLIENT = OFF sqlnet.expire_time = 30 # The number of seconds between client checks. names.default_domain = world name.default_zone = world ______________________________________________________________________ 4.4. Εκκίνηση και Τερματισμός των Listeners Τώρα που οι ρυθμίσεις των listeners και του SQL*Net ολοκληρώθηκαν, μπορούμε να επιχειρήσουμε να συνδεθούμε στη βάση, χρησιμοποιώντας το λογισμικό δικτύωσης. (Πριν, συνδεόμασταν με απευθείας σύνδεση στη βάση, ενώ εδώ προσομοιώνουμε μια σύνδεση από μια απομακρυσμένη μηχανή πελάτη) Για να αρχίσουμε τον listener με τις παραπάνω ρυθμίσεις: ______________________________________________________________________ $ 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 ______________________________________________________________________ Για να τερματίσουμε τους listeners: ______________________________________________________________________ $ 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 ______________________________________________________________________ Αν έχετε μια στήσει ένα DNS που δεν επιστρέφει τη διεύθυνση IP για το hostname που δηλώσατε, η έναρξη και ο τερματισμός του listener μπορεί να πάρει κάποια ώρα (2-3 λεπτά. εξαρτώμενο από την τιμή μεταβλητής του χρόνου λήξης του DNS). Αν αυτό συμβαίνει, μην ανησυχείτε, έχετε υπομονή. 5. Ρυθμίσεις Πελάτη (Client) 5.1. Πελάτες Windows Η ρύθμιση του SQL*Net σε PC χρησιμοποιώντας τις νέες εκδόσεις του λογισμικού Oracle Client είναι πολύ εύκολη. Ο καλύτερος (και ευκολότερος) τρόπος να επιτευχθεί μια πλήρως λειτουργική εγκατάσταση ενός πελάτη, είναι να χρησιμοποιηθεί το εργαλείο SQL*Net Easy Configuration που παρέχεται από την Oracle. Το εργαλείο αυτό έχει ένα interface αυτοματοποιημένου προγράμματος (wizard) για να σας περάσει από την εγκατάσταση των αρχείων tnsnames.ora και sqlnet.ora. Διαλέξτε "Add Database Alias" και βάλτε ένα όνομα για το ψευδώνυμο (alias) της βάσης όταν ερωτηθείτε when prompted. Αυτό το ψευδώνυμο είναι το όνομα με το οποίο θα αναφέρεστε στο στιγμιότυπο της βάσης, και σαν τέτοιο θα πρέπει να είναι ίδιο με το όνομα του στιγμιότυπου (orcl στην περίπτωσή μας). Δώστε το TCP/IP ως πρωτόκολλο, και όταν ερωτηθείτε, δώστε το hostname της μηχανής που φιλοξενεί τη Β.Δ. και το όνομα του στιγμιότυπου της βάσης δεδομένων. Αυτό ήταν. Παρόλα αυτά, αν δεν έχετε το εργαλείο SQL*Net Easy Configuration μην ανησυχείτε. Μπορείτε απλά να δημιουργήσετε τα αρχεία tnsnames.ora και sqlnet.ora files στο $ORACLE_HOME/network/admin directory του πελάτη, ακριβώς όπως είναι στο server. Αυτό θα σας παρέχει ένα ψευδώνυμο ίδιο με το όνομα στον server (που έτσι και αλλιώς αποτελεί πάντα μια καλή τακτική). 5.2. Πελάτες Unix Οι πελάτες UNIX δεν είναι πολύ διαφορετικοί από τους πελάτες windows. Αν έχετε το Network Manager της Oracle τότε χρησιμοποιήστε το με τον ίδιο τρόπο όπως παραπάνω. Αν όχι, πάλι μπορείτε να χρησιμοποιήσετε απλά τα ίδια αρχεία ρυθμίσεων του server στο $ORACLE_HOME/network/admin directory. 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 ______________________________________________________________________ 7. Άλλα πραγματάκια 7.1. Intelligent Agent Αν έχετε ανάγκη για τον Oracle Intelligent Agent, βρήκα πως μπορείτε να τον τρέξετε χωρίς αλλαγές ρυθμίσεων. Για να αρχίσετε τον IA δοκιμάστε: ______________________________________________________________________ $ lsnrctl dbsnmp_start ______________________________________________________________________ Για να σταματήσετε τον IA δοκιμάστε: ______________________________________________________________________ $ lsnrctl dbsnmp_stop ______________________________________________________________________ Δεν φαίνεται να υπάρχουν μηνύματα που να δείχνουν την επιτυχημένη ή μη αρχή ή τερματισμό του intelligent agent. Παρόλα αυτά, ο IA απάντησε στον Enterprise manager στην πλευρά του client και έτσι μπορώ να υποθέσω πως δουλεύει 8. Ευχαριστίες / Αναγνωρίσεις Το κείμενο βασίστηκε σε ένα κείμενο του Bob Withers, bwit@pobox.com. Επιπλέον πληροφορίες πάρθηκαν από κείμενα που γράφτηκαν από τους Georg Rehfeld, rehfeld@wmd.de και David Mansfield, david@claremont.com. Διάβασμα και έλεγχος του κειμένου έγινε από τους Bob Withers, Mark Watling, mwatling@mjw-ltd.demon.co.uk, Peter Sodhi, petersodhi@unn.unisys.com και Greg Hankins, greg.hankins@cc.gatech.edu. Οι ευχαριστίες μου στην τρομερή υποστήριξη από τους ανθρώπου που αναμίχθηκαν σε αυτό το κείμενο και στην έρευνα που έγινε σε αυτό Ειδικές ευχαριστίες στον Bob Withers και τον Mark Watling για τα επιπλέον σχόλια και βοήθεια που προσέφεραν. 9. Περί της Ελληνικής Μετάφρασης Για σχόλια, παρατηρήσεις, διορθώσεις, ενημερώσεις περί της Ελληνικής μετάφρασης αυτού του HOWTO, στείλτε email στην Βούλα Σανιδά : voulariba@hellug.gr ή στον Ευριπίδη Παπακώστα : evris@hellug.gr και εναλλακτικά : ep@rocketmail.com