Unfortunately we experienced some problems, on Logminer and on performance. So I wanted to have a clean DB install on a VM ware image so that I could play around a little with it to see if I could get it to work properly on a clean database install.
Installing DB 9i turned out not that simple, when done in the train having just the install-disks. But when having your friends Google and Metalink around the task turns out not too hard.
I used two inputs:
- Installing Oracle9i 32-bit on Red Hat Enterprise Linux Advanced Server 4, written by Werner Puschitz (thanks Werner)
- Metalink note 303859.1
Packages
First check out if you have the required packages. The following are required:
- compat-db-4.1.25-9
- compat-gcc-32-3.2.3-47.3
- compat-gcc-32-c++-3.2.3-47.3
- compat-oracle-rhel4-1.0-3
- compat-libcwait-2.0-1
- compat-libgcc-296-2.96-132.7.2
- compat-libstdc++-296-2.96-132.7.2
- compat-libstdc++-33-3.2.3-47.3
- gnome-libs-1.4.1.2.90-44
- gnome-libs-devel-1.4.1.2.90-44
- libaio-devel-0.3.102-1
- libaio-0.3.102-1
- make-3.80-5
- openmotif21-2.1.30-11
- xorg-x11-deprecated-libs-devel-6.8.1-23.EL
- xorg-x11-deprecated-libs-6.8.1-23.EL
This can easily be checked by issueing:
rpm -q make \ compat-db \ compat-gcc-32 \ compat-gcc-32-c++ \ compat-oracle-rhel4 \ compat-libcwait \ compat-libgcc-296 \ compat-libstdc++-296 \ compat-libstdc++-33 \ gcc \ gcc-c++ \ gnome-libs \ gnome-libs-devel \ libaio-devel \ libaio \ make \ openmotif21 \ xorg-x11-deprecated-libs-devel \ xorg-x11-deprecated-libs
In my case I lacked the libraries:
package compat-oracle-rhel4 is not installed
package compat-libcwait is not installed
package gnome-libs-devel is not installed
package libaio-devel is not installed
package xorg-x11-deprecated-libs-devel is not installed
For the X11 stuff I had several dependencies that I resolved with:
rpm -Uhv fontconfig-devel-2.2.3-7.i386.rpm \ pkgconfig-0.15.0-3.i386.rpm \ xorg-x11-libs-6.8.2-1.EL.13.37.i386.rpm \ freetype-devel-2.1.9-1.i386.rpm \ zlib-devel-1.2.1.2-1.2.i386.rpm \ xorg-x11-xfs-6.8.2-1.EL.13.37.i386.rpm \ xorg-x11-6.8.2-1.EL.13.37.i386.rpm rpm -Uhv xorg-x11-deprecated-libs-devel-6.8.2-1.EL.13.37.i386.rpm \ xorg-x11-devel-6.8.2-1.EL.13.37.i386.rpm
Then Libaio-devel:
rpm -ihv libaio-devel-0.3.105-2.i386.rpmFor compat-oracle-rhel4 you need an Oracle patch: 4198954 from metalink.
This one installs:
- rpm -ihv compat-oracle-rhel4-1.0-5.i386.rpm
- rpm -ihv compat-libcwait-2.1-1.i386.rpm
xorg-x11-deprecated-libs-devel.
For the gnome library I also had some depencies, that I resolved by:
rpm -ihv gnome-libs-devel-1.4.1.2.90-44.2.i386.rpm \ ORBit-devel-0.5.17-14.i386.rpm \ esound-devel-0.2.35-2.i386.rpm \ gtk+-devel-1.2.10-33.i386.rpm \ imlib-devel-1.9.13-23.i386.rpm \ glib-devel-1.2.10-15.i386.rpm \ indent-2.2.9-6.i386.rpm \ alsa-lib-devel-1.0.6-5.RHEL4.i386.rpm \ audiofile-devel-0.2.6-1.el4.1.i386.rpm \ glib-devel-1.2.10-15.i386.rpm \ libjpeg-devel-6b-33.i386.rpm \ libtiff-devel-3.6.1-10.i386.rpm \ libungif-devel-4.1.3-1.el4.2.i386.rpm
What I did was just doing the rpm -ihv gnome-libs-devel-1.4.1.2.90-44.2.i386.rpm (that was the one I had on my dvd) and then added all the dependent rpms that it mentioned. In your case you might not need the alsa and audio libraries.
Change Sysctl.conf
There are a few settings on kernel level to set. Below my sysctl.conf:
# Kernel sysctl configuration file for Red Hat Linux # kernel.hostname = rhel4vm.darwin-it.local kernel.domainname = darwin-it.local # Controls IP packet forwarding net.ipv4.ip_forward = 0 # Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. kernel.core_uses_pid = 1 kernel.sem = 256 32000 100 142 kernel.shmmax = 4294967295 kernel.shmmni = 100 kernel.shmall = 2097152 #fs.file-max = 206173 fs.file-max = 327679 net.ipv4.ip_local_port_range = 1024 65000 kernel.msgmni = 2878 kernel.msgmax = 8192 kernel.msgmnb = 65535 net.core.rmem_default = 262144 net.core.rmem_max = 262144 net.core.wmem_default = 262144 net.core.wmem_max = 262144
Pay attention to the kernel.shmmax, shmmni, shmall (shared memory), fs.file-max (max filehandles), kernel.sem (min, max semaphores), and kernel.hostname + domainname.
Swap space
You need at least the double of your machines memory as a swapspace. To check your memory you can do:
grep MemTotal /proc/meminfo
To check your swapspace:
cat /proc/swaps
You can add an extra drive and format it as swapspace. To add temporary swapspace you can use the following procedure to add for example 1GB swapspace:
su - root dd if=/dev/zero of=/u01/swapfile01 bs=1k count=1000000 chmod 600 /u01/swapfile01 mkswap /u01/swapfile01 swapon /u01/swapfile01
To remove it again:
su - root swapoff /u01/swapfile01 rm /u01/swapfile01
Temp space
For the Temp space, if /tmp does not have enough space you can do:
export TEMP=/# used by Oracle export TMPDIR=/ # used by Linux programs like the linker "ld"
Create Users
I had a Virtual Machine with RHEL4 already installed and an pre-existing Oracle user. If you haven't then use the following procedure to add the oracle user:
su - root groupadd dba # group of users to be granted with SYSDBA system privilege groupadd oinstall # group owner of Oracle files useradd -c "Oracle software owner" -g oinstall -G dba oracle passwd oracleCreate Oracle Directories
The following directories are needed for the install, with the specified rights. Check if your filesystems have enough space. A complete installation with a starter database will need about 2,5GB. With the addition of some temp space I would be on the save side and reserve at least 5GB.
su - root mkdir -p /u01/app/oracle/product/9.2.0 chown -R oracle.oinstall /u01 mkdir /var/opt/oracle chown oracle.dba /var/opt/oracle chmod 755 /var/opt/oracle
Setting Oracle Environment variables
There are few settings important to install the database. Especially the LD_ASSUME_KERNEL variable that needs to be on 2.4.19.
So I created a little environment script oraenv.sh:
export LD_ASSUME_KERNEL=2.4.19 # for RHEL AS 4 export TMP=/u01/oracle/tmp export TMPDIR=/u01/oracle/tmp # Oracle Environment export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/9.2.0 export ORACLE_SID=ORCL export NLS_LANG=AMERICAN; export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH # Set shell search paths export PATH=$PATH:$ORACLE_HOME/bin
The ORACLE_HOME depenent variables are merely for being able to use the database after installing it.
You can run the script by:
. ./oraenv.sh
Do not forget the extra dot '.' in front of it, this will cause the set parameters exported to the calling shell.
Install the database
With this I could install the 9.2.0.4 database with the cd's I got from: http://www.oracle.com/technology/software/products/oracle9i/index.html
Then do not forget to upgrade it to 9.2.0.8. Look for the patch 4547809 in Metalink.
During the run of catpatch, I got time outerrors on the sys.XMLType and sys.XMLTypePI objects. But checking afterwards they turned out to be created and valid.