Pagina 1 di 1

Installazione Oracle Server 9i su Linux Ubuntu Intrepid 8.10

Inviato: venerdì, 24.04.2009, 15:54
da Starless
Distribuzione Linux: Ubuntu 8.10
Kernel: 2.6.27-14-generic
Versione Oracle Server 9i per Linux: 9.2.0.4


N.B.: nella guida ci sono delle operazioni da fare con privilegi di amministratore. Essendo Ubuntu la distribuzione usata è consigliabile usare il comando sudo ma niente vieta di cambiare utente e diventare root. STARE ATTENTI a non fare comandi come root se non esplicitamente detto o richiesto. Le operazioni di installazione devono essere fatte come utente oracle.


================
PASSI PRELIMINARI
================

1) Creare il gruppo dba (punto 1 INSTALLAZIONE ORACLE SERVER 9i) e l'utente oracle (punti 2 e 3 INSTALLAZIONE ORACLE SERVER 9i)

2) Loggarsi come utente oracle

3) Scaricare e scompattare i tre CD di Oracle Server 9i ver. 9.2.0.4 per Linux da utente oracle in modo da avere tutti i permessi OK.


==============================
INSTALLAZIONE ORACLE SERVER 9i
==============================

1) Creare gruppo dba da utente root o con l'ausilio di sudo con il comando:

Codice: Seleziona tutto

groupadd dba


2) Creare utente oracle da utente root o con l'ausilio di sudo con il comando:

Codice: Seleziona tutto

useradd -c "Utente Oracle" -G admin,dba -d /home/oracle -s /bin/bash -m oracle


3) Impostare la password per l'utente oracle da utente root o con l'ausilio di sudo con il comando:

Codice: Seleziona tutto

passwd oracle


4) Terminare la sessione e accedere con l'utente oracle. Scompattare i tre CD di Oracle Server 9i ver. 9.2.0.4 per Linux. Da ora in avanti tutte le operazioni saranno fatte con questo utente.

5) Installare la jre-1.3.1_19. Per scaricare la jre seguire i seguenti passi:
a) Andare sul sito di Java e cliccate sul link per le versioni precedenti (per i più pigri il link è: http://java.sun.com/products/archive/)
b) Alla voce J2RE - 1.3 scegliere dal menù a tendina la jre 1.3.1_19 e cliccare sul pulsante "GO"
c) Cliccare sul link "Download" della colonna JRE
d) Scegliere Linux come platform e accettare la lincenza. Cliccare sul pulsante "Continue"
e) Scaricare la versione .rpm.bin
f) Aprite una shell. Andate nella cartella dove avete salvato il file .bin e lanciare il comando:

Codice: Seleziona tutto

./j2re-1_3_1_19-linux-i586.rpm.bin

Se non dovesse essere eseguibile dare prima il comando:

Codice: Seleziona tutto

chmod a+x j2re-1_3_1_19-linux-i586.rpm.bin

g) Nella stessa cartella sarà creato il file: jre-1.3.1_19.i586.rpm
h) A questo punto con l'utility alien (se non l'avete installatela) creare il pacchetto .deb con il comando da root o con sudo:

Codice: Seleziona tutto

alien --scripts -k jre-1.3.1_19.i586.rpm

i) Installate il pacchetto .deb come volete (linea di comando o GDebi). N.B.: Potete installare direttamente il pacchetto .rpm se avete l'utility rpm installata

6) Editare il file oraparam.ini contenuto in Disk1/install/linux/oraparam.ini impostando il percorso della jre installata al punto 4)
Nel nostro caso: JRE_LOCATION=/usr/java/jre1.3.1_19


N.B.: nell'export delle variabili d'ambiente NON mettete l'ultimo /

7) Installare il pacchetto compat-libstdc++_7.3-2.96.118_i386.deb per la libreria mancante altrimenti avete l'errore
error while loading shared libraries: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory

Andate sul sito http://rpm.pbone.net/ e cercate il pacchetto compat-libstdc++_7.3-2.96.118_i386.rpm (scaricate quello per Red Hat 9 o Fedora 9). Una volta scaricato procedete come per il punto 4h-4i

8) Creare cartella di destinazione, dare i permessi giusti e settare le variabili d'ambiente (questo serve per settare la ORACLE_BASE e la ORACLE_HOME in cui saranno installati i file). Lanciare i comandi come root o con l'ausilio di sudo:

Codice: Seleziona tutto

