download Oracle 11gR2 Enterprise/Standard Edition
for Linux x86-64 from Oracle website.
Then extract the downloaded file:
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
A new folder named database will be extracted.
Preparing the system
We will have to:
Create required users and groups accounts
Set required system parameters in /etc/sysctl.conf
Installing complementary packages
Creating system accounts
Creating Oracle Inventory group:
sudo groupadd oinstall
Creating Oracle DBA group:
sudo groupadd dba
Creating Oracle user home and account:
sudo mkdir -p /opt/oracle
sudo useradd -g oinstall -G dba -d /opt/oracle -s /bin/bash oracle
sudo passwd oracle
sudo chown -R oracle:oinstall /opt/oracle
Updating kernel parameters
Edit the file /etc/sysctl.conf as described below:
sudo gedit /etc/sysctl.conf
Add the following lines to get minimal values required by Oracle,
adjusting if required, depending of your configuration:
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmni = 4096
# Replace kernel.shmmax with the half of your memory in bytes
# if lower than 4Go minus 1
# 1073741824 is 1 GigaBytes
kernel.shmmax=1073741824
# Try sysctl -a | grep ip_local_port_range to get real values
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 = 1048576
# Max value allowed, should be set to avoid IO errors
fs.aio-max-nr = 1048576
# 512 * PROCESSES / what really means processes ?
fs.file-max = 6815744
# To allow dba to allocate hugetlbfs pages
# 1001 is your oinstall group, id. grep oinstall /etc/group will give this value
vm.hugetlb_shm_group = 1001
Then, run the command below to set these kernel parameters:
sudo sysctl -p
Now, update /etc/security/limits.conf:
sudo gedit /etc/security/limits.conf
And add the following parameters:
# Oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
Check that /etc/pam.d/login contains a line like this
one:
session required pam_limits.so
Now, update /etc/profile:
sudo gedit /etc/profile
And add the following lines:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Installing additional packages
If not already done, update your distribution with the latest
packages:
sudo apt-get update
Install the following additional packages:
sudo apt-get install alien
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install autotools-dev
sudo apt-get install binutils
sudo apt-get install bzip2
sudo apt-get install doxygen
sudo apt-get install elfutils
sudo apt-get install expat
sudo apt-get install gawk
sudo apt-get install gcc
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
sudo apt-get install ia32-libs
sudo apt-get install ksh
sudo apt-get install less
sudo apt-get install lesstif2
sudo apt-get install lesstif2-dev
sudo apt-get install lib32z1
sudo apt-get install libaio1
sudo apt-get install libaio-dev
sudo apt-get install libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libc6-i386
sudo apt-get install libelf-dev
sudo apt-get install libltdl-dev
sudo apt-get install libmotif4
sudo apt-get install libodbcinstq4-1 libodbcinstq4-1:i386
sudo apt-get install libpth-dev
sudo apt-get install libpthread-stubs0
sudo apt-get install libpthread-stubs0-dev
sudo apt-get install libstdc++5
sudo apt-get install lsb-cxx
sudo apt-get install make
sudo apt-get install openssh-server
sudo apt-get install pdksh
sudo apt-get install rlwrap
sudo apt-get install rpm
sudo apt-get install sysstat
sudo apt-get install unixodbc
sudo apt-get install unixodbc-dev
sudo apt-get install unzip
sudo apt-get install x11-utils
sudo apt-get install zlibc
Preventing from installation errors
To prevent from error
genclntsh: Failed to link libclntsh.so.11.1 in make file for
rdbms/lib/ins_rdbms.mk
beacause of missing library: /usr/bin/ld: cannot find
/usr/lib64/libpthread_nonshared.a inside
we need to create a symlink for /usr/lib64:
sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
To help preventing from error lib//libagtsh.so: undefined
reference to `nnfyboot' in make: rdbms/lib/dg4odbc] Error
1
sudo ln -sf /bin/bash /bin/sh
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/basename /bin/basename
To prevent from # /lib64/libgcc_s.so.1: File or directory
does not exists, while creating lib/liborasdkbase.so.11.1 in
ins_rdbms.mk, execute the command:
cd /lib64
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 .
Now reboot your system to be sure these parameters will be
taken in account for the next part of the installation.
Others configurations
Connect as Oracle user and set some default startup file
sudo su - oracle
cd
touch .bashrc
ln -s .bashrc .bash_profile
Edit .bashrc file:
vi .bashrc
And add the following line:
umask 022
Execute the .bashrc file or restart a bash shell
source .bashrc
Installing Oracle
Now we can start the installation of the Oracle 10g archive.
Allow others users to connect to your X session, by entering in a
bash shell:
xhost +
Then, login as oracle user:
su - oracle
Go in the extracted database folder and run the following
commands:
export DISPLAY=:0
./runInstaller
Then, Oracle installer should start in graphic mode.
Once you will reach the "pre-reqs" screen, check "Ignore all" to
continue the installation.
Then, you will encounter some issues here-
Solving compilation/link errors
If you have not created the symbolic links above, you will
have
To solve error lib//libagtsh.so: undefined
reference to `nnfyboot' in make: rdbms/lib/dg4odbc] Error 1.
For this, create the symbolic links and execute the commands:
export ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/dbhome_1
cd $ORACLE_HOME/lib
ln -s libclient11.a libagtsh.a
Now we will encounter many errors due to indirect library linking:
To solve error # libnnz11.so: could not read symbols:
Invalid operation /sysman/lib/ins_emagent.mk, enter the
command:
export ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/dbhome_1
sed -i 's/^\(\s*\$(MK_EMAGENT_NMECTL)\)\s*$/\1 -lnnz11/g' $ORACLE_HOME/sysman/lib/ins_emagent.mk
To solve error # nsglsn.c:(.text+0xc29): undefined reference
to `ons_subscriber_close' /network/lib/ins_net_server.mk, enter
the command:
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
To solve error # libocrutl11.so: undefined reference to
`lfifcp' rdbms/lib/ins_rdbms.mk, enter the commands:
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \(\$(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
You also need to execute the following commands to prevent from
later errors:
sed -i 's/^\(\$LD \$LD_RUNTIME\) \(\$LD_OPT\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/bin/genorasdksh
sed -i 's/^\(\s*\)\(\$(OCRLIBS_DEFAULT)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/srvm/lib/ins_srvm.mk
Finishing the installation
The install process will finally ask you to execute scripts as root
user, just do so:
# sudo /opt/oracle/oraInventory/orainstRoot.sh
# sudo /opt/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
You should be able to access database web interface through the URL
https://localhost:1158/em
Before that, need to run the dbconsole from terminal-
#emctl
start dbconsole
Now, add the following variable declaration in your oracle user
.profile, .bashrc or .bash_profile
scripts:
export ORACLE_HOME=/opt/oracle/app/oracle/product/11.2.0/dbhome_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin
Then start a new shell or execute one of the updated files: