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
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.