Home > gentoo > Installing Oracle 11g on linux amd64

Installing Oracle 11g on linux amd64

This week I managed to get Oracle 11gr2 up and running on my computer. Here are some notes which might be helpful for users installing on any distribution. The difficulty being the fact that the installer supports RedHat based distributions only, the challenge is to make one’s system as redhat-ish as possible prior to the installation.

  • Enable AIO (async I/O) in the kernel
  • CONFIG_AIO=y

  • Install dependencies including build tools, compilers, and specifically rpm and ksh. On a gentoo system
  • emerge -av dev-libs/libaio app-arch/rpm app-shells/pdksh virtual/libstdc++

  • Create symlinks for libstdc++.so.6 in both lib32 and lib64 directories
  • cd /usr/lib64

    ln -s `gcc-config -L | cut -f1 -d:`/libstdc++.so.6 libstdc++.so.6

    cd /usr/lib32

    ln -s `gcc-config -L | cut -f2 -d:`/libstdc++.so.6 libstdc++.so.6

  • Create users, groups and directories
  • groupadd oinstall

    groupadd dba

    useradd -c "Oracle Software Owner" -g oinstall -G dba -m oracle

    passwd oracle

    mkdir -p /opt/oracle /etc/oracle /opt/oraInventory

    chown -R oracle:oinstall /opt/oracle /opt/oraInventory /etc/oracle

  • Setup a more RedHat-ish layout (/bin/basename, /bin/awk, /bin/rpm symlinks), for a gentoo system only the following is needed
  • ln -s /usr/bin/rpm /bin/rpm

  • Modify kernel parameters and security limits
  • /etc/sysctl.conf

    # Kernel parameters for Oracle 11g
    kernel.shmmax=2147483648
    kernel.sem=250 32000 100 128
    fs.file-max=6815744
    fs.aio-max-nr=1048576
    net.core.rmem_default=262144
    net.core.rmem_max=4194304
    net.core.wmem_default=262144
    net.core.wmem_max=1048576
    net.ipv4.ip_local_port_range=9000 65500

    /etc/security/limits.conf

    # Increase shell limits for Oracle 11.2
    oracle soft nofile 4096
    oracle hard nofile 65536
    oracle soft nproc 2047
    oracle hard nproc 16384

    sysctl -p

  • Pre-installation
  • /etc/profile.d/oracle.sh
    if [ "$USER" = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -u 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi

    /bin/gcc

    #!/bin/bash
    if [ "$1" = "-m32" ]; then
    /usr/bin/gcc -L/usr/lib32 $*
    else
    /usr/bin/gcc $*
    fi

  • Installation
  • xhost+
    ./runInstaller

  • At linker errors
  • ${ORACLE_HOME}/lib/sysliblist

    - -ldl -lm -lpthread -lnsl -lirc -lipgo -lsvml
    + -ldl -lm -lpthread -lnsl -lirc -lipgo -lsvml -lrt

  • Post installation
  • /etc/env.d/99oracle
    ORACLE_BASE=/opt/oracle
    ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome
    ORACLE_OWNER=oracle
    ORACLE_SID=orcl
    ORACLE_UNQNAME=orcl
    ORACLE_TERM=xterm
    LD_LIBRARY_PATH=/opt/oracle/product/11.2.0/dbhome/lib
    PATH=/opt/oracle/product/11.2.0/dbhome/bin
    ROOTPATH=/opt/oracle/product/11.2.0/dbhome/bin

    /etc/oratab

    - orcl:/opt/oracle/product/11.2.0/dbhome:N
    + orcl:/opt/oracle/product/11.2.0/dbhome:Y

  • Create initscripts
  • /etc/init.d/ora.console
    #!/sbin/runscript
    # Copyright 1999-2010 Gentoo Foundation
    # Distributed under the terms of the GNU General Public License v2
    # $Header: $

    depend() {
    need net
    after ora.listener
    }

    start() {
    ebegin “Starting Oracle Enterprise Manager DB Console”
    /bin/su -m – $ORACLE_OWNER -c “$ORACLE_HOME/bin/emctl start dbconsole”
    eend $?
    }

    stop() {
    ebegin “Stopping Oracle Enterprise Manager DB Console”
    /bin/su -m – $ORACLE_OWNER -c “$ORACLE_HOME/bin/emctl stop dbconsole”
    eend $?
    }

    /etc/init.d/ora.database
    #!/sbin/runscript
    # Copyright 1999-2010 Gentoo Foundation
    # Distributed under the terms of the GNU General Public License v2
    # $Header: $

    depend() {
    need net logger hostname clock ora.listener
    }

    start() {
    ebegin “Starting Oracle”
    /bin/su -m – $ORACLE_OWNER -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME”
    eend $?
    }

    stop() {
    ebegin “Stopping Oracle”
    /bin/su -m – $ORACLE_OWNER -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME”
    eend $?
    }

    /etc/init.d/ora.listener
    #!/sbin/runscript
    # Copyright 1999-2010 Gentoo Foundation
    # Distributed under the terms of the GNU General Public License v2
    # $Header: $

    depend() {
    need net
    }

    start() {
    ebegin “Start Oracle Listeners”
    /bin/su -m – $ORACLE_OWNER -c “$ORACLE_HOME/bin/lsnrctl start LISTENER”
    eend $?
    }

    stop() {
    ebegin “Stopping Oracle Listeners”
    /bin/su -m – $ORACLE_OWNER -c “$ORACLE_HOME/bin/lsnrctl stop LISTENER”
    eend $?
    }

Everything seems to be working fine as of now, though I might have missed something while noting it down. The initscripts do require a bit of polish, and I’ll blog about them once I’ve gotten myself around.

About these ads
Categories: gentoo
  1. December 14, 2011 at 3:23 am | #1

    I will try to install it on latest Gentoo while Christmas holidays and Oracle DB will be one of the software I will try to install it on in fist phases. Thank you for this step-by-step tutorial. I’ll check it later. Have you tried to install also the Oracle OSB and SOA? If not I will try, could you suppose which tools to use when trying to find what needs to be fixed? running from console with stdout and stderr > log file, strace, …

    Ladislav

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: