Install Software Packages

Oracle 10g requires some software packages that may not have been installed on your system. Run the following yum command to install them:

> yum install setarch tcl tcl-devel openmotif openmotif-devel compat-db compat-libstdc++-33 compat-libf2c-32 compat-gcc-32 compat-gcc-32-c++ compat-libstdc++-296 compat-libgcc-296 libaio libaio-devel xorg-x11-deprecated-libs

You'll also need to download the following package from rpmfind and install it using rpm -i. This package is also available in the Fedora Core 4 distribution.

> openmotif21-2.1.30-14.i386.rpm

Pretend to be Red Hat Enterprise Linux ES Release 4

Oracle 10g is only officially supported on a few versions of Redhat Linux and UnitedLinux. The installer checks /etc/redhat-release to see exactly what version of Redhat Linux you are running. To pretend that you are running Red Hat Enterprise Linux ES Release 4, run the following commands (as root):

> mv /etc/redhat-release /etc/redhat-release.old
> echo "redhat-4" > /etc/redhat-release

Configure the Kernel

Oracle 10g requires that you at least temporarily increase the values of a couple of kernel parameters. To temporarily increase these values, follow these instructions (as root):

> echo 65536 > /proc/sys/fs/file-max
> echo 2097152 > /proc/sys/kernel/shmall
> echo 2147483648 > /proc/sys/kernel/shmmax
> echo 4096 > /proc/sys/kernel/shmmni
> echo "250 32000 100 128" > /proc/sys/kernel/sem

Install Oracle

Now, log in as the oracle user.

Since Oracle 10.2.0 uses a graphical installer, you need to be running X Windows or point the DISPLAY environment variable to an X Windows session running somewhere.

I have had problems with the graphical installer on enlightenment and fluxbox window managers in the past, though they may work for you.

If you have a CD, mount it and cd to the mount point. If you have a zip distribution, extract the file using:

> unzip 10201_database_linux32.zip

Change directories to the database directory.
Type ./runInstaller
On the Installation Method screen, accept the default Basic Installation. Change the Global Database Name from "orcl" to "ora1". Enter a password in the Database Password and Confirm Password boxes for the SYS, SYSTEM, SYSMAN and DBSNMP accounts. Be sure to enter a password that starts with a letter, not a number. Click Next
The window will go away and a Preparing to install dialog with a progress bar will appear for a while. Then it will go away and another screen will appear.
On this screen, the installer will do a system test to make sure that the system configuration meets the installer's requirements. Your system may not meet the Network or Memory requirements. You can safely ignore these warnings. Click Next
If a dialog pops up indicating that some of the prerequisite checks have failed, click Yes to proceed.
On the Summary screen, click Install
The Install screen will show the progress of the installation
When the installation is about 30% complete, click Stop Installation and edit the file /u01/app/oracle/product/10.2.0/bin/gennttab and change the lines:

>     LIB=`$ECHO ${TtoLIB} | $SED 's/ /\\
>     /g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
>     INI=`$ECHO ${TtoINI} | $SED 's/ /\\
>     /g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
>     BAS=`$ECHO ${TtoBAS} | $SED 's/ /\\
>     /g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`

To:

>     LIB=`$ECHO ${TtoLIB} | $SED 's/ /\n/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
>     INI=`$ECHO ${TtoINI} | $SED 's/ /\n/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`
>     BAS=`$ECHO ${TtoBAS} | $SED 's/ /\n/g' | $GREP "^${T}:" | $AWK -F: '{print $2}'`

Then click No to continue the installation.
Be sure to do this before the linking phase starts or the installation will stall during the linking phase.
When installation is finished, the Configuration Assistants screen will show the progress of the initial configuration processes.
A Database Configuration Assistant dialog should pop up, displaying the progress of the initial database configuration.
When database creation is complete, a dialog will pop up with a summary. Click OK.

A dialog will pop up asking you to run some scripts as root. Just follow the directions on the dialog (they may take a while to complete) and click Ok
On the End Of Installation screen click Exit
A dialog will pop up asking: Do you really want to exit? Click Yes.
Post-Installation

For some reason, despite setting the oracle user's umask, the installtion creates the ORACLE_HOME directory and all subdirectories of it with 750 permissions, so any user that isn't in the oinstall group can't read or execute anything inside of them including the client programs like sqlplus and files like tnsnames.ora. The installation also creates many of the files without read or execute permissions for users not in the oinstall group as well, including tnsnames.ora. The cleanest solution is to add any users that need to run Oracle client programs to the oinstall group.

Sometimes, for some reason, during an installation, the tnslistener does not get configured to listen for connections to the ora1 database. Take a look at /u01/app/oracle/product/10.2.0/network/admin/listener.ora and make sure that there is an entry like the following:

>     SID_LIST_LISTENER =
>       (SID_LIST =
>         (SID_DESC =
>           (SID_NAME = PLSExtProc)
>           (ORACLE_HOME = /u01/app/oracle/product/10.2.0)
>           (PROGRAM = extproc)
>         )
>         (SID_DESC =
>           (SID_NAME = ora1)
>           (ORACLE_HOME = /u01/app/oracle/product/10.2.0)
>         )
>       )

The second SID_DESC section may be missing from your listener.ora file. If it is, update your listener.ora file, adding the necessary section.

You'll also need to modify the line:

>           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

> > To read:

> > >           (ADDRESS = (PROTOCOL = IPC)(KEY = ORA1))

> > During the installation, several ancillary processes were started. You can shut some of them down by executing the following commands (as oracle):

> > > isqlplusctl stop
> > > emctl stop dbconsole
> > > emctl stop agent

> > At this point, only the database and tns listener should be running.