Oracle Database 10g Install and Upgrade

Just a few random notes on my second or third time installing and upgrading the latest Oracle Database 10g distro from Oracle (I’m currently working my way through the Oracle-approved self-study book for the OCA test, “Oracle Database 10g OCP Certification All-In-One Exam Guide”).

This was all done in a CentOS 4.4 VMWare Server guest, running on CentOS 4.4 itself. Prior to beginning “yum update” was run on the guest to make sure all the latest updates were applied. I went with a “Custom Install, during which the full X-Windows, Gnome Desktop, and Legacy Development package groups were selected during installation of the OS, to make sure the prerequisites were there for running Oracle’s gui installer. You also need to check off sysstat in the System Admin group, as it is not installed by default. Use the standard “Server” install and you’re going to waste alot of time installing these packages individually.

The latest download available from Oracle Technology Network is, which a couple of months ago would have been just fine for me. The DST issue changed that. The “recommended” DST patch for the database proper is for, thus requiring that the shipping version get upgraded.

So here’s what I did:

Got the “Quick Installation Guide for Linux x86”, and prepped my platform by making required kernel parameter changes (all via sysctl.conf and sysctl command). Also installed a couple of required packages that were not already on the machine (e.g. libaio).

[Note: Load the kernel parameters by first editing /etc/sysctl.conf to add the following:

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

and then running sysctl -p


Downloaded for Linux on x86,, as well as patches. Unzipped the main file, cd to root of “database” folder and executed “./runInstaller” in X session to install database.

Note: If installing on an “unsupported” system like CentOS, you’ll need to execute “./runInstaller -ignoreSysPrereqs” or fake it out by editing /etc/redhat-release and changing the system description line to read something like “Red Hat Enterprise Linux AS release 4 (Nahant Update 5)”.

Created the dba group, and the oracle user with dba as its primary group (/usr/sbin/groupadd dba, /usr/sbin/useradd -g dba -c “Oracle User” oracle).

Installed database. Used a variation on the new Optimum Flexible Architecture (OFA) standard (oraInventory in /u01/app/oracle/oraInventory, ORACLE_HOME in /u01/app/oracle/product/db1, ORACLE_SID db1, etc. — strict adherence to the new standard would require something like /u01/app/oracle/product/10.2.0/db1).

Set up oracle user environment, for me that was adding lines to export $ORACLE_BASE, $ORACLE_HOME, $ORACLE_SID, $JAVA_HOME (defined as $ORACLE_HOME/jdk), $PATH and $LD_LIBRARY_PATH to user oracle’s .bash_profile, and then re-logging back in to make sure it took.

Kept listener up, stopped database (normally would stop dbconsole first, but it failed to start on initial install because of Java DST issue).

Applied OVM patch, AFTER READING THE DIRECTIONS. Then, as required by the directions, ran “startup migrate” to compile in changes to the db tables. Restarted database and console (dbconsole now started OK).

Stopped console, database and then listener. Installed patch,, to bring the database up to level. This was a BIG patch. Almost a gig. Actually created a “Disk1” folder from which I ran a new “runInstaller” command. First upgraded oraInventory to latest version, then moved on to updating all the product files.

Stop console and db. Ran Upgrade Assistant as directed by the doc. This was another interactive gui like runInstaller, took a long time to complete.

Finally applied patch, to settle remaining DST issues (stop console and db before executing “opatch apply”).

Restarted the db and console.

Set up init script for db and used chkconfig to enable it.