Translate

Archives

Installing Oracle 11g Release 2 on Fedora 13

Oracle Database 11g Release 2 is not certified to run on Fedora 13 (Goddard) but I wanted to use it to debug a problem with a particular application which used this database. I checked on the Internet for details about how to install this version of the Oracle database on Fedora 13 but did not come across comprehensive instructions. I therefore decided to write this post as a guide for others who may also wish to install this database on Fedora 13.

First of all you need to add a number of kernel parameters to /etc/sysctl.conf if they do not already exist in this file or have values less then what is shown here. These are minimum required values by the way; they can be higher.

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586


Compared to Sybase ASE which only requires kernel.shmmax, an Oracle database requires significantly more kernel parameter tweeking.

The current value of a kernel parameter can be displayed using the following command:

# /sbin/sysctl -a | grep 


If you do not want to reboot your system, just execute the following command to update the kernel with the new parameters:

# /sbin/sysctl -p


You need to install a number of software packages on your system if the packages are not already installed. If you have installed the Development Tools package group, the majority of the necessary packages will already be installed. Install the Development Tools package group and the following packages if not already installed:

  • binutils
  • libaio, libaio-devel
  • ksh
  • sysstat
  • unixODBC, unixODBC-devel
  • compat-libstdc++-33

Next, you need to modify PAM (Plugable Authentication Module) to increase session limits for the oracle user which we will create later on. Add the following line to /etc/pam.d/login if it does not already exist:

    session    required     pam_limits.so


and add the following lines to /etc/security/limits.conf:

    oracle     soft    nproc   2047
    oracle     hard    nproc   16384
    oracle     soft    nofile  1024
    oracle     hard    nofile  65536


Note that this file may not currently exist on your system. You may have to create it.

Now create a number of new users and groups as follows:

groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin

useradd -g oinstall -G dba,oper,asmadmin oracle


and set a password for the new oracle user.

You must disable Secure Linux (SELINUX) while installing the database. Edit /etc/selinux/config as follows:

SELINUX=disabled


and execute setenforce off.

Edit the /etc/redhat-release file replacing the current release information – Fedora release 13 (Goodwin) – with the following:

redhat release 5


You must create the directories in which the Oracle database software will be installed. In our example, the directory is /app/oracle and the SID is dbhome_1.

mkdir -p /app/oracle/product/11.2.0/dbhome_1
chown -R oracle:oinstall /app
chmod -R 775 /app


The remaining steps require that you are logged in as oracle. As user oracle, download Oracle Database 11g R2 from Oracle and place the two files you downloaded into the same subdirectory. I placed them in ~oracle/tmp but you are free to choose any subdirectory. Then unzip both files.

# unzip linux.x64_11gR2_database_1of2.zip
# unzip linux.x64_11gR2_database_2of2.zip
# ls -d */
database/
#


A single subdirectory called database is created. This subdirectory contains the unzipped files.

Assuming that the user oracle is using the bash shell, add the following lines to the oracle user’s .bash_profile file, changing ORACLE_HOSTNAME, ORACLE_HOME, etc. as required to suit your particular requirements:

# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=ultra.xfpmurphy.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=dbhome_1; export ORACLE_UNQNAME
ORACLE_BASE=/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=dbhome_1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi


If you are using a different shell, you will need to set up these enviromental variables and limits using the appropriate shell syntax and shell initialization file. You may also need to set the NLS_LANG environmental variable to match your country, language and desired character set, e.g. germany_germany.we8iso8859p1.

Oracle databases are installed using the Oracle Universal Installer (OUI) which is GUI-based and uses the X Window system. There is no equivalent command line installer. You may need to set the your DISPLAY environmental variable and use the xhost utility to configure server access. Start OUI by issuing the runInstaller command in the ~oracle/tmp/database directory.

If OUI cannot determine your IP address because it is not in /etc/hosts then you will get the following error:

[INS-06101] IP address of localhost could not be determined


If you see an error message similar to one of the following: “Failed to connect to server”, “Connection refused by server” or “Can’t open display”, then you have a problem with X Windows, either with permissions or the DISPLAY variable. I am going to assume you know how to fix such problems.

After answering a few basic questions, you should see the following Typical Install Configuration screen:

oracle installer screenshot. stage 4 of 8

Check the settings carefully before proceeding further.

Next OUI checks that the installed software development and runtime packages are correct:

oracle installer screenshot

Fedora 13 will fail all these checks. Just tick the check box Ignore All on the top right hand to ignore these errors. So long as you have the latest version of each of these packages installed, all will be fine. Note that you do not need to install pdksh (Public Domain Korn Shell) if you have ksh installed.

During the installation, OUI will popup a dialog window advising you that an error has occurred with ins_emagent.mk. See below:

oracle installer screenshot

This error is due to a change in the GCC linker in Fedora 13. The announcement is here. The fix is to edit $ORACLE_HOME/sysman/lib/ins_emagent.mk, search for the line $(MK_EMAGENT_NMECTL) and replace the line with $(MK_EMAGENT_NMECTL) -lnnz11 as shown above.

After saving the changed file, select the Retry option, and the install should successfully continue. Eventually you should see the Database Configuration Assistant screen as shown below:

oracle installer screenshot

Do not ignore the Password Management button; press it and change the passwords for SYS and SYSTEM.

At this stage I suggest you reboot your system and perform the following basic smoketest of the installed database software.

$ id
uid=502(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper),504(asmadmin)
$ cd $ORACLE_HOME
$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 06-AUG-2010 20:47:56

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Starting /app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /app/oracle/diag/tnslsnr/ultra/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ultra.xxxxxxxxxx.com)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                06-AUG-2010 20:47:58
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /app/oracle/diag/tnslsnr/ultra/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ultra.xxxxxxxxxx.com)(PORT=1521)))
The listener supports no services
The command completed successfully
$

$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://ultra.xxxxxxxxxxx.com:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ...... started. 
------------------------------------------------------------------
Logs are generated in directory /app/oracle/product/11.2.0/dbhome_1/ultra.xxxxxxxxxx.com_orcl/sysman/log 
$

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 6 20:50:12 2010

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  839282688 bytes
Fixed Size		    2217992 bytes
Variable Size		  524290040 bytes
Database Buffers	  306184192 bytes
Redo Buffers		    6590464 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
$ 


If you have got this far with your installation of Oracle 11g, all is well. The core Oracle 11g database software is installed and working. You may have some tweaking to do for your particular requirements but that is outside the scope of this post. Note the listener supports no services message; we will address this shortly.

First, as root, we need to fix up a couple of files. Edit the /etc/oratab file setting the restart flag for each instance to Y:

DBHOME_1:/app/oracle/product/11.2.0/dbhome_1:Y


Edit the /etc/redhat-release file to restore the original release information:

Fedora release 13 (Goodwin)


At this stage you should be able to invoke the Oracle sqldeveloper GUI by invoking $ORACLE_HOME/sqldeveloper/sqldeveloper/bin/sqldeveloper. Once you have configured a valid connection, you should see a screen similar to this:

oracle sqldeveloper screenshot

If you configure listener.ora you can also access the Oracle Enterprise Console via the Web as shown here:

oracle enterprise management screenshot

Here is what is in my listener.ora:

$ cat $ORACLE_HOME/admin/listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ultra.xfpmurphy.com)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
   (SID_LIST =
     (SID_DESC =
       (GLOBAL_DBNAME = DBHOME)
       (ORACLE_HOME = /app/oracle/product/11.2.0/dbhome_1)
       (SID_NAME = dbhome_1)
     )
   )

ADR_BASE_LISTENER = /app/oracle
$


You will obviously have to use different values for HOST and possibly SID_NAME, ORACLE_HOME and GLOBAL_DBNAME.

To automatically start and shop the Oracle database during system startup and shutdown you need to place an appropriate script in the /etc/rc.d/init.d directory and symbolically link it to the appropriate rc directories. Here is a script to start or stop the Oracle database using dbinit:

#!/bin/bash
#
# init file for starting and stopping Oracle 11g database using dbstart/dbstop
#
# chkconfig: 35 80 30
# description: Oracle database startup and shutdown script
#

. /etc/rc.d/init.d/functions

ORACLE_BASE=/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID=dbhome_1

case "$1" in
   start)
       echo -n $"Starting Oracle DB:"
       su - oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
       echo "OK"
       ;;
   stop)
      echo -n $"Stopping Oracle DB:"
      su - oracle -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
      echo "OK"
      ;; 
   *)
     echo $"Usage: $0 {start|stop}"
esac


and here is an alternative script to start and stop the Oracle database using Oracle Enterprise Manager Database Control:

#!/bin/bash
#
# init file for starting and stopping Oracle 11g database using emctl
#
# chkconfig: 35 80 30
# description: Oracle database startup and shutdown script using Enterprise manager console
#

. /etc/rc.d/init.d/functions

ORACLE_BASE=/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID=dbhome_1

case "$1" in
   start)
      echo -n $"Starting Oracle Enterprise Manager Database Console:"
      su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
      echo "OK"
      ;;
   stop)
      echo -n $"Stopping Oracle Enterprise Manager Database Console:"
      su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
      echo "OK"
      ;;
   *)
      echo $"Usage: $0 {start|stop}"
esac


I assume that you know how to install a new init script so I am not going to describe the process here.

Please let me know if I left out anything important that you feel would of been of help to you in installing Oracle 11g on Fedora 13 and I will add it to this post.
 

15 comments to Installing Oracle 11g Release 2 on Fedora 13

  • Daniel

    Hi Finnbarr

    Very helpful description. Thanks a lot. Sole problem I had, was the SID, which was not consistent in your description. Would be helpful to use orcl only.

    And a another small problem I had was
    Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXRTPROC1521)))
    TNS-12555: TNS:permission denied
    TNS-12560: TNS:protocol adapter error
    TNS-00525: Insufficient privilege for operation
    Linux Error: 1: Operation not permitted

    Could solve this using this post: http://forums.oracle.com/forums/thread.jspa?threadID=931431, by replacing the KEY to EXRTPROC0

    Final wish: Maybe, you can also describe how to install a new init script. Then, your tutorial is complete in all terms :-)

  • Larry

    Encountered another issue:

    Error in invoking target ‘client_sharedlib’ of makefile ‘/usr/local/applications/oracle/product/11.2.0/dbhome_1/rdbms/lib/ins_rdbms.mk’. See ‘/usr/local/applications/oraInventory/logs/installActions2010-08-30_06-30-14PM.log’ for details.

    The file contains this reference to “client_sharedlib”:
    client_sharedlib:
    $(GENCLNTSH)
    $(REMOVE_COMPATIBILITY_LINKS)
    $(CREATE_COMPATIBILITY_LINKS)
    $(GENOCCISH)
    $(GENAGTSH) $(LIBAGTSH) 1.0

    Any thoughts?

    • Check that all the requisite packages are installed.
      Make sure that you have downloaded the correct version of Oracle for the platform you are on – x64 for x64 platform, etc.
      Check that ORACLE_HOME and ORACLE_SID are correctly specified.

  • Sergio

    Great tutorial,

    I followed it step by step, and it worked like a charm. I had some problems with the SID. As Daniel said, it should by orcl across the tutorial to be consistent. The rest worked flawlessly. Thank you !!

  • Gregg

    You should take out the change for the port range. It screws up the install unless the person installing is sure to change the default ports on everything to a much higher number.

  • My choice of SID and port numbers was deliberate – to cause people to think about them. In my opinion too many tutorials use ORCL as the SID causing newbies to think that the SID must always be ORCL.

  • nihar

    hello guys i hav installed oracle 11g on fedora 13 ,but the oracle application is no where(thats means not in the application option or system or places).

    Plz help me what to do????

  • Soumadip Ghosh

    Very very helpful indeed ……… Thanks.

  • te

    Very helpful.
    Works well on Fedora 14 x86-64-bit on an AMD processor, 4Gb memory

    Had some issue with the startup shell script…

    Had to use only PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
    export $PATH

    don’t know why but it worked.

    Also, could not get EM to work from Firefox. Any suggestions? I am connected to the Internet when I try this and the database instance is local.

    Thx.

  • Juan Carlos

    I installed oracle 11g r2 on a fedora 14, everything went ok, but the listener couln’t be configured, I skipped that part, the rest went ok. I tried to configured it with the netca command, recofigure the listener (also delete it and add it again) and with the port 1521, it always says that it’s been used, i tried with n-1 port numbers numbers like 50512, 1523, 213415, well any number superior to 1024, i recieved alwas the same message.

    Also i ran the system-configure-firewall and shut it down, but no effect, i don’t know what do i have to do, i’ve read forums for about 5 hours, tried a lot of things… and I know it’s something stupid that i have to do, but i’m not a linux expert. So if you can tell me howto it would be much appreciated.

  • Juan Carlos

    ah, i also ran commands like this

    nmap -sS -O 127.0.0.1 | grep 1521

    netstat -nap | grep 1521

    lsof -i -n -P | grep 1521

    seems no one is using it

    and also i tried this

    -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 1521 -j ACCEPT

    believe me… i’ve tried :( but i haven’t been able to accomplish anything with the listener… king of desperate by now

  • Juan Carlos

    nevermind… it was the most stupid thing ever… the result of executing the command localhost and the HOST in the tnsnames.ora and the $ORACLE_HOST values were different, problem solved.

  • Craig Downey

    I just finished installing 11gR2 on Fedora 15 Beta and it worked perfectly! You have done a good job in condensing the process in a clear and concise way! Excellent Job! Thank you!

  • PAN

    good job, Thank you!

  • Plamen

    I followed the instruction on Fedora14 – very good job. But when i shutting down OS the script for db shutdown did not fired.
    After slight modification – it is ok
    ====
    [plamen@localhost ~]$ cat /etc/init.d/ora
    #!/bin/bash
    #
    # init file for starting and stopping Oracle 11g database using dbstart/dbstop
    #
    # chkconfig: 35 80 14
    # description: Oracle database startup and shutdown script \
    #

    . /etc/rc.d/init.d/functions

    ORACLE_BASE=/app/oracle
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0/plam
    ORACLE_SID=plam

    case “$1″ in
    start)
    echo -n $”Starting Oracle DB:”
    touch /var/lock/subsys/ora
    su – oracle -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME”
    echo “OK”
    ;;
    stop)
    echo -n $”Stopping Oracle DB:”
    rm -f /var/lock/subsys/ora
    su – oracle -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME”
    echo “OK”
    ;;
    *)
    echo $”Usage: $0 {start|stop}”
    esac
    exit $?
    ===