497 lines
22 KiB
Plaintext
497 lines
22 KiB
Plaintext
|
Oracle 9i under Fedora Core 3 - Installation HOWTO
|
|||
|
|
|||
|
Gaurav Prasad
|
|||
|
|
|||
|
|
|||
|
<gauravpd at gmail dot com>
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
|
|||
|
This tutorial describes how to install Oracle 9i on Fedora Core 3 or greater.
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
Table of Contents
|
|||
|
1. 1. Introduction
|
|||
|
1.1. What you need to know
|
|||
|
1.2. Acknowledgments
|
|||
|
1.3. Availability and Feedback
|
|||
|
1.4. Licensing Information and Liability
|
|||
|
|
|||
|
|
|||
|
2. Get Oracle 9i
|
|||
|
2.1. CD Installation
|
|||
|
2.2. Download
|
|||
|
2.3. Install
|
|||
|
|
|||
|
|
|||
|
3. Prepare for Configuration
|
|||
|
3.1. Create Users and Groups
|
|||
|
3.2. Create Directories
|
|||
|
|
|||
|
|
|||
|
4. Set Environment Variables
|
|||
|
5. Set Kernel Parameters
|
|||
|
5.1. Edit /etc/sysctl.conf
|
|||
|
5.2. Edit /etc/security/limits.conf
|
|||
|
|
|||
|
|
|||
|
6. Install GCC 2.9 Compat libraries
|
|||
|
6.1. Install GCC 2.96 Compat packages
|
|||
|
6.2. Create symbolic links
|
|||
|
|
|||
|
|
|||
|
7. Run Installer
|
|||
|
7.1. Apply the libwait.c patch
|
|||
|
7.2. Configure the Display
|
|||
|
7.3. Start the Installation
|
|||
|
7.4. Fix nodeinfo
|
|||
|
|
|||
|
|
|||
|
8. Create a Startup Script
|
|||
|
9. Miscellaneous Errors
|
|||
|
|
|||
|
1. 1. Introduction
|
|||
|
|
|||
|
1.1. What you need to know
|
|||
|
|
|||
|
This tutorial was written due to my frustration on installing Oracle 9i on
|
|||
|
FC3. Basically 9i installation on RAS 1,2,3 RH 9, FC1, FC2 is documented
|
|||
|
fairly well but it is hard to find anything worthwhile on FC3; some people
|
|||
|
even suggested that installing Oracle 9i on FC3 is not possible. This HOWTO
|
|||
|
attempts to condense all my experience and findings with any such info
|
|||
|
peculiar to FC3, which was before scattered all over the web, into one
|
|||
|
concise but useful document.
|
|||
|
|
|||
|
I hope you will find this short tutorial useful.
|
|||
|
|
|||
|
If you need to install Oracle 9i on FC3, you should be aware of the following
|
|||
|
facts:
|
|||
|
|
|||
|
1. Fedora is not *Officially Supported* by Oracle Corp.
|
|||
|
|
|||
|
2. Oracle 9i installation is difficult but possible on FC3.
|
|||
|
|
|||
|
3. Oracle 9i CANNOT be linked with the libraries used by gcc 3.4. On FC3 you
|
|||
|
need to use the FC2 GCC compat libraries.
|
|||
|
|
|||
|
4. The Oracle 10 G installation method does NOT WORKS with 9i.
|
|||
|
|
|||
|
5. This HOWTO deals with RedHat products >= FC3 or higher or gcc version
|
|||
|
greater than 2.9. If you are installing any other RedHat product you
|
|||
|
might want to have a look at other excellent tutorials, for instance
|
|||
|
[http://www.puschitz.com/OracleOnLinux.shtml] http://www.puschitz.com/
|
|||
|
OracleOnLinux.shtml and [http://oracle-base.com/] http://oracle-base.com
|
|||
|
/.
|
|||
|
|
|||
|
|
|||
|
Also keep in mind:
|
|||
|
|
|||
|
1. This HOWTO aims only to assist you. This is not an OFFICIAL Oracle
|
|||
|
document.
|
|||
|
|
|||
|
2. I am not a DBA. Please do not contact me for matters other than the
|
|||
|
content of this document. I will not help you to set up your database. If
|
|||
|
you need help with that, check the Oracle forums.
|
|||
|
|
|||
|
3. The next step for me is probably to write some Bash or Perl scripts to
|
|||
|
fully automate this tedious and boring, frustrating, manual process but
|
|||
|
that depends on spare time I get. Your ideas are welcome.
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
1.2. Acknowledgments
|
|||
|
|
|||
|
I would like to thank Jean Fran<61>ois for helping me out with the most tricky
|
|||
|
parts.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.3. Availability and Feedback
|
|||
|
|
|||
|
The latest version can be found at [http://www.pagux.com/
|
|||
|
oracle9ionfedora3.html] http://www.pagux.com/oracle9ionfedora3.html.
|
|||
|
|
|||
|
I rely on you, the reader, to make this HOWTO useful. If you have any
|
|||
|
suggestions, corrections or comments, please send them to me and I will try
|
|||
|
to incorporate them in the next revision.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
1.4. Licensing Information and Liability
|
|||
|
|
|||
|
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] 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.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2. Get Oracle 9i
|
|||
|
|
|||
|
2.1. CD Installation
|
|||
|
|
|||
|
If you got Oracle 9i on a CD then mount it:
|
|||
|
|
|||
|
mount -r -o loop=/dev/loop0 ora9id1.iso Disk1/
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.2. Download
|
|||
|
|
|||
|
Otherwise download it from [http://www.oracle.com/technology/software/
|
|||
|
products/oracle9i/htdocs/linuxsoft.html] http://www.oracle.com/technology/
|
|||
|
software/products/oracle9i/htdocs/linuxsoft.html.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
2.3. Install
|
|||
|
|
|||
|
Extract all three files:
|
|||
|
|
|||
|
gunzip ship_9204_linux_disk1.cpio.gz
|
|||
|
|
|||
|
cpio -idmv -I ship_9204_linux_disk1.cpio
|
|||
|
|
|||
|
Don't forget the -I option or you will get errors during the extraction.
|
|||
|
|
|||
|
This command will expand the cpio archive to the Disk1 directory. Repeat the
|
|||
|
process for the other two archives.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3. Prepare for Configuration
|
|||
|
|
|||
|
3.1. Create Users and Groups
|
|||
|
|
|||
|
Execute the following commands as root:
|
|||
|
# groupadd oinstall
|
|||
|
# groupadd dba
|
|||
|
# groupadd oper
|
|||
|
# groupadd apache
|
|||
|
# useradd -g oinstall -G dba oracle
|
|||
|
# passwd oracle
|
|||
|
|
|||
|
Set the password for user oracle.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
3.2. Create Directories
|
|||
|
|
|||
|
The final destination of the software will be here:
|
|||
|
# mkdir /u01 /u02
|
|||
|
# chown oracle.dba /u01 /u02
|
|||
|
# chmod 755 /u01 /u02
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
4. Set Environment Variables
|
|||
|
|
|||
|
Log in as the oracle user:
|
|||
|
|
|||
|
su - oracle
|
|||
|
|
|||
|
Edit .bash_profile in oracle's home directory and add the following, for
|
|||
|
instance using 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 ##########
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5. Set Kernel Parameters
|
|||
|
|
|||
|
5.1. Edit /etc/sysctl.conf
|
|||
|
|
|||
|
Add the following lines to the /etc/sysctl.conf file:
|
|||
|
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
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
5.2. Edit /etc/security/limits.conf
|
|||
|
|
|||
|
Additionally the following lines can be added to the /etc/security/
|
|||
|
limits.conf file:
|
|||
|
oracle soft nofile 65536
|
|||
|
oracle hard nofile 65536
|
|||
|
oracle soft nproc 16384
|
|||
|
oracle hard nproc 16384
|
|||
|
|
|||
|
Adding lines into these files requires a reboot before the new settings take
|
|||
|
effect.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6. Install GCC 2.9 Compat libraries
|
|||
|
|
|||
|
6.1. Install GCC 2.96 Compat packages
|
|||
|
|
|||
|
From Fedora Core TWO:
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>compat-libstdc++-7.3-2.96.126.i386.rpm
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>compat-libstdc++-devel-7.3-2.96.126.i386.rpm
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>compat-gcc-7.3-2.96.126.i386.rpm
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>compat-gcc-c++-7.3-2.96.126.i386.rpm
|
|||
|
|
|||
|
|
|||
|
Caution Don't overwrite existing packages
|
|||
|
<EFBFBD> Make sure that you keep your existing GCC installation, or a large
|
|||
|
part of your software will not work or can not be compiled any more.
|
|||
|
In case these packages are already installed on your system with
|
|||
|
newer version numbers, use rpm -i --force to install the older ones
|
|||
|
next to the newer ones.
|
|||
|
|
|||
|
From the Fedora Core THREE subtree, get the compat-db package.
|
|||
|
|
|||
|
If you don't install GCC compat libraries as above you get a zillion linking
|
|||
|
errors.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
6.2. Create symbolic links
|
|||
|
|
|||
|
Put gcc296 and g++296 first in your $PATH variable by creating the following
|
|||
|
symbolic links:
|
|||
|
# 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++
|
|||
|
|
|||
|
Note that should you already have upgraded your system, GCC versions might be
|
|||
|
different.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
7. Run Installer
|
|||
|
|
|||
|
7.1. Apply the libwait.c patch
|
|||
|
|
|||
|
Before running the installer, do the following in order to overcome some
|
|||
|
weird errors:
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>In /home/oracle,create a file name libwait.c and as described below and
|
|||
|
compile it :
|
|||
|
Ceate a file called libcwait.c in the
|
|||
|
oracle
|
|||
|
user's home directory to avoid getting
|
|||
|
an error when running the Oracle installer. The libcwait.c file should contain the
|
|||
|
following text:
|
|||
|
/*
|
|||
|
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
|
|||
|
|
|||
|
<EFBFBD><EFBFBD>*<2A>Then add this library to the environment of the database user:
|
|||
|
|
|||
|
export LD_PRELOAD=/home/oracle/libcwait.so
|
|||
|
|
|||
|
Earlier, we put a similar line in .bash_profile.
|
|||
|
|
|||
|
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
7.2. Configure the Display
|
|||
|
|
|||
|
Execute the following commands as oracle User :
|
|||
|
oracle@9iserver ~> xhost +localhost
|
|||
|
oracle@9iserver ~> export DISPLAY=localhost:0.0
|
|||
|
|
|||
|
You can now connect to your desktop or optionally run the installation
|
|||
|
remotely, for instance using VNC.for instance running the installer from your
|
|||
|
Windows desktop
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
7.3. Start the Installation
|
|||
|
|
|||
|
Start the graphical installation application:
|
|||
|
|
|||
|
/path/to/oracle/Disk1/runInstaller
|
|||
|
|
|||
|
Now carry with Graphical setup (if you are not sure choose Standard
|
|||
|
database). From here the rest of the installation process is obvious.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
7.4. Fix nodeinfo
|
|||
|
|
|||
|
Now installation should proceed without any linking errors but you will get
|
|||
|
one error in the end:
|
|||
|
Parameter "nodeinfo" = NO_VALUE
|
|||
|
Agent Service Failed
|
|||
|
|
|||
|
In order to fix this, run the following for starting the wizard after setup
|
|||
|
has finished:
|
|||
|
|
|||
|
netca &
|
|||
|
|
|||
|
Now change into $ORACLE_HOME and run ./lsnrctl start.
|
|||
|
|
|||
|
Check that the process is running:
|
|||
|
|
|||
|
ps afx | grep LISTEN
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
8. Create a Startup Script
|
|||
|
|
|||
|
In order for the Oracle server to start automatically at system boot time,
|
|||
|
create the file /etc/init.d/oracle like this:
|
|||
|
#!/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
|
|||
|
|
|||
|
Now run chkconfig oracle for updating the run level information.
|
|||
|
|
|||
|
Try service oracle start|stop|restart to check that everything works as
|
|||
|
expected now.
|
|||
|
|
|||
|
If you reached this step without errors: congratulations. Else, check Section
|
|||
|
9 for troubleshooting suggestions.
|
|||
|
-----------------------------------------------------------------------------
|
|||
|
|
|||
|
9. Miscellaneous Errors
|
|||
|
|
|||
|
ERROR:
|
|||
|
ORA-01034: ORACLE not available
|
|||
|
ORA-27101: shared memory realm does not exist
|
|||
|
Linux Error: 2: No such file or directory
|
|||
|
|
|||
|
This error happens when you reboot and try to login. You will get lots of
|
|||
|
errors when the database instance is not mounted/started automatically.
|
|||
|
|
|||
|
Solution:
|
|||
|
|
|||
|
1. Check /etc/oratab and make sure that *:/opt/oracle/OraHome1 and ordb:/opt
|
|||
|
/oracle/OraHome1 are set to "Y" (YES).
|
|||
|
|
|||
|
2. Try to initialize the database: $ORACLE_HOME/bin/dbstart.
|
|||
|
|
|||
|
|
|||
|
ERROR:
|
|||
|
No start entry for SID * at /opt/oracle/OraHome1 in /etc/oratab
|
|||
|
|
|||
|
This might be caused by a bug in the dbstart script which searches for the
|
|||
|
sid file in the wrong place.
|
|||
|
|
|||
|
Solution:
|
|||
|
|
|||
|
1. cp $ORACLE_BASE/admin/$ORACLE_SID/pfile/init_*.ora \
|
|||
|
|
|||
|
$ORACLE_HOME/dbs/init$ORACLE_SID.ora
|
|||
|
|
|||
|
2. As user oracle:
|
|||
|
$ sqlplus
|
|||
|
SQL> create pfile from spfile;
|
|||
|
SQL> exit
|
|||
|
|
|||
|
3. Run the dbstart script: $ORACLE_HOME/bin/dbstart.
|
|||
|
|
|||
|
|