cd /opt
mkdir oracle
chown oracle oracle
chgrp dba oracle


Settare le variabili d'ambiente:

Codice: Seleziona tutto

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/9.2.0.4
export PATH=$PATH:$ORACLE_HOME/bin


9) Lanciare come utente oracle dalla stessa shell su cui si sono settate le variabili d'ambiente il comando contenuto in Disk1/install/linux:

Codice: Seleziona tutto

./runInstaller

Se non è eseguibile lanciare il comando da root o con sudo:

Codice: Seleziona tutto

chmod a+x runInstaller

e rilanciare il comando ./runInstaller

N.B.: se si lancia il runInstaller contenuto nella cartella Disk1 si ha il seguente errore:
./runInstaller: 62: Syntax error: word unexpected (expecting ")")


Installazione Grafica
a) Se è la prima installazione di Oracle al primo click su "Avanti" viene chiesto dove posizionare la cartella oraInventory. Lasciare quella proposta (/opt/oracle/oraInventory)
b) Come "Nome Gruppo UNIX" mettere dba
c) Eseguire da shell come proposto dall'installatore da utente root lo script /tmp/orainstRoot.sh. Cliccare su "Continua" una volta eseguito lo script
d) Lasciare le posizioni delle cartelle così come proposto e cliccare su "Avanti". (E' ovvio che potete personalizzare la vostra installazione ma vi consiglio di seguire quanto scritto nella guida!!!)
e) Selezionare Oracle9i Database 9.2.0.4.0 e cliccare su "Avanti"
f) Selezionare Enterprise Edition o Standard Edition in base alle esigenze e cliccare su "Avanti"
g) Cliccare su "Continua" al warning di errore
h) NON creare nessun database. Scegliere l'opzione Software Only e cliccare su "Avanti"
i) Cliccare su Installa


8) Quando viene chiesto di lanciare come root lo script root.sh editare tale file modificando il path di awk da /bin/awk a /usr/bin/awk:
AWK=/bin/awk
AWK=/usr/bin/awk

Lanciare da shell lo script contenuto in /opt/oracle/product/9.2.0.4:

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4
./root.sh

Dare invio alla richiesta
Enter the full pathname of the local bin directory: [/usr/local/bin]:

Una volta finita l'esecuzione dello script tornare all'installazione e cliccare su "OK"

9) Installazione conclusa. Cliccare su "Esci"


===================
CREAZIONE DATABASE
===================

1) Alla fine dell'installazione per poter creare un database bisogna lanciare il Database Configuration Assistant (comando dbca che si trova nella cartella bin della home di Oracle. Nel nostro caso /opt/oracle/product/9.2.0.4/bin). Ricordate di lavorare sempre dalla stessa shell da dove si è lanciata l'installazione in quanto sono settate le variabili d'ambiente.

Creazione del database
a) Per risolvere l'errore
symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
eseguire queste modifiche:
a.1) Andare nella Oracle Home e cancellare il link JRE:

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4
rm JRE

a.2) Creare il nuovo link:

Codice: Seleziona tutto

ln -s /usr/java/jre1.3.1_19 JRE

a.3) Dare il comando:

Codice: Seleziona tutto

cd JRE/bin

a.4) Dare il comando come utente root o con l'ausilio di sudo:

Codice: Seleziona tutto

ln -s java jre

a.5) Dare il comando:

Codice: Seleziona tutto

cd i386/native_threads

a.6) Dare il comando come utente root o con l'ausilio di sudo:

Codice: Seleziona tutto

ln -s java jre

a.7) Editare il file oraparam.ini contenuto nella Oracle Base cartella oui (nel nostro caso /opt/oracle/oui) modificando il parametro JRE_LOCATION con il percorso di jre usato per l'installazione
JRE_LOCATION=/usr/java/jre1.3.1_19

b) Andare nella cartella bin contenuta in Oracle Home

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/bin

c) Lanciare il comando:

Codice: Seleziona tutto

./dbca

Questo comando fa partire il Database Configuration Assistant


2) Creare il database in base alle vostre esigenze (es.: General Purpose). Impostare il SID

3) Impostare la/e password per gli account SYS e SYSTEM e cliccare su "Esci"


======================
CREAZIONE DEL LISTENER
======================

1) Configurare il LISTENER lanciando il Configuratore Oracle Net con il comando:
a) Andare nella cartella bin contenuta in Oracle Home

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/bin

b) Lanciare il comando:

Codice: Seleziona tutto

./netca

