<!doctype linuxdoc system>

<article>

<!-- Πληροφορίες Τίτλου-->

<title>Ελληνικό 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 &dollar;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>&dollar;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>&dollar;ORACLE_HOME/guicommon2/</tt>
<item><tt>&dollar;ORACLE_HOME/ctx/</tt>
<item><tt>&dollar;ORACLE_HOME/md/</tt>
<item><tt>&dollar;ORACLE_HOME/mlx/</tt>
<item><tt>&dollar;ORACLE_HOME/precomp/</tt>
<item><tt>&dollar;ORACLE_HOME/slax/</tt>
</itemize>
<sect>Δημιουργία μιας Βάσης Δεδομένων
<p>
Τώρα, ο Oracle server είναι εγκατεστημένος και χρειάζεται να δημιουργήσουμε μια βάση δεδομένων
για να ελέγξουμε την εγκατάσταση.
<sect1>Δημιουργία του Αρχείου Αρχικοποίησης
<p>
Αντιγράψτε το αρχείο <tt>&dollar;ORACLE_HOME/dbs/init.ora</tt> στο <tt>&dollar;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>&dollar;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>&dollar;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>&dollar;ORACLE_HOME/network/admin</tt> directory του πελάτη, ακριβώς όπως είναι στο server.
Αυτό θα σας παρέχει ένα ψευδώνυμο ίδιο με το όνομα στον server (που έτσι και αλλιώς αποτελεί πάντα μια καλή τακτική).

<sect1>Πελάτες Unix 
<p>
Οι πελάτες UNIX δεν είναι πολύ διαφορετικοί από τους πελάτες windows.  Αν έχετε το
<tt/Network Manager/ της Oracle τότε χρησιμοποιήστε το με τον ίδιο τρόπο όπως παραπάνω.
Αν όχι, πάλι μπορείτε να χρησιμοποιήσετε απλά τα ίδια αρχεία ρυθμίσεων του server στο 
<tt>&dollar;ORACLE_HOME/network/admin</tt> directory.

<sect>Αυτόματο Ανέβασμα (Startup) και Κατέβασμα (Shutdown)
<sect1><tt/dbstart/ &amp; <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/ &amp; <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>




