Installing oracle 12c R2 on ubuntu 18.04 Installing oracle 12c R2 on ubuntu 18.04 oracle oracle

Installing oracle 12c R2 on ubuntu 18.04


Download the installation files and unzip them as usual.

Create the oracle, dba and oinstall users:

sudo groupadd oinstallsudo groupadd dbasudo useradd -g oinstall -G dba,oinstall -s /bin/bash -m -d /home/oracle oracle

Add the following parameters to /etc/sysctl.conf:

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

The above is for a 32GB machine. If you have a different amount then set:

  • shmmax = (memory in bytes / 2)

Now install a set of packages needed for the install to complete. Start by updating your packages:

sudo apt update

Then install the following:

sudo apt install libc6-i386 \gcc-multilib g++-multilib libc6-dev-i386 libstdc++6:i386 \alien autoconf automake autotools-dev elfutils rpm rpm-common \build-essential debhelper expat gawk gsfonts-x11 html2text sysstat \unixodbc unixodbc-dev doxygen ksh openssh-server pax perl-doc rlwrap \lsb lsb-core zlibc \lib32z1-dev lib32ncurses5 libaio1 libaio-dev \libelf-dev libodbcinstq4-1 libpth-dev libpthread-stubs0-dev \libpthread-workqueue0 libpthread-workqueue-dev \libtiff5-dev libzthread-dev libqt4-opengl:i386 libodbcinstq4-1:i386 \libglu1-mesa:i386 libxtst6:i386 libxtst6sudo apt-get install -s cabextractsudo add-apt-repository ppa:nilarimogard/webupd8sudo apt updatesudo apt install wimtools libwim-devsudo apt install -s libbz2-dev:i386

Create a number of soft links so that the installation can find the files it needs at the places it expects them to be:

sudo ln -s /usr/bin/basename /bin/basenamesudo ln -s bin/bash /usr/bin/bashsudo ln -s /usr/bin/rpm /bin/rpmsudo ln -s /usr/bin/awk /bin/awksudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/libstdc++.so.6sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1sudo ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.asudo ln -s /lib/lsb/init-functions /etc/init.d/functionssudo ln -sf /bin/bash /bin/sh

Now start the Oracle installer running under account "oracle", usually as follows:

xhost +sudo su - oraclecd /path/to/unzipped/files/database./runInstaller

Install the database but do not create a database during the installation!

After a while the installation will give an error on linking. Leave the error message on-screen, then open a terminal and edit the file $ORACLE_HOME/bin/orald. Find, at the start, the part reading:

if [ -z "$BASH_VERSION" -o -n "$ORALD_USE_GCC" ] ; then  exec gcc "$@"  exit 1fi

and change the gcc line to read:

exec gcc -no-pie "$@"

(the -no-pie option starts with a single dash).

Then copy the following script into a file, for instance /tmp/fixora:

#!/bin/bash# Change the path below to point to your installationexport ORACLE_HOME=/opt/oracle/12cr2sudo ln -s $ORACLE_HOME/lib/libclntshcore.so.12.1 /usr/libsudo ln -s $ORACLE_HOME/lib/libclntsh.so.12.1 /usr/libcp $ORACLE_HOME/rdbms/lib/ins_rdbms.mk $ORACLE_HOME/rdbms/lib/ins_rdbms.bkpcp $ORACLE_HOME/rdbms/lib/env_rdbms.mk $ORACLE_HOME/rdbms/lib/env_rdbms.bkpsed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz12/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mksed -i 's/\$(HSOTS_LINKLINE)/\$(HSOTS_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mksed -i 's/\$(EXTPROC_LINKLINE)/\$(EXTPROC_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mksed -i 's/\$(OPT) \$(HSOTSMAI)/\$(OPT) -Wl,--no-as-needed \$(HSOTSMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/\$(OPT) \$(HSDEPMAI)/\$(OPT) -Wl,--no-as-needed \$(HSDEPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/\$(OPT) \$(EXTPMAI)/\$(OPT) -Wl,--no-as-needed \$(EXTPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mksed -i 's/\$(SPOBJS) \$(LLIBSERVER)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBSERVER)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/\$(S0MAIN) \$(SSKFEDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFEDED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/\$(S0MAIN) \$(SSKFODED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFODED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/\$(S0MAIN) \$(SSKFNDGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFNDGED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/\$(S0MAIN) \$(SSKFMUED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFMUED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/\$LD \$LD_RUNTIME/$LD -Wl,--no-as-needed \$LD_RUNTIME/' $ORACLE_HOME/bin/genorasdkshsed -i 's/\$(GETCRSHOME_OBJ1) \$(OCRLIBS_DEFAULT)/\$(GETCRSHOME_OBJ1) -Wl,--no-as-needed \$(OCRLIBS_DEFAULT)/' $ORACLE_HOME/srvm/lib/env_srvm.mksed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/rdbms/lib/env_rdbms.mksed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/crs/lib/env_has.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/odbc/lib/env_odbc.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/precomp/lib/env_precomp.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/srvm/lib/env_srvm.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/network/lib/env_network.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ldap/lib/env_ldap.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ord/im/lib/env_ordim.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/plsql/lib/env_plsql.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ctx/lib/env_ctx.mk;sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/sqlplus/lib/env_sqlplus.mk;

Change the ORACLE_HOME line in the script to point to your installation directory for Oracle. Make the script executable and run it as the oracle user:

chmod a+x /tmp/fixorasudo su - oracle/tmp/fixora

Now return to the installer and press the "retry" button on the error dialog. The installation should now finish without further issues.

The resulting installation does not work, however: creating a database will hang in the "startup mount" command, with an oracle BEQ process deadlocked inside localtime. To fix that do the following, again as the user oracle:

cd $ORACLE_HOME/lib/stubsrm libc*cd ../../bin./relink all

After the relink creating a database should work; you can create one using:

dbca -silent -createDatabase \-templateName General_Purpose.dbc \-gdbname $DBNAME -sid $DBNAME -responseFile NO_VALUE \-characterSet AL32UTF8 \-sysPassword REPLACE_WITH_PASSWORD \-systemPassword REPLACE_WITH_PASSWORD \-createAsContainerDatabase false \-databaseType MULTIPURPOSE \-automaticMemoryManagement false \-totalMemory 2048 \-storageType FS \-datafileDestination "/opt/oracle/oradata/" \-redoLogFileSize 500 \-emConfiguration NONE \-ignorePreReqs


Check that $ORACLE_HOME/bin/oradism belong to root and as setuid enabled:

-rwsr-x--- 1 root dba 95844 may 24  2018 $ORACLE_HOME/bin/oradism


I faced the linking issue in ubuntu 18.04.One pop up opened showing some linking error. I kept the popup open and after performing the below steps I clicked retry.

I checked the install log file and found it is not able to find few libraries.

INFO:/usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a

Then I ran :

locate libpthread_nonshared

It showed my some directory where the same file was present. But oracle installer was looking for those files in /usr/lib64 folder.

So I created the soft links for those files using below command.

cd /usr/lib64; ln -s /usr/lib/....../* /usr/lib64/

Then clicked on retry button.