Questo comando fa partire il Configuratore Oracle Net


2) Scegliere:
Configurazione del listener-->Aggiungi-->Nome (potete lasciare quello proposto)-->Protocollo (cambiarlo in base alle esigenze o lasciare TCP che è quello proposto)-->Porta (cambiarla in base alle esigenze o lasciare 1521 che è quella proposta)-->Scegliere NO per creare il listener

Il listener è stato creato ed è in esecuzione

A questo punto la situazione è la seguente e potete vederla con il comando:

Codice: Seleziona tutto

ps ax

Sono presenti una serie di processi avviati con il nome ora_????_SIDsceltoDaVoi che indicano che il database è avviato e una riga "/opt/oracle/product/9.2.0.4/bin/tnslsnr LISTENER -inherit" che indica che il listener è in esecuzione.


======================================
TEST CONNESSIONE AL DATABASE (opzionale)
======================================

Si può provare a fare una connessione al database per testare che tutto funzioni. Possiamo usare TOAD da Windows, Tora da Linux, SQLPlus.

N.B.: per poter testare la connessione al DB sulla macchina locale bisogna aver configurato il tnsnames.ora che si trova in /opt/oracle/product/9.2.0.4/network/admin (in questa posizione si trova anche il listener.ora creato in precedenza) e la variabile d'ambiente TNS_ADMIN (per settarla: export TNS_ADMIN=/opt/oracle/product/9.2.0.4/network/admin).

A titolo di esempio un tnsnames.ora. Creare un file chiamato tnsnames.ora all'interno della cartella /opt/oracle/product/9.2.0.4/network/admin e modificarlo secondo i vostri parametri (state attenti a non usare editor "NON PURI" come OpenOffice o peggio Word perchè inseriscono caratteri strani come fine riga, ritorno a capo, ecc.. che causano errori nella lettura del file. Per questo tipo di cose usate vi, vim, pico, nano, gedit, kate, ecc...):

Codice: Seleziona tutto

SIDSceltoDavoi =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = Service_Name_Scelto_Da_Voi_in_fase_di_installazione_che_in_generale_è_uguale_al_SIDSceltoDaVoi)
    )
  )


Un esempio di connessione locale con SQLPlus è la seguente:

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/bin
./sqlplus SCOTT/TIGER@SIDSceltoDaVoi (la sintassi di questo comando è: username/password@SID)

Un altro esempio:

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/bin
./sqlplus SYSTEM/password_scelta_da_voi_in_fase_di_installazione@SIDSceltoDaVoi



========================================
AVVIO MANUALE DEL DATABASE E DEL LISTENER
========================================

Se tutto è andato bene si ha un database funzionante. Il problema è che riavviando il sistema bisogna avviare manualmente il listener, il database e settare le variabili d'ambiente. Si può verificare quanto detto riavviando il sistema operativo e lanciando il comando ps ax visto prima.

RIAVVIARE e ricordate di loggarvi sempre come utente oracle.

Al riavvio non si avrà la possibilità di connettersi. Vediamo come fare per automatizzare il tutto.

1) Editare il file /etc/oratab sostituendo alla N una Y in riferimento all'istanza del database che si vuole startare. Questo fa in modo che lanciando il comando dbstart viene letto il file /etc/oratab e si avviano le istanze contrassegnate con Y

2) Spostarsi nella cartella /opt/oracle/product/9.2.0.4/bin e lanciare il comando dbstart:

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/bin
./dbstart

Si dovrebbe avere un errore:
Can't find init file for Database SIDSceltoDaVoi

Per risolvere il problema rinominare il file init.ora contenuto nella cartella $ORACLE_HOME/dbs (/opt/oracle/product/9.2.0.4/dbs) con initSIDSceltoDaVoi

Stare attenti a rispettare i caratteri maiuscoli/minuscoli così come si è scritto il SID (es.: il SID è MIODB --> il file init.ora sarà rinominato initMIODB.ora);(es2.: il SID è miodb --> il file init.ora sarà rinominato initmiodb.ora). Un file di init simile con l'aggiunta di una serie di cifre è posizionato in $ORACLE_BASE/admin/SIDSceltoDaVoi/pfile (/opt/oracle/admin/SIDSceltoDaVoi/pfile):

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/dbs
mv init.ora initSIDSceltoDaVoi.ora

Rilanciare il comando dbstart:

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/bin
./dbstart

Ora il database è avviato. Per conferma dare il comando ps ax. Ci deve essere la serie di ora_????_SIDSceltoDaVoi.

