행위

Oracle 19c 설치

DB CAFE

Dbcafe (토론 | 기여)님의 2023년 2월 8일 (수) 20:52 판
thumb_up 추천메뉴 바로가기


Install Oracle 12c R2 on Ubuntu 16.04

groupadd -g 54321 oinstall

groupadd -g 54322 dba

groupadd -g 54323 oper

useradd -u 54321 -g oinstall -G dba,oper -m -s binbash oracle

passwd oracle

mkdir -p apporacleproduct12.2.0.1db_1

chown -R oracleoinstall app chmod -R 775 app


oracle - .bash_profile

  1. Oracle Settings

export TMP=tmp export TMPDIR=$TMP

export ORACLE_HOSTNAME=hostname export ORACLE_UNQNAME=sid export ORACLE_BASE=apporacle export ORACLE_HOME=$ORACLE_BASEproduct12.2.0.1db_1 export ORACLE_SID=SHAKER12C

export PATH=usrsbin$PATH export PATH=$ORACLE_HOMEbin$PATH

export LD_LIBRARY_PATH=$ORACLE_HOMEliblibusrlib export CLASSPATH=$ORACLE_HOMEjlib$ORACLE_HOMErdbmsjlib


vi etcsysctl.conf

  1. for oracle 12C

fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.panic_on_oops = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500


vi etcsecuritylimits.conf oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 134217728 oracle soft memlock 134217728


  1. 패키지 설치

apt-get install alien autoconf automake autotools-dev binutils doxygen elfutils expat gawk gcc-4.9 gcc-4.9-multilib g++-4.9-multilib libstdc++6i386 ksh less libtiff5 libtiff5-dev lib32z1 libaio1 libaio-dev libc6-dev libc6-dev-i386 libc6-i386 libelf-dev libltdl-dev libodbcinstq4-1 libodbcinstq4-1i386 libpth-dev libstdc++5 make openssh-server rlwrap rpm sysstat unixodbc unixodbc-dev x11-utils zlibc libglapi-mesai386 libglu1-mesai386 libqt4-opengli386 libpthread-workqueue0 libpthread-workqueue-dev libzthread-2.3-2 libzthread-dev libpthread-stubs0-dev libaio-dev


  1. gcc

update-alternatives --install usrbingcc gcc usrbingcc-4.9 50

update-alternatives --install usrbincpp cpp usrbincpp-4.9 50

  1. 링크 설정

ln -s usrbinawk binawk ln -s usrbinrpm binrpm ln -s usrbinbasename binbasename


Linking Libraries

ln -s usrlibx86_64-linux-gnu usrlib64 cd lib64 ln -s libx86_64-linux-gnulibgcc_s.so.1 .

Source: https://drive.google.com/file/d/1a7lL4vhhFZat8F5Z7QuX5tnfBptcooew/view


Preinstall script :


  1. !/bin/bash
  1. ---------------------------------------------------------------------------------
  2. This script written by Howard Rogers.
  3. It's purpose is to install Oracle 12c onto 64-bit Ubuntu 16.04.
  4. See http://www.dizwell.com/wordpress/technical-articles/oracle/install-oracle-12c-on-ubuntu-16-04/ for some details.
  5. Copyright (c) 2016 Howard Rogers,Dizwell Informatics
  6. The script is supplied "as-is" with no warranties or guarantees of fitness of
  7. use or otherwise. Neither Dizwell Informatics nor Howard Rogers accepts any
  8. responsibility whatsoever for any damage caused by the use or misuse of this script.
  9. Version 1.0 - Initial Release - 29th May 2016
  10. ---------------------------------------------------------------------------------
  1. ---------------------------------------------------------------------------------
  2. Define a little function to draw a progress indicator... Jaws!
  3. i forever increments; when 1 mod 60 = 0, we start decrementing $pos or
  4. incrementing it, depending on current direction of travel. Requires that
  5. the function is called as a background process before some task is performed,
  6. then killed when complete, which requires that you know the process spawned by the
  7. background call to the function. For example:
  8. jaws &
  9. jawsp=$!
  10. apt-get install some_program
  11. kill $jawsp
  12. wait $jawsp 2>/dev/null
  13. ---------------------------------------------------------------------------------

jaws() { i=0 char=">" pos=4 tput sgr0;tput clear;tput setaf $TITLECOL;tput cup 3 5;tput smul;echo "$mytitle"; tput rmul;tput cup 5 5;tput rev; echo "$mysubtxt"; tput sgr0;tput cup 7 5;tput setaf $TEXTCOL; echo "$mybody1"; tput sgr0;tput cup 8 5;tput setaf $TEXTCOL; echo "$mybody2" tput sgr0;tput cup 9 5;tput setaf $TEXTCOL; echo "$mybody3" while true do

 i=$((i+1))
 if [ $i -gt 36000 ]; then
   tput cup 18 5; echo "This is taking too long. Quitting."

clear exit 1

 fi
 if [ $(($i%60)) -eq 0 ]; then   
   if [ $char = ">" ]; then 
     char="<"
   else
     char=">"
   fi
 fi
 if [ "$char" = ">" ]; then
   pos=$((pos+1))
   if [ "$pos" -gt 64 ]; then
     pos=64
   fi
 else
   pos=$((pos-1))     
   if [ "$pos" -lt 5 ]; then
     pos=5
   fi
 fi
 tput cup 18 5; echo "............................................................";
 tput cup 18 $(($pos)); echo -n $char;tput cup 23 0;
 sleep 0.2

done }

  1. ---------------------------------------------------------------------------------
  2. Let's initialise the default values for some of the variables
  3. we'll be using later on
  4. ---------------------------------------------------------------------------------

ROOT_UID="0";VERGOOD=0;OSGOOD=0;USRGOOD=0;NAMEGOOD=0;SETSMSML=0;SETSEMMNS=0;SETSMOPM=0;SETSMMNI=0;SETSHMAX=0;SETSHMAL=0 SETSHMNI=0;SETPRMIN=0;SETPRMAX=0;SETFSMAX=0;SETWMEMD=0;SETWMEMM=0;SETRMEMD=0;SETRMEMM=0;SETAIMAX=0;SETSUDMP=0 TITLECOL=2;TEXTCOL=0;WARNCOL=1; ver=16.04

  1. ---------------------------------------------------------------------------------
  2. Check we're running on a 64-bit platform, aborting if not...
  3. ---------------------------------------------------------------------------------

ARCHITECTURE="`/bin/uname -m`" if [ "$ARCHITECTURE" != "x86_64" ]; then

 tput sgr0;tput clear;tput setaf $TITLECOL;tput cup 3 5;tput smul
 echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev
 echo " W R O N G   O/S   A R C H I T E C T U R E ! ";tput sgr0;tput cup 7 5;tput setaf $WARNCOL;tput bold
 echo "This script only works on 64-bit platforms, but yours is a 32-bit one.";tput cup 16 5;tput rev
 tput cup 17 5; read -p "Press Enter to quit..." RESP
 tput sgr0
 clear
 exit 1

fi

  1. ---------------------------------------------------------------------------------
  2. This script has to run with root privileges, so check you are root now
  3. and if you're not, re-call the script as root having prompted for the password.
  4. ---------------------------------------------------------------------------------

CMDLN_ARGS="$@" export CMDLN_ARGS chk_root () {

 if [ ! $( id -u ) -eq 0 ]; then
   tput sgr0;tput clear;tput setaf $TITLECOL;tput cup 3 5;tput smul
   echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev
   echo " R O O T   P R I V I L E G E S   R E Q U I R E D ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL
   echo "This script requires root privileges to run properly.";tput cup 8 5
   echo "Please enter your root password to continue... ";tput cup 17 5;tput bold;tput rev
   exec sudo -S su -c "${0} ${CMDLN_ARGS}"
   exit ${?}                 
 fi

} chk_root

  1. ---------------------------------------------------------------------------------
  2. The script only runs on Ubuntu 16.04.
  3. ---------------------------------------------------------------------------------

VERCHECK=`lsb_release -d` if [ "$VERCHECK" != "Description: Ubuntu 16.04 LTS" ]; then

 tput sgr0;tput clear;tput setaf $TITLECOL;tput cup 3 5;tput smul
 echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev
 echo " W R O N G   D I S T R O   D E T E C T E D ! ";tput sgr0;tput cup 7 5;tput setaf $WARNCOL;tput bold
 echo "This script is intended to run only on the following distros:";tput sgr0;tput cup 9 5;tput setaf $TEXTCOL
 echo "* Ubuntu 16.04";tput cup 10 5;
 echo "Your OS is, however, reporting itself to be:";tput cup 12 5 
 echo `lsb_release -d` | awk '{print substr($0,14,99)}';tput cup 13 5;tput rev
 read -p "Press Enter to quit..." RESP
 tput sgr0
 clear
 exit 1  

else

 DISTRO="Deb"

fi

  1. ---------------------------------------------------------------------------------
  2. With those fundamental tests out of the way, let's display some boiler-plate
  3. explanation that most people probably won't read anyway...
  4. ---------------------------------------------------------------------------------

tput sgr0;tput clear;tput setaf 2;tput cup 3 5;tput smul echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev echo " P R E L I M I N A R Y W A R N I N G S!! ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL echo "This script will make considerable configuration changes";tput cup 8 5 echo "to your system so that it can run the Oracle relational";tput cup 9 5 echo "database management system. ";tput cup 11 5 echo "Once these changes are made, they are only reversible ";tput cup 12 5 echo "manually ...and with a lot of effort!";tput cup 17 5;tput rev;tput bold read -p "Are you sure you wish to proceed? [default=n] (y/n): " RESP if [ "$RESP" == "" ]; then

 RESP=n

fi

if [ "$RESP" = "y" ]; then

 tput setaf 1
 tput clear

else

 tput sgr0
 clear
 exit 0  

fi

  1. ---------------------------------------------------------------------------------
  2. Next, we need to know which Oracle version is to be installed. There
  3. are only two choices these days...
  4. ---------------------------------------------------------------------------------

tput sgr0;tput clear;tput setaf 2;tput cup 3 5;tput smul echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev echo " C H O O S E O R A C L E V E R S I O N ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL echo "1. Oracle 12c Release 1";tput cup 9 5 echo "2. Quit";tput bold while [ "$VERGOOD" != 1 ]; do

 tput cup 17 5
 tput rev
 read -p "Enter your choice [1-2]: " oraver
 case $oraver in
   1 ) ORAPATH="12.1.0"; 
       ORACHOICE="12c";

VERGOOD=1;;

   2 ) tput sgr0;
       clear

exit 1;;

   * ) tput cup 17 5;

VERGOOD=0;

       echo "Please enter 1 or 2 only.";;
 esac

done;

  1. ---------------------------------------------------------------------------------
  2. The IP address of the machine needs to be recorded in the /etc/hosts
  3. file. So we will first get the IP address of the machine. Then we'll check if that address
  4. is listed in /etc/hosts ...and if it isn't, we'll add it to it. Note the original hosts
  5. file is copied to a uniquely-named file first, so the edit is manually reversible if needed.
  6. ---------------------------------------------------------------------------------

IPADD=$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}') IPCHECK=$(awk '/$IPADD/{print $1}' /etc/hosts)

if [ "$IPCHECK" ] ; then tput cup 16 5;tput setaf 4 echo 'Hosts file is already configured correctly' else curDate=`date '+%m-%d-%y-%s'` cp /etc/hosts /etc/hosts.$curDate echo "$IPADD `hostname`"|cat - /etc/hosts > /tmp/out && mv -f /tmp/out /etc/hosts tput cup 16 5;tput setaf 4 echo "# Next line added for fresh Oracle Installation"|cat - /etc/hosts > /tmp/out && mv -f /tmp/out /etc/hosts tput cup 17 5 echo 'Hosts file configuration updated' fi

  1. ---------------------------------------------------------------------------------
  2. A user has to own the Oracle installation. By default, we'll offer to create the user 'oracle'
  3. to do that. But a user can overtype the default and specify whatever name they like, if they are
  4. minded to... so long as they don't get smart and try submitting a blank name!
  5. ---------------------------------------------------------------------------------

while [ "$USRGOOD" != 1 ]; do tput clear;tput sgr0;tput setaf 2;tput cup 3 5;tput smul echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev echo " S P E C I F Y O R A C L E U S E R ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL echo "An Oracle software installation has to be 'owned' by";tput cup 8 5 echo "a user account. By default, that account is 'oracle',";tput cup 9 5 echo "but you can specify any account name now. If you type";tput cup 10 5 echo "a username that doesn't already exist, that account";tput cup 11 5 echo "will be created for you.";tput cup 17 5;tput setaf 0;tput bold;tput rev read -p "Type in a username [default=oracle]: " ORACLEUSER if [ "$ORACLEUSER" == "" ]; then

 ORACLEUSER=oracle

fi LENGTHUSRNAME=`echo -n $ORACLEUSER | wc -m | sed -e s/^\s+//` if [[ $LENGTHUSRNAME > 0 ]]; then

 USRGOOD=1 

else

 USRGOOD=0

fi done

egrep $ORACLEUSER /etc/passwd >/dev/null 2>&1 if [ $? -eq 0 ]; then

  1. ---------------------------------------------------------------------------------
  2. The username specified is one that belongs to an existing user
  3. ---------------------------------------------------------------------------------
 USREXISTS=1

else

 USREXISTS=0

fi

egrep "^dba" /etc/group >/dev/null 2>&1 if [ $? -eq 0 ]; then

  1. ---------------------------------------------------------------------------------
  2. The dba group already exists
  3. ---------------------------------------------------------------------------------
 DBAEXISTS=1

else

 DBAEXISTS=0

fi

egrep "^oinstall" /etc/group >/dev/null 2>&1 if [ $? -eq 0 ]; then

  1. ---------------------------------------------------------------------------------
  2. The oinstall group already exists
  3. ---------------------------------------------------------------------------------
 OINEXISTS=1

else

 OINEXISTS=0

fi

egrep "^nobody" /etc/group >/dev/null 2>&1 if [ $? -eq 0 ]; then

  1. ---------------------------------------------------------------------------------
  2. The nobody group already exists
  3. ---------------------------------------------------------------------------------
 NOBEXISTS=1

else

 NOBEXISTS=0

fi

  1. ---------------------------------------------------------------------------------
  2. We have to prompt for a password for the Oracle User, too, if it's a new user
  3. ---------------------------------------------------------------------------------

if [ "$USREXISTS" -eq 0 ]; then

 tput clear;tput sgr0;tput setaf 2;tput cup 3 5;tput smul
 echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev
 echo " O R A C L E   U S E R   P A S S W O R D ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL 
 echo "You've opted to create a new user to own the Oracle";tput cup 8 5 
 echo "installation. That new user account needs password";tput cup 9 5 
 echo "protection. The default password is 'oracle', but ";tput cup 10 5 
 echo "you can supply an alternative now if you like.";tput cup 17 5;tput bold;tput rev
 read -p "Type the new user's password [default=oracle]: " ORAPASSWD
 if [ "$ORAPASSWD" == "" ]; then
   ORAPASSWD=oracle
 fi

fi

  1. ---------------------------------------------------------------------------------
  2. The users get to choose their database name, if they want to.
  3. But then we have to check that their proposed name is less than
  4. nine characters long, not null and doesn't start with a number!
  5. ---------------------------------------------------------------------------------

tput clear;tput sgr0;tput setaf 2;tput cup 3 5;tput smul echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev; echo " S T A R T E R D A T A B A S E N A M E ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL echo "When you perform the Oracle software installation, you'll ";tput cup 8 5 echo "be prompted to create a starter database. That database will";tput cup 9 5 echo "need a name, which needs to be specified now. By default,";tput cup 10 5 echo "this script will assume you'll use a name of 'orc'.";tput cup 17 5 while [ "$NAMEGOOD" != 1 ]; do tput setaf 0 tput cup 17 5 tput bold tput rev read -p "Type in a database name [default=orcl] : " DBNAME if [ "$DBNAME" == "" ]; then

 DBNAME=orcl

fi

LENGTHDBNAME=`echo -n $DBNAME | wc -m | sed -e s/^\s+//` NUMCHECK=`echo $DBNAME | sed -e s/^[0-9]//`

if [ "$LENGTHDBNAME" -gt 8 ]; then

 tput setaf 1;tput cup 17 5;tput bold;tput rev
 echo "That name is too long. 8 or fewer characters please!"
 NAMEGOOD=0

fi

if [ "$LENGTHDBNAME" -gt 0 ]; then

 if [ "$DBNAME" != "$NUMCHECK" ]; then    
   tput setaf 1;tput cup 17 5;tput bold;tput rev  
   echo "That name starts with a number, which isn't allowed!"
   NAMEGOOD=0
 fi

fi

if [ "$LENGTHDBNAME" -gt 0 ]; then

 if [ "$LENGTHDBNAME" -lt 9 ]; then
    if [ "$DBNAME" = "$NUMCHECK" ]; then
    NAMEGOOD=1
    fi
 fi

fi done

  1. ---------------------------------------------------------------------------------
  2. That's the interactive part over with (almost!). So now it's time to
  3. actually make some changes to the system. Let's begin by creating the
  4. oracle user and setting his password to whatever was supplied earlier
  5. ---------------------------------------------------------------------------------

if [ "$USREXISTS" -eq 0 ]; then

 if [ "$DBAEXISTS" -eq 0 ]; then
   /usr/sbin/groupadd dba
 fi
 
 if [ "$OINEXISTS" -eq 0 ]; then
   /usr/sbin/groupadd oinstall
 fi
 /usr/sbin/useradd -m $ORACLEUSER -g oinstall -G dba -s /bin/bash
 echo $ORACLEUSER:$ORAPASSWD | chpasswd
 history -c

fi

if [ "$USREXISTS" -eq 1 ]; then

  1. ---------------------------------------------------------------------------------
  2. We have to preserve the groups the user already has -which means working
  3. out what those groups are to start with!
  4. ---------------------------------------------------------------------------------
 GROUPLIST=`id -Gn $ORACLEUSER`
 for group in $GROUPLIST; do
   if [ "$group" != 'dba' ] && [ "$group" != 'oinstall' ] ; then
     groupstring=$groupstring,$group
   fi
 done
 if [ "$DBAEXISTS" -eq 0 ]; then
   /usr/sbin/groupadd dba
 fi
 
 if [ "$OINEXISTS" -eq 0 ]; then
   /usr/sbin/groupadd oinstall
 fi
 /usr/sbin/usermod -g oinstall -G dba$groupstring $ORACLEUSER

fi

  1. ---------------------------------------------------------------------------------
  2. We need some symbolic links to make Ubuntu look more Red Hattish
  3. ---------------------------------------------------------------------------------

if [ ! -e "/bin/awk" ]; then ln -s /usr/bin/awk /bin/awk >/dev/null 2>&1 fi if [ ! -e "/bin/rpm" ]; then ln -s /usr/bin/rpm /bin/rpm >/dev/null 2>&1 fi if [ ! -e "/lib/x86_64-linux-gnu/libgcc_s.so.1" ]; then ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1 >/dev/null 2>&1 fi if [ ! -e "/lib/libgcc_s.so" ]; then ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so >/dev/null 2>&1 fi if [ ! -e "/bin/basename" ]; then ln -s /usr/bin/basename /bin/basename >/dev/null 2>&1 fi if [ ! -e "/usr/lib64" ]; then ln -s /usr/lib/x86_64-linux-gnu /usr/lib64 >/dev/null 2>&1 fi if [ ! -e "/bin/sh" ]; then ln -sf /bin/bash /bin/sh >/dev/null 2>&1 fi if [ "$NOBEXISTS" -eq 0 ]; then /usr/sbin/groupadd nobody >/dev/null 2>&1 fi

  1. ---------------------------------------------------------------------------------
  2. Now create the directory structure for the final Oracle
  3. installation. Additionally, we create an /osource directory where the
  4. Oracle software can be copied to disk, avoiding an off-DVD installation.
  5. ---------------------------------------------------------------------------------

if [ ! -e "/u01/app/oracle/product/$ORAPATH/db_1" ]; then

 mkdir -p /u01/app/oracle/product/$ORAPATH/db_1

fi if [ ! -e "/osource" ]; then

 mkdir /osource

fi chown -R $ORACLEUSER:oinstall /u01/app chmod -R 775 /u01/app chown -R $ORACLEUSER:oinstall /osource chmod -R 775 /osource

  1. ---------------------------------------------------------------------------------
  2. Now we check the existing kernel parameters so we can work out if
  3. they need to be changed...
  4. ---------------------------------------------------------------------------------

SMSML=`cat /proc/sys/kernel/sem | awk '{print $1}'` SMMNS=`cat /proc/sys/kernel/sem | awk '{print $2}'` SMOPM=`cat /proc/sys/kernel/sem | awk '{print $3}'` SMMNI=`cat /proc/sys/kernel/sem | awk '{print $4}'` MEMSZ=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'` let "MEMSZ *= 1024" let "MEMSZ /= 2" let "MEMSZ += 16777216" SHMAX=`cat /proc/sys/kernel/shmmax` SHMAL=`cat /proc/sys/kernel/shmall` SHMNI=`cat /proc/sys/kernel/shmmni` PRMIN=`cat /proc/sys/net/ipv4/ip_local_port_range | awk '{print $1}'` PRMAX=`cat /proc/sys/net/ipv4/ip_local_port_range | awk '{print $2}'` FSMAX=`cat /proc/sys/fs/file-max` RMEMD=`cat /proc/sys/net/core/rmem_default` RMEMM=`cat /proc/sys/net/core/rmem_max` WMEMD=`cat /proc/sys/net/core/wmem_default` WMEMM=`cat /proc/sys/net/core/wmem_max` AIMAX=`cat /proc/sys/fs/aio-max-nr` SUDMP=`cat /proc/sys/fs/suid_dumpable` HSTNM=`hostname`

  1. ---------------------------------------------------------------------------------
  2. Time to set the kernel parameters to recommended values, but only
  3. if they are NOT already set to usable minima.
  4. ---------------------------------------------------------------------------------

if [ $SMSML -lt 250 ]; then

 SMSML=250
 SETSMSML=1

fi

if [ $SMMNS -lt 32000 ]; then

 SMMNS=32000
 SETSEMMNS=1

fi

if [ $SMOPM -lt 100 ]; then

 SMOPM=100
 SETSMOPM=1

fi

if [ $SMMNI -lt 128 ]; then

 SMMNI=128
 SETSMMNI=1

fi

result=`echo $SHMAX \< $MEMSZ | bc` if [ "$result" -ne 0 ]; then

  SHMAX=$MEMSZ
  SETSHMAX=1

else

  SHMAX=8589934592
  SETSHMAX=1

fi

SHMAL=2097152 SETSHMAL=1

SHMNI=4096 SETSHMNI=1

if [ $PRMIN -gt 1024 ]; then

 PRMIN=1024
 SETPRMIN=1

fi


if [ $PRMAX -lt 65000 ]; then

 PRMAX=65000
 SETPRMAX=1

fi

if [ $FSMAX -lt 65536 ]; then

 FSMAX=65536
 SETFSMAX=1

fi

if [ $WMEMD -lt 262144 ]; then

 WMEMD=262144
 SETWMEMD=1

fi

if [ $WMEMM -lt 262144 ]; then

 WMEMM=262144
 SETWMEMM=1

fi

if [ $ORACHOICE = "11gR2" ]; then

 if [ $FSMAX -lt 6815744 ]; then
    FSMAX=6815744
    SETFSMAX=1
 fi
 if [ $WMEMM -lt 1048576 ]; then
    WMEMM=1048576
    SETWMEMM=1
 fi
 if [ $RMEMD -lt 4194304 ]; then
   RMEMD=4194304
   SETRMEMD=1
 fi
 if [ $PRMIN -lt 9000 ]; then
    PRMIN=9000
    SETPRMIN=1
 fi
 if [ $PRMAX -lt 65500 ]; then
    PRMAX=65500
    SETPRMAX=1
 fi
 if [ $AIMAX -lt 1048576 ]; then
   AIMAX=1048576
   SETAIMAX=1
 fi
 if [ $RMEMM -lt 4194304 ]; then
   RMEMM=4194304
   SETRMEMM=1
 fi
 if [ $SUDMP -eq 0 ]; then
   SUDMP=1
   SETSUDMP=1
 fi

fi

if [ $ORACHOICE = "12c" ]; then

 if [ $FSMAX -lt 6815744 ]; then
    FSMAX=6815744
    SETFSMAX=1
 fi
 if [ $WMEMM -lt 1048576 ]; then
    WMEMM=1048576
    SETWMEMM=1
 fi
 if [ $RMEMD -lt 262144 ]; then
   RMEMD=262144
   SETRMEMD=1
 fi
 if [ $PRMIN -lt 9000 ]; then
    PRMIN=9000
    SETPRMIN=1
 fi
 if [ $PRMAX -lt 65535 ]; then
    PRMAX=65535
    SETPRMAX=1
 fi
 if [ $AIMAX -lt 1048576 ]; then
   AIMAX=1048576
   SETAIMAX=1
 fi
 if [ $RMEMM -lt 4194304 ]; then
   RMEMM=4194304
   SETRMEMM=1
 fi
 if [ $SUDMP -eq 0 ]; then
   SUDMP=1
   SETSUDMP=1
 fi

fi

  1. ---------------------------------------------------------------------------------
  2. Now actually set those parameters which have been determined to need re-setting
  3. -----------------------------------------------------------------------------------

cat >> /etc/sysctl.conf << EOF

  1. Added for fresh Oracle $ORACHOICE Installation

EOF

if [ $SETSHMAL -eq "1" ]; then cat >> /etc/sysctl.conf << EOF kernel.shmall = $SHMAL EOF fi

if $SETSHMAX -eq "1" ; then cat >> /etc/sysctl.conf << EOF kernel.shmmax = $SHMAX EOF fi

if [ $SETSHMNI -eq "1" ]; then cat >> /etc/sysctl.conf << EOF kernel.shmmni = 4096 EOF fi

cat >> /etc/sysctl.conf << EOF kernel.semmni = $SHMNI EOF

if | $SETSMMNS -eq "1" || $SETSMOPM -eq "1" || $SETSMMNI -eq "1" ; then cat >> /etc/sysctl.conf << EOF kernel.sem = $SMSML $SMMNS $SMOPM $SMMNI EOF fi

if [ $SETFSMAX -eq "1" ]; then cat >> /etc/sysctl.conf << EOF fs.file-max = $FSMAX EOF fi

if | $SETPRMAX -eq "1" ; then cat >> /etc/sysctl.conf << EOF net.ipv4.ip_local_port_range = $PRMIN $PRMAX EOF fi

if [ $SETRMEMD -eq "1" ]; then cat >> /etc/sysctl.conf << EOF net.core.rmem_default = $RMEMD EOF fi

if [ $SETWMEMD -eq "1" ]; then cat >> /etc/sysctl.conf << EOF net.core.wmem_default = $WMEMD EOF fi

if [ $SETRMEMM -eq "1" ]; then cat >> /etc/sysctl.conf << EOF net.core.rmem_max = $RMEMM EOF fi

if [ $SETWMEMM -eq "1" ]; then cat >> /etc/sysctl.conf << EOF net.core.wmem_max = $WMEMM EOF fi

if [ $SETAIMAX -eq "1" ]; then cat >> /etc/sysctl.conf << EOF fs.aio-max-nr = $AIMAX EOF fi

if [ $SETSUDMP -eq "1" ]; then cat >> /etc/sysctl.conf << EOF fs.suid_dumpable = $SUDMP EOF fi

  1. ---------------------------------------------------------------------------------
  2. Now we have to set security limits.
  3. ----------------------------------------------------------------------------------

cat /etc/security/limits.conf | sed /'# End of file'/d > /tmp/limits.wrk cat >> /tmp/limits.wrk << EOF $ORACLEUSER soft nproc 2047 $ORACLEUSER hard nproc 16384 $ORACLEUSER soft nofile 1024 $ORACLEUSER hard nofile 65536 $ORACLEUSER soft stack 10240

  1. End of file

EOF

rm /etc/security/limits.conf mv /tmp/limits.wrk /etc/security/limits.conf

cat >> /etc/pam.d/login << EOF session required pam_limits.so EOF

DISTRIB=5

  1. ---------------------------------------------------------------------------------
  2. Now the Oracle User's environment variables are set
  3. ---------------------------------------------------------------------------------

ENVFILE="/home/$ORACLEUSER/.bashrc" cat >> $ENVFILE << EOF

  1. Added for fresh Oracle $ORACHOICE Installation

export ORACLE_HOSTNAME=$HSTNM export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/$ORAPATH/db_1 export ORACLE_SID=$DBNAME export ORACLE_UNQNAME=$DBNAME export PATH=\$ORACLE_HOME/bin:\$PATH:. export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib DISTRIB_RELEASE=$DISTRIB

alias sqlplus="rlwrap sqlplus" alias sql="sqlplus / as sysdba" alias diag="cd \$ORACLE_BASE/diag/rdbms/\$ORACLE_UNQNAME/\$ORACLE_SID/trace"

EOF

  1. ---------------------------------------------------------------------------------
  2. We need a script to auto-start Oracle databases at server reboot. Note that whilst
  3. this section will generate such a script, it won't be automatically run unless the
  4. user manually remembers to alter the contents of the /etc/oratab file.
  5. ---------------------------------------------------------------------------------

if [ -f /etc/init.d/dboraz ]; then mv /etc/init.d/dboraz /etc/init.d/dboraz.original fi

cat >> /etc/init.d/dboraz << EOF

  1. !/bin/bash
      1. BEGIN INIT INFO
  2. Provides: dboraz
  3. Required-Start: $remote_fs $syslog
  4. Required-Stop: $remote_fs $syslog
  5. Default-Start: 3 4 5
  6. Default-Stop: 0 1 2 6
  7. Short-Description: Startup script for Oracle Databases
  8. Description: Oracle Database Auto-Start Script
      1. END INIT INFO

export ORACLE_HOME=/u01/app/oracle/product/$ORAPATH/db_1 export ORACLE_SID=$DBNAME export PATH=\$ORACLE_HOME/bin:\$PATH:.

case "\$1" in start)

       echo -n "Starting Oracle: "

su $ORACLEUSER -c "\$ORACLE_HOME/bin/dbstart \$ORACLE_HOME" su $ORACLEUSER -c "\$ORACLE_HOME/bin/emctl start dbconsole" touch /var/lock/oracle echo "OK" ;; stop) echo -n "Shutting down Oracle: " su $ORACLEUSER -c "\$ORACLE_HOME/bin/emctl stop dbconsole" su $ORACLEUSER -c "\$ORACLE_HOME/bin/dbshut \$ORACLE_HOME" rm -f /var/lock/oracle echo "OK" ;; restart) echo -n "Shutting down Oracle: " su $ORACLEUSER -c "\$ORACLE_HOME/bin/emctl stop dbconsole" su $ORACLEUSER -c "\$ORACLE_HOME/bin/dbshut \$ORACLE_HOME" rm -f /var/lock/oracle echo "OK"

   su $ORACLEUSER -c "\$ORACLE_HOME/bin/dbstart \$ORACLE_HOME"

su $ORACLEUSER -c "\$ORACLE_HOME/bin/emctl start dbconsole" touch /var/lock/oracle echo "OK" ;; esac exit 0 EOF

chmod 775 /etc/init.d/dboraz (update-rc.d -f dboraz remove) >/dev/null 2>&1 2>&1 tput sgr0;tput cup 16 5;tput dim;tput setaf 7 (update-rc.d dboraz defaults) >/dev/null 2>&1 2>&1

  1. ---------------------------------------------------------------------------------
  2. Time to get some software prerequisites installed
  3. ---------------------------------------------------------------------------------

tput sgr0;tput clear;tput setaf 2;tput cup 3 5;tput smul echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev echo " S O F T W A R E D O W N L O A D ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL echo "This script now wants to update your existing software and";tput cup 8 5 echo "download quite a lot of new (and necessary) packages. ";tput cup 17 5;tput bold;tput rev read -p "Do you wish to proceed? [default=n] (y/n): " RESP if [ "$RESP" == "" ]; then

 RESP=n

fi

if [ "$RESP" = "y" ]; then

 tput setaf 1
 #  ---------------------------------------------------------------------------------
 #  Check if the CD/DVD repository is still enabled. If so, comment it out
 #  from /etc/apt/sources.list, ensuring that software is downloaded from
 #  the Internet (otherwise you sit there for hours not realising that the O/S
 #  is asking you to insert a cd/dvd before it can proceed!)
 #  ---------------------------------------------------------------------------------
 mytitle="UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";
 mysubtxt=" S O F T W A R E   D O W N L O A D  ";
 mybody1="Repositories are being updated. ";
 mybody2="This can take a long time, so please be patient...";
 jaws $mytitle $mysubtxt $mybody1 $mybody2 &
 jawsp=$!
 sed -i 's/deb cdrom:/#deb cdrom:/' /etc/apt/sources.list	  	 
 apt-get update >/dev/null 2>&1
 kill $jawsp
 wait $jawsp 2>/dev/null
 #  ---------------------------------------------------------------------------------
 #  Installation loop
 #  --------------------------------------------------------------------------------- 
 tput cup 17 5 
 mytitle="UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";
 mysubtxt=" S O F T W A R E   D O W N L O A D  ";
 mybody1="Necessary software packages and libraries are being downloaded.";
 mybody2="This can take a long time, so please be patient...";
 jaws $mytitle $mysubtxt $mybody1 $mybody2 &
 jawsp=$!
 #  ---------------------------------------------------------------------------------
 #  If one package does not exist in a request to install a long list of them, apt
 #  will not install ANY of them. So, we have to treat the list of packages as an 
 #  array and install them one-by-one, by looping.
 #  ---------------------------------------------------------------------------------
 for pkg in unixodbc unixodbc-dev unzip  lsb-cxx pdksh sysstat gcc g++-multilib \
 ia32-libs ksh lesstif2 zlibc rpm libc6 libc6-dev libc6-dev-i386 libc6-i386 \
 gcc-multilib less lib32z1 libelf-dev binutils libodbcinstq4-1 libpth-dev zenity \
 libpthread-stubs0 libstdc++5 autotools-dev bzip2 elfutils g++ rlwrap libltdl-dev \
 libmotif4 libpthread-stubs0-dev build-essential expat gawk alien autoconf automake \
 lesstif2-dev make; do

apt-get -y install $pkg >/dev/null 2>&1 tput cup 17 5 echo " ";tput cup 17 5 echo "Installing: "$pkg

 done
 tput cup 20 5;ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1 >/dev/null 2>&1
 tput cup 17 5 
 echo "                                                     ";tput cup 17 5
 echo "Installing: older libaio libraries"
 wget http://ftp.us.debian.org/debian/pool/main/liba/libaio/libaio1_0.3.109-3_amd64.deb >/dev/null 2>&1
 dpkg -i libaio1_0.3.109-3_amd64.deb  >/dev/null 2>&1
 aptitude hold libaio1 >/dev/null 2>&1
 echo "libaio1 hold" | dpkg --set-selections >/dev/null 2>&1
 wget http://ftp.us.debian.org/debian/pool/main/liba/libaio/libaio-dev_0.3.109-3_amd64.deb >/dev/null 2>&1
 dpkg -i libaio-dev_0.3.109-3_amd64.deb >/dev/null 2>&1
 aptitude hold libaio-dev >/dev/null 2>&1
 echo "libaio-dev hold" | dpkg --set-selections >/dev/null 2>&1
 rm -f libaio*.deb >/dev/null 2>&1
 kill $jawsp
 wait $jawsp 2>/dev/null
  1. ---------------------------------------------------------------------------------
  2. Ubuntu will produce a compilation error once the Oracle 11g software
  3. installation is underway. This part of the script creates a shell script
  4. in the oracle user's Documents directory which, if run, will add appropriate
  5. compiler switches to the various makefiles that will fix the problems,
  6. once a 'Retry' has been selected.
  7. ---------------------------------------------------------------------------------

mkdir -p /home/$ORACLEUSER/Documents/ cat >> /home/$ORACLEUSER/Documents/ubuntu-fixup.sh << EOF

  1. !/bin/bash

export ORACLE_HOME=/u01/app/oracle/product/$ORAPATH/db_1

sudo ln -s \$ORACLE_HOME/lib/libclntsh.core.so.12.1 /usr/lib sudo ln -s \$ORACLE_HOME/lib/libclntsh.so.12.1 /usr/lib

cp \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk \$ORACLE_HOME/rdbms/lib/ins_rdbms.bkp cp \$ORACLE_HOME/rdbms/lib/env_rdbms.mk \$ORACLE_HOME/rdbms/lib/env_rdbms.bkp

sed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz12/' \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk sed -i 's/\$(HSOTS_LINKLINE)/\$(HSOTS_LINKLINE) -lagtsh/' \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk sed -i 's/\$(EXTPROC_LINKLINE)/\$(EXTPROC_LINKLINE) -lagtsh/' \$ORACLE_HOME/rdbms/lib/ins_rdbms.mk sed -i 's/\$(OPT) \$(HSOTSMAI)/\$(OPT) -Wl,--no-as-needed \$(HSOTSMAI)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(OPT) \$(HSDEPMAI)/\$(OPT) -Wl,--no-as-needed \$(HSDEPMAI)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(OPT) \$(EXTPMAI)/\$(OPT) -Wl,--no-as-needed \$(EXTPMAI)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' \$ORACLE_HOME/network/lib/env_network.mk sed -i 's/\$(SPOBJS) \$(LLIBSERVER)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBSERVER)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFEDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFEDED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFODED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFODED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFNDGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFNDGED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$(S0MAIN) \$(SSKFMUED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFMUED)/' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' \$ORACLE_HOME/rdbms/lib/env_rdbms.mk sed -i 's/\$LD \$LD_RUNTIME/$LD -Wl,--no-as-needed \$LD_RUNTIME/' \$ORACLE_HOME/bin/genorasdksh sed -i 's/\$(GETCRSHOME_OBJ1) \$(OCRLIBS_DEFAULT)/\$(GETCRSHOME_OBJ1) -Wl,--no-as-needed \$(OCRLIBS_DEFAULT)/' \$ORACLE_HOME/srvm/lib/env_srvm.mk

zenity --info --title "Fix-up Script Applied" --text="Click OK to return to the Oracle Installer, \nthen click the [Retry] option."

exit 0 EOF

chmod 775 /home/$ORACLEUSER/Documents/ubuntu-fixup.sh fi

tput clear;tput sgr0;tput setaf 2;tput cup 3 5;tput smul echo "UBUNTU $ver - THE DIZWELL ORACLE PREINSTALLER";tput rmul;tput cup 5 5;tput rev echo " R E B O O T R E Q U I R E D ";tput sgr0;tput cup 7 5;tput setaf $TEXTCOL echo "To ensure the configuration changes made by this script take full";tput cup 8 5 echo "effect, this PC will be rebooted as soon as you press Enter.";tput cup 10 5 echo "When your PC comes back up, log on as '$ORACLEUSER' and launch the";tput cup 11 5 echo "runInstaller.sh script from the Oracle software source of your choice.";tput cup 17 5;tput setaf 1;tput bold;tput rev read -p "Press Enter to reboot..." RESP reboot exit 0


Source: https://www.dizwell.com/wordpress/technical-articles/oracle/install-oracle-12c-on-ubuntu-16-04/3/

https://onedrive.live.com/?authkey=%21AL1G4tLE8F3dgsQ&cid=8C51C47ADD8D1B71&id=8C51C47ADD8D1B71%2122250&parId=8C51C47ADD8D1B71%2122249&o=OneUp