2005-06-27
Revision History | ||
---|---|---|
Revision v1.0 | 2005-06-22 | Revised by: MG |
For inclusion in TLDP: Completed XML article structure with articleinfo, section IDs for cross-referencing; technical, language, grammar and spelling review. | ||
Revision v1.0-pre1 | 2005-04-01 | Revised by: GP |
Added miscellaneous errors section. | ||
Revision v0.1 | 2005-03-25 | |
First publication. |
Questa guida è stata scritta a causa della mia frustrazione durante l'installazione di Oracle 9i su FC3. Fondamentalmente l'installazione della 9i su RAS 1,2,3 RH 9, FC1, FC2 è abbastanza ben documentata ma è difficile trovare qualcosa di significativo su FC3; qualcuno ha addirittura suggerito che installare Oracle 9i su FC3 fosse impossibile. Questo HOWTO cerca di condensare tutta la mia esperienza e tutti i miei ritrovamenti con qualsiasi informazione particolare per FC3, che prima era sparsa per tutto il web, in un documento conciso ma utile.
Spero troverete utile questa breve guida.
Se si deve installare Oracle 9i su FC3, si deve essere coscienti dei seguenti fatti:
Fedora non è *supportato ufficialmente* da Oracle Corp.
L'installazione di Oracle 9i su FC3 è difficile ma possibile.
Di Oracle 9i NON SI PUÒ fare il link con le librerie usate da gcc 3.4. Su FC3 è necessario usare le librerie compatte GCC di FC2.
Il metodo di installazione di Oracle 10 G NON FUNZIONA con 9i.
Questo HOWTO tratta prodotti RedHat >= FC3 o superiori o con versioni di gcc superiori a 2.9. Se si sta installando qualsiasi altro prodotto RedHat si possono leggere altre eccellenti guide, per esempio http://www.puschitz.com/OracleOnLinux.shtml e http://oracle-base.com/.
È da tenere presente anche che:
Questo HOWTO mira solo a fornire assistenza. Non è un documento UFFICIALE di Oracle.
Io non sono un DBA. Non contattatemi per questioni diverse dal contenuto di questo documento. Io non vi aiuterò a impostare il vostro database. Se avete bisogno di aiuto per quello, controllate i forum di Oracle.
Il prossimo passo sarà probabilmente la scrittura di qualche script di Bash o in Perl per automatizzare completamente questo tedioso, noioso e frustrante processo manuale ma dipenderà dal tempo a mia disposizione. Le vostre idee sono benvenute.
Si può trovare la versione più recente presso http://www.pagux.com/oracle9ionfedora3.html.
Mi affido a voi, lettori, per rendere questo HOWTO utile. Se avete qualsiasi domanda, correzione o commento, inviatemeli ed io cercherò di integrarli nella prossima revisione.
Copyright 2005 Gaurav Prasad
This HOWTO is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html.
This document is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. No liability for the contents of this document can be accepted. Use the concepts, examples and information at your own risk. There may be errors and inaccuracies, that could be damaging to your system. Proceed with caution, and although accidents are highly unlikely, the author(s) do not take any responsibility.
Linux is a registered trademark of Linus Torvalds.
All copyrights are held by their by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark. Naming of particular products or brands should not be seen as endorsements.
Se si ha Oracle 9i su un CD allora montare:
mount -r -o loop=/dev/loop0
ora9id1.iso Disk1/
Altrimenti scaricarlo da http://www.oracle.com/technology/software/products/oracle9i/htdocs/linuxsoft.html.
Estrarre tutti e tre i seguenti file:
gunzip ship_9204_linux_disk1.cpio.gz
cpio -idmv -I
ship_9204_linux_disk1.cpio
Non si deve dimenticare l'opzione -I
o si otterranno errori durante l'estrazione.
Questo comando espanderà l'archivio cpio nella directory Disk1. Ripetete il processo per gli altri due archivi.
Eseguire i seguenti comandi come root:
# groupadd oinstall # groupadd dba # groupadd oper # groupadd apache # useradd -g oinstall -G dba oracle # passwd oracle
Impostare la password per l'utente oracle.
La destinazione finale del software sarà :
# mkdir /u01 /u02 # chown oracle.dba /u01 /u02 # chmod 755 /u01 /u02
Fare il log in come utente di oracle:
su -
oracle
Modificare .bash_profile nella directory home di oracle ed aggiungere quanto segue, per esempio utilizzando vim:
########## Oracle Variables ########## echo " Welcome to oracle"; ORACLE_BASE=/u01/app/oracle ORACLE_OWNER=oracle; export ORACLE_OWNER ORACLE_TERM=xterm; export ORACLE_TERM ORACLE_HOME=/u01/app/oracle/product/9.2.0.1.0 ORACLE_SID=ORTD LD_PRELOAD=$HOME/libcwait.so export DISPLAY=172.28.66.39:0.0 PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/network/lib CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export CLASSPATH LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL THREADS_FLAG=native; export THREADS_FLAG TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH LD_PRELOAD ########## End of Oracle variables ##########
Aggiungere le seguenti linee al file /etc/sysctl.conf:
kernel.shmmax = 2147483648 kernel.shmmni = 128 kernel.shmall = 2097152 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000
Si possono inoltre aggiungere le seguenti linee al file /etc/security/limits.conf:
oracle soft nofile 65536 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384
L'aggiunta di queste linee richiede il riavvio prima che le nuove impostazioni abbiano effetto.
Da Fedora Core DUE:
compat-libstdc++-7.3-2.96.126.i386.rpm
compat-libstdc++-devel-7.3-2.96.126.i386.rpm
compat-gcc-7.3-2.96.126.i386.rpm
compat-gcc-c++-7.3-2.96.126.i386.rpm
Non sovrascrivere i pacchetti esistenti | |
---|---|
Assicurarsi di mantenere l'installazione esistente di GCC, oppure una gran parte del software non funzionerà o non potrà essere più compilato. Nel caso questi pacchetti siano già installati sul sistema con numeri di versioni più recenti, usare rpm |
Dal sotto-albero di Fedora Core TRE, prendete il pacchetto compat-db.
Se non si installano le librerie GCC compat come sopra si avranno un'infinità di errori di link.
Mettete prima gcc296 e g++296 nella variabile $PATH creando i seguenti link simbolici:
# mv /usr/bin/gcc /usr/bin/gcc323 # mv /usr/bin/g++ /usr/bin/g++323 # ln -s /usr/bin/gcc296 /usr/bin/gcc # ln -s /usr/bin/g++296 /usr/bin/g++
È da notare che se il sistema sarà già stato aggiornato, le versioni GCC potrebbero essere differenti.
Prima di eseguire l'installatore, allo scopo di evitare strani errori eseguire quanto segue:
In /home/oracle,creare un file chiamato libwait.c e compilare come descritto qui sotto:
Creare un file chiamato libcwait.c nella directory home dell'utente oracle per evitare di avere un errore quando si esegue l'installatore di Oracle. Il file libcwait.c dovrebbe contenere il seguente testo: /* gcc -O2 -shared -o $HOME/libcwait.so -fpic $HOME/libcwait.c */ #include #include #include Deploying Oracle 9i on Red Hat Enterprise Linux AS 3 Page 11 #include pid_t __libc_wait (int *status) { int res; asm volatile ("pushl %%ebx\n\t" "movl %2, %%ebx\n\t" "movl %1, %%eax\n\t" "int $0x80\n\t" "popl %%ebx" : "=a" (res) : "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0), "S" (0)); return res; } Next, compile this file in the oracle user's home directory by executing the following command: gcc -02 -shared -o $HOME/libcwait.so -fpic $HOME/libwait.c
gcc -shared -o
libcwait.so libcwait.c -fpic -O
Poi aggiungere questa libreria all'ambiente dell'utente del database:
export LD_PRELOAD
=/home/oracle/libcwait.so
In precedenza è stata messa una linea simile in .bash_profile.
Eseguire i seguenti comandi come utente oracle:
oracle@9iserver ~> xhost +localhost oracle@9iserver ~> export DISPLAY=localhost:0.0
Ora è possibile collegarsi al proprio desktop o volendo si può eseguire l'installazione da remoto, ad esempio usando VNC. Oppure, per esempio, si può eseguire l'installatore dal desktop di Windows
Eseguire l'applicazione d'installazione grafica:
/path/to/oracle/Disk1/runInstaller
Ora proseguire con Graphical setup (se non si è sicuri scegliere Standard database). Da qui il resto del processo d'installazione è ovvio.
Ora l'installazione dovrebbe procedere senza alcun errore di link ma alla fine si avrà un errore:
Parameter "nodeinfo" = NO_VALUE Agent Service Failed
Per correggerlo, eseguire quanto segue per avviare la procedura guidata dopo che l'impostazione è finita:
netca &
Ora cambiare in $ORACLE_HOME
ed eseguire ./lsnrctl start
.
Verificare che il processo sia in esecuzione:
ps afx
| grep LISTEN
Allo scopo di avviare il server Oracle automaticamente al momento dell'avvio del sistema, creare il file /etc/init.d/oracle come segue:
#!/bin/bash # # Run-level Startup script for the Oracle Instance and Listener # # chkconfig: 345 91 19 # description: Startup/Shutdown Oracle listener and instance ORA_HOME="/u01/app/oracle/product/9.2.0.1.0" ORA_OWNR="oracle" # if the executables do not exist -- display error if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ] then echo "Oracle startup: cannot start" exit 1 fi # depending on parameter -- startup, shutdown, restart # of the instance and listener or usage display case "$1" in start) # Oracle listener and instance startup echo -n "Starting Oracle: " su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start" su - $ORA_OWNR -c $ORA_HOME/bin/dbstart touch /var/lock/subsys/oracle echo "OK" ;; stop) # Oracle listener and instance shutdown echo -n "Shutdown Oracle: " su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop" su - $ORA_OWNR -c $ORA_HOME/bin/dbshut rm -f /var/lock/subsys/oracle echo "OK" ;; reload|restart) $0 stop $0 start ;; *) echo "Usage: $0 start|stop|restart|reload" exit 1 esac exit 0
Ora eseguire chkconfig oracle per l'aggiornamento delle informazioni dei livelli di esecuzione.
Provare ora service oracle start|stop|restart
per verificare che tutto funzioni come atteso.
Se si è arrivati a questo punto senza errori: congratulazioni. Altrimenti, verificare Section 9 per suggerimenti sulla soluzione dei problemi.
ERROR:
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux Error: 2: No such file or directory
Questo errore capita quando si fa un riavvio e cercare di fare il login. Si ottengono molti errori quando l'istanza non è montata/avviata automaticamente.
Soluzione:
Controllare /etc/oratab ed assicurarsi che *:/opt/oracle/OraHome1
e ordb:/opt/oracle/OraHome1
siano impostati a "Y" (YES).
Provare ad inizializzare il database: $ORACLE_HOME/bin/dbstart.
ERROR:
No start entry for SID * at /opt/oracle/OraHome1 in /etc/oratab
Potrebbe essere causato da un baco nello script dbstart che cerca il file sid nel posto sbagliato.
Soluzione:
cp $ORACLE_BASE/admin/$ORACLE_SID/pfile/init_*.ora \
$ORACLE_HOME/dbs/init$ORACLE_SID.ora
Come utente oracle:
$ sqlplus SQL> create pfile from spfile; SQL> exit
Eseguire lo script dbstart: $ORACLE_HOME/bin/dbstart.