N.B.: mi è capitato di ricreare un database e il file init.ora da rinominare non è stato creato. Il fatto di non avere il file porta al problema del non avvio del database. La soluzione a questo problema è copiare in $ORACLE_HOME/dbs (/opt/oracle/product/9.2.0.4/dbs) e rinominare il file init.ora.Serie_di_numeri o init.ora contenuto in $ORACLE_BASE/admin/SIDSceltoDaVoi/pfile (/opt/oracle/admin/SIDSceltoDaVoi/pfile)


3) Per avviare il listener procedere nel seguente modo:

Codice: Seleziona tutto

export ORACLE_HOME=/opt/oracle/product/9.2.0.4
cd /opt/oracle/product/9.2.0.4/bin
./lsnrctl start

Ora il listener è avviato. Per conferma dare il comando ps ax. Ci deve essere la riga /opt/oracle/product/9.2.0.4/bin/tnslsnr LISTENER -inherit.


==========================================================================
AVVIO AUTOMATICO DEL DATABASE E DEL LISTENER AL BOOT DEL SISTEMA OPERATIVO
==========================================================================

1) Per l'avvio automatico del listener e del database editare come utente root o con l'ausilio di sudo il file /etc/profile aggiungendo alla fine del file quanto segue:

Codice: Seleziona tutto

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/9.2.0.4
export TNS_ADMIN=/opt/oracle/product/9.2.0.4/network/admin
export LD_LIBRARY_PATH=/opt/oracle/product/9.2.0.4/lib
export PATH=$PATH:$ORACLE_HOME/bin
/opt/oracle/product/9.2.0.4/bin/dbstart
/opt/oracle/product/9.2.0.4/bin/lsnrctl start


A questo punto riavviando e loggandosi come utente oracle il database ed il listener saranno avviati. Si può controllare il tutto sempre con il comando ps ax.


=========================================================
AVVIO DELL'APPLICAZIONE ORACLE ENTERPRISE MANAGER CONSOLE
=========================================================

Questa applicazione permette la gestione del database (utenti, sicurezza, ecc..). Il comando si trova in /opt/oracle/product/9.2.0.4/bin e si chiama oemapp. A dire il vero oemapp è un comando per lanciare diverse applicazioni Oracle (oemapp nome_applicazione) ed in particolare l'opzione per lanciare l'Enterprise Manager Console è console. Ci sono due problemi da risolvere prima che l'applicazione parta:

ERRORE 1:

Codice: Seleziona tutto

cd /opt/oracle/product/9.2.0.4/bin
./oemapp console


dirname: invalid option -- 'p'
Usare «dirname --help» per ulteriori informazioni.
/opt/oracle/jre/1.1.8/bin/jre: 22: arch: not found
/opt/oracle/jre/1.1.8/bin/jre: 101: Syntax error: word unexpected (expecting ")")


RISOLUZIONE ERRORE 1:
1) Editare il file oemapp
2) Sostituire la riga: PATH=/opt/oracle/jre/1.1.8/bin:$PATH con la riga: PATH=/usr/java/jre1.3.1_19/bin:$PATH (in pratica facciamo puntare alla jre usata in fase di installazione


Ora se si lancia nuovamente il comando:

Codice: Seleziona tutto

./oemapp console

si ha il secondo errore.

ERRORE 2:
Unrecognized option: -nojit
Could not create the Java virtual machine.


RISOLUZIONE ERRORE 2:
1) Editare il file oemapp
2) Cancellare l'opzione -nojit contenuta nella riga: JRE="jre $JRENATIVEOPTION -nojit $ORACLE_OEM_JAVAMX $TRACE" (la nuova riga sarà: JRE="jre $JRENATIVEOPTION $ORACLE_OEM_JAVAMX $TRACE"


Ora se si lancia nuovamente il comando:

Codice: Seleziona tutto

./oemapp console

partirà l'applicazione Enterprise Manager Console.


=============================
COMANDI GENERICI DI CONTROLLO
=============================

Tutti i seguenti comandi sono contenuti all'interno della cartella /opt/oracle/product/9.2.0.4/bin:

1) Per arrestare il listener dare il comando

Codice: Seleziona tutto

./lsnrctl stop

2) Per vedere lo stato del listener dare il comando

Codice: Seleziona tutto

./lsnrctl status

3) Per arrestare il database dare il comando

Codice: Seleziona tutto

./dbshut