Oracle Software Pre-installation Checks for Oracle 19c3

As you may have already noticed, the installation of oracle on Linux is more complicated that on windows. It requires  a lot of planning and some requirements have to be configured before the installations occurs. For example, you will have to configure the memory, hardware, storage, system and OS requirements.

It is your job to download and read the entire installation documentation for the oracle release you are planning to install. You will gather the pre-install requirements, document them and forward these to the sysadmins who will then configure these changes on the Linux server if it is a brand new server that is built out.

After the sysadmins configure the server and turn it over to you, it is your job to verify that all the prerequisites have been met on the server before you start the installation.

Follow the link to download and review the oracle installation guide for the oracle database 11gR2 version in its entirety and then create a guide documenting the pre-installation steps.

Submit your document to the class page.

oracle database 11gR2 quick installation guide

  1. Login into the server as root.
    sudo su – root
  2. Check the RAM size.
     [root@69-64-69-66 ~]# grep MemTotal /proc/meminfo
    MemTotal: 7969912 kB

    Minimum: 1 GB of RAM
    Recommended: 2 GB of RAM or more

  3. Check the size of the swap space.
     [root@69-64-69-66 ~]# grep SwapTotal /proc/meminfo
    SwapTotal: 8388604 kB
    Available RAM Swap Space Required
    Between 1 GB and 2 GB 1.5 times the size of the RAM
    Between 2 GB and 16 GB Equal to the size of the RAM
    More than 16 GB 16 GB
  4. Check the available RAM and swap space.
    [root@69-64-69-66 ~]# free
    total used free shared buff/cache available
    Mem: 7969912 135732 7490052 57916 344128 7523004
    Swap: 8388604 0 8388604

    Oracle recommends that you take multiple values for the available RAM and swap space before finalizing a value. This is because the available RAM and swap space keep changing depending on the user interactions with the computer.

  5. Check that the system architecture can run the software.
    [root@69-64-69-66 ~]# uname -m
    x86_64
  6. Check the amount of shared memory.
    [root@69-64-69-66 ~]# df -h /dev/shm/
    Filesystem Size Used Avail Use% Mounted on
    tmpfs 3.9G 0 3.9G 0% /dev/shm

    Note: In Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The shared memory should be sized to be at least the greater of MEMORY_MAX_TARGETand MEMORY_TARGET for each Oracle instance on that computer.

  7. Check that the system architecture can run the oracle software.
    [root@69-64-69-66 ~]# uname -m
    x86_64

    Note: This command displays the processor type. Verify that the processor architecture matches the Oracle software release to install. If you do not see the expected output, then you cannot install the software on this system.

  8. Check the amount of disk space available in the /tmp directory.
    [root@69-64-69-66 ~]# df -h /tmp
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-tmp 20G 45M 19G 1% /tmp

    At least 1 GB of disk space in the /tmp directory recommended.

  9. Check the amount of free disk space on the system.
    [root@69-64-69-66 ~]# df -h /tmp
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-tmp 20G 45M 19G 1% /tmp
    [root@69-64-69-66 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-vol3 385G 1.1G 364G 1% /
    devtmpfs 3.8G 0 3.8G 0% /dev
    tmpfs 3.9G 0 3.9G 0% /dev/shm
    tmpfs 3.9G 57M 3.8G 2% /run
    tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
    /dev/sda1 20G 159M 18G 1% /boot
    /dev/mapper/VolGroup00-u01 178G 61M 168G 1% /u01
    /dev/mapper/VolGroup00-u02 50G 53M 47G 1% /u02
    /dev/mapper/VolGroup00-u06 77G 53M 73G 1% /u06
    /dev/mapper/VolGroup00-u04 39G 49M 37G 1% /u04
    /dev/mapper/VolGroup00-u05 77G 53M 73G 1% /u05
    /dev/mapper/VolGroup00-var 29G 222M 28G 1% /var
    /dev/mapper/VolGroup00-u03 39G 49M 37G 1% /u03
    /dev/mapper/VolGroup00-u07 99G 61M 94G 1% /u07
    /dev/mapper/VolGroup00-tmp 20G 45M 19G 1% /tmp
    /dev/mapper/VolGroup00-opt 29G 45M 28G 1% /opt
    /dev/mapper/VolGroup00-u08 99G 61M 94G 1% /u08
    /dev/sdc1 30G 45M 28G 1% /mnt/blockstorage
    tmpfs 779M 0 779M 0% /run/user/1005
    tmpfs 779M 0 779M 0% /run/user/0

    The following tables describe the disk space requirements for software files, and data files for each installation type on Linux x86-64:

    Installation Type Requirement for Software Files (GB)
    Enterprise Edition 4.7
    Standard Edition 4.6
    Installation Type Requirement for Data Files (GB)
    Enterprise Edition 1.7
    Standard Edition 1.5
  10. Check the distribution and version of Linux installed.
    [root@69-64-69-66 ~]# cat /proc/version
    Linux version 3.10.0-514.10.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Fri Mar 3 00:04:05 UTC 2017

    Centos 7 uses thesame source code as Red Hat Linux 7 (RHEL7). Compare the kernel version to that of the RHEL 7 to be sure they match.

    On Red Hat Enterprise Linux 7 – 3.10.0-54.0.1.el7.x86_64 or later
  11. Check whether the required kernel is installed.
    [root@69-64-69-66 ~]# uname -r
    3.10.0-514.10.2.el7.x86_64

    The output shows the kernel version (3.10.0) and errata level (514.10.2.el7) on the system.

  12. Check if the required packages are installed.
    [root@69-64-69-66 yum]# rpm -q –qf ‘%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n’ binutils.x86_64 compat-libcap1.x86_64 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 make.x86_64 sysstat.x86_64
    binutils-2.25.1-22.base.el7(x86_64)
    package compat-libcap1.x86_64 is not installed
    package compat-libstdc++-33.i686 is not installed
    package compat-libstdc++-33.x86_64 is not installed
    package gcc.x86_64 is not installed
    package gcc-c++.x86_64 is not installed
    package glibc.i686 is not installed
    glibc-2.17-157.el7_3.1(x86_64)
    package glibc-devel.i686 is not installed
    package glibc-devel.x86_64 is not installed
    ksh-20120801-26.el7(x86_64)
    package libaio.i686 is not installed
    libaio-0.3.109-13.el7(x86_64)
    package libaio-devel.i686 is not installed
    package libaio-devel.x86_64 is not installed
    package libgcc.i686 is not installed
    libgcc-4.8.5-11.el7(x86_64)
    package libstdc++.i686 is not installed
    libstdc++-4.8.5-11.el7(x86_64)
    package libstdc++-devel.i686 is not installed
    package libstdc++-devel.x86_64 is not installed
    package libXi.i686 is not installed
    libXi-1.7.4-2.el7(x86_64)
    package libXtst.i686 is not installed
    libXtst-1.2.2-2.1.el7(x86_64)
    make-3.82-23.el7(x86_64)
    sysstat-10.1.5-11.el7(x86_64)
  13. Install all missing packages.
    yum install binutils.x86_64
    yum install compat-libcap1.x86_64
    yum install compat-libstdc++-33.i686
    yum install compat-libstdc++-33.x86_64
    yum install gcc.x86_64
    yum install gcc-c++.x86_64
    yum install glibc.i686
    yum install glibc.x86_64
    yum install glibc-devel.i686
    yum install glibc-devel.x86_64
    yum install ksh
    yum install libaio.i686
    yum install libaio.x86_64
    yum install libaio-devel.i686
    yum install libaio-devel.x86_64
    yum install libgcc.i686
    yum install libgcc.x86_64
    yum install libstdc++.i686
    yum install libstdc++.x86_64
    yum install libstdc++-devel.i686
    yum install libstdc++-devel.x86_64
    yum install libXi.i686
    yum install libXi.x86_64
    yum install libXtst.i686
    yum install libXtst.x86_64
    yum install make.x86_64
    yum install sysstat.x86_64
  14. Check if the oinstall group exsist
    [root@69-64-69-66 ~]# more /etc/oraInst.loc
    /etc/oraInst.loc: No such file or directory

    If the output of this command shows the oinstall group name, then the group exists.If the oraInst.loc file exists, then the output from this command is similar to the following:

    inventory_loc=/u01/app/oraInventory
    inst_group=oinstall
  15. Create the create the oinstall and dba groups.
    # /usr/sbin/groupadd oinstall
    # /usr/sbin/groupadd dba
  16. Check if the oracle user exists and belongs to the correct groups.
    [root@69-64-69-66 ~]# id oracle
    uid=1004(oracle) gid=500(oinstall) groups=500(oinstall),505(dba)

    If the oracle user exists, then this command displays information about the groups to which the user belongs. The output should be similar to the following, indicating that oinstall is the primary group and dbais a secondary group.
    If the oracle user exists, but its primary group is not oinstall or it is not a member of the dbagroup, then enter the following command:

    # /usr/sbin/usermod -g oinstall -G dba oracle
  17. Create the oracle account if it does not exist.
    # /usr/sbin/useradd -g oinstall -G dba oracle

    This command creates the oracle user and specifies oinstall as the primary group and dba as the secondary group.

  18. Set the passwd for the oracle user
    # passwd oracle
  19. Check the current values of the kernel parameters.

    semmsl, semmns, semopm, and semmni

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep sem
    kernel.sem = 250 32000 32 128
    kernel.sem_next_id = -1

    shmall, shmmax, and shmmni

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep shm
    kernel.shm_next_id = -1
    kernel.shm_rmid_forced = 0
    kernel.shmall = 18446744073692774399
    kernel.shmmax = 18446744073692774399
    kernel.shmmni = 4096
    vm.hugetlb_shm_group = 0

    file-max

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep file-max
    fs.file-max = 787308

    ip_local_port_range

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep ip_local_port_range
    net.ipv4.ip_local_port_range = 32768 60999

    rmem_default

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep rmem_default
    net.core.rmem_default = 212992

    rmem_max

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep rmem_max
    net.core.rmem_max = 212992

    wmem_default

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep wmem_default
    net.core.wmem_default = 212992

    wmem_max

    [root@69-64-69-66 ~]# /sbin/sysctl -a | grep wmem_max
    net.core.wmem_max = 212992

    Kernel parameters and shell limit values chart:

    Parameter Minimum Value File
    semmslsemmnssemopm

    semmni

    25032000100

    128

    /proc/sys/kernel/sem
    shmall 2097152 /proc/sys/kernel/shmall
    shmmax Minimum: 536870912Maximum: A value that is 1 byte less than the physical memoryRecommended: More than half the physical memory

    See My Oracle Support Note 567506.1 for additional information about configuring shmmax.

    /proc/sys/kernel/shmmax
    shmmni 4096 /proc/sys/kernel/shmmni
    filemax 6815744 /proc/sys/fs/file-max
    ip_local_port_range Minimum: 9000Maximum: 65500 /proc/sys/net/ipv4/ip_local_port_range
    rmem_default 262144 /proc/sys/net/core/rmem_default
    rmem_max 4194304 /proc/sys/net/core/rmem_max
    wmem_default 262144 /proc/sys/net/core/wmem_default
    wmem_max 1048576 /proc/sys/net/core/wmem_max
    aio-max-nr 1048576Note: This value limits concurrent outstanding requests and should be set to avoid I/O subsystem failures. /proc/sys/fs/aio-max-nr
  20. Eedit the /etc/sysctl.conf file, if  any kernel parameter is different from the recommended value.
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 2097152
    kernel.shmmax = 536870912
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    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
  21. Make the current values of the kernel parameters available in the active kernel memory.

    # /sbin/sysctl -p

    Review the output from this command to verify that the values are correct. If the values are incorrect, edit the /etc/sysctl.conf file, then enter this command again.

  22. Confirm that the values are set correctly.
    #/sbin/sysctl -a
  23. Check Resource Limits for the Oracle  User.Check the soft and hard limits for the file descriptor setting.
    [oracle@69-64-69-66 ~]$ id
    uid=1004(oracle) gid=500(oinstall) groups=500(oinstall),505(dba)
    [oracle@69-64-69-66 ~]$ ulimit -Sn
    1024
    [oracle@69-64-69-66 ~]$ ulimit -Hn
    4096
    [oracle@69-64-69-66 ~]$

    Check the soft and hard limits for the number of processes available to a user.

    [oracle@69-64-69-66 ~]$ ulimit -Su
    4096
    [oracle@69-64-69-66 ~]$ ulimit -Hu
    31044

    Check the soft limit for the stack setting

    [oracle@69-64-69-66 ~]$ ulimit -Ss
    8192
    [oracle@69-64-69-66 ~]$ ulimit -Hs
    unlimited
    Resource Shell Limit Resource Soft Limit Hard Limit
    Open file descriptors nofile at least 1024 at least 65536
    Number of processes available to a single user nproc at least 2047 at least 16384
    Size of the stack segment of the process stack at least 10240 KB at least 10240 KB, and at most 32768 KB

    If necessary, update the resource limits in the /etc/security/limits.conf configuration file for the oracle user.

  24. Check the filesystems and space on mounted on the server.
    df -k
  25. Create the oracle directories with the right permissions.The Oracle base directory must have 3 GB of free disk space, or 4 GB of free disk space if you choose not to create a separate Oracle data file directory.

    # mkdir -p /u01/app/

    # chown -R oracle:oinstall /u01/app/

    # chmod -R 775 /u01/app/

  26. Configure environment for the oracle user.
    Set the default file mode creation mask (umask) to 022 in the shell startup file.Set the DISPLAY environment variable.

    umask 022

Discussion