Install Oracle Database 12c On CentOS7

In this tutorial, we will show you how to Install Oracle Database 12c On CentOS 7

OS information:

[[email protected] ~]# cat   /etc/centos-release
CentOS Linux release 7.0.1406 (Core)


[[email protected] ~]# ip a   | grep inet
    inet scope host lo
    inet6 ::1/128 scope host
    inet brd scope global dynamic eno16777736
    inet6 fe80::20c:29ff:fe41:1494/64 scope link

Login as root and add required groups:

 /usr/sbin/groupadd -g 501 oinstall
 /usr/sbin/groupadd -g 502 dba
 /usr/sbin/groupadd -g 503 oper

Add user Oracle:

/usr/sbin/useradd -u 502 -g oinstall -G dba,oper oracle

Change password for user:

passwd oracle

Add kernel parameters to /etc/sysctl.conf.

 kernel.shmmni = 4096
 kernel.shmmax = 4398046511104
 kernel.shmall = 1073741824
 kernel.sem = 250 32000 100 128
 fs.aio-max-nr = 1048576
 fs.file-max = 6815744
 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

Apply kernel parameters:

/sbin/sysctl -p

Add following lines to set shell limits for user oracle in file /etc/security/limits.conf

 oracle   soft   nproc    131072
 oracle   hard   nproc    131072
 oracle   soft   nofile   131072
 oracle   hard   nofile   131072
 oracle   soft   core     unlimited
 oracle   hard   core     unlimited
 oracle   soft   memlock  50000000
 oracle   hard   memlock  50000000

Edit /etc/hosts file:

[[email protected] ~]# cat /etc/hosts   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 ora-c7.unixmen.local

Verify your network settings:

 [[email protected] ~]# ping -c 1 O7-unixmen
 PING ora-c7.unixmen.local ( 56(84) bytes of data.
 64 bytes from ora-c7.unixmen.local ( icmp_seq=1 ttl=64 time=0.017 ms
--- ora-c7.unixmen.local ping statistics ---
 1 packets transmitted, 1 received, 0% packet loss, time 0ms
 rtt min/avg/max/mdev = 0.017/0.017/0.017/0.000 ms
 [[email protected] ~]#

Modify .bash_profile for user oracle in his home directory add at the end file /home/oralce/.bash_profile.

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

export ORACLE_HOSTNAME=O7-unixmen
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_SID=orcl

export PATH=/usr/sbin:$PATH

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

Check which packages are installed and which are missing.

as root copy this and  execute this:

yum groupinstall "GNOME Desktop" -y
yum groupinstall "Development Tools" -y
yum install binutils -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install gcc -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libXext -y
yum install libXext.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install make -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y
yum install zlib-devel -y

Create directory structure:

 mkdir -p   /u01/app/oracle/product/12.1.0
 chown  -R oracle:oinstall /u01/
 chmod  775 /u01/app

Disable selinux  by editing the “/etc/selinux/config” file,


Install database software

Let’s start with database software installation as oracle user.

su - oracle

Unzip the  database  install files:

[[email protected] ~]$ cd  database/
[[email protected] database]$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 500 MB.   Actual 21246 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 2447 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-10-29_05-53-46AM. Please wait ..

Oracle1 Oracle2 Oracle3 Oracle4 Oracle5 Oracle6 Oracle7 Oracle8 Oracle9 Oracle10

During the linking phase, you will see the following error.

    Error in invoking target 'links proc gen_pcscfg procob' of makefile
    for details.

To fix it, do the following:

    rm -rf $ORACLE_HOME/lib/stubs/*
    cp $ORACLE_HOME/rdbms/lib/ $ORACLE_HOME/rdbms/lib/

Perform the following modifications:

vi $ORACLE_HOME/rdbms/lib/
    # Line 176
    # FROM:
    # TO  :

    # Line 279-280
    # FROM:
    # TO  :
    LINK=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS) $(COMPSOBJS) -Wl,--no-as-needed
    LINK32=$(FORT_CMD) $(PURECMDS) $(ORALD) $(LDFLAGS32) $(COMPSOBJS) -Wl,--no-as-needed

    # Line 3041-3042
    # FROM:
    # TO  :
            $(LLIBTHREAD) $(LLIBCLNTSH) $(LINKLDLIBS) -lnnz12

Click the “Retry” button.

Now, the installation should continue.

[[email protected] ~]#  /u01/app/oraInventory/
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[[email protected] ~]#  /u01/app/oracle/product/12.1.0/db_1/
Performing root user operation for Oracle 12c

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.1.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
[[email protected] ~]#


Oracle12 Oracle13 Oracle14


Post installation steps

Edit the “/etc/oratab”,


Useful commands

[[email protected] database]$ lsnrctl

LSNRCTL for Linux: Version - Production on 29-OCT-2014 14:27:04

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

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> status
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version - Production
Start Date                29-OCT-2014 14:00:03
Uptime                    0 days 0 hr. 27 min. 4 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.1.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/O7-unixmen/listener/alert/log.xml
Listening Endpoints Summary...
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdborcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

Have a fun 🙂

if you still have issues with install this database on CentOS 7, please back to install this on cenots6 in the bellow link:

  • Yuxiaoyun

    I added a package of compt-libcap by using: yum install compt-libcap1