Oracle Business Intelligence Applications (OBIA) 11.1.1.10.2 Installation on Oracle Linux 7.2 - Conf

This is the third in a series of posts regarding installing BI Apps 11.1.1.10.2 on Oracle Linux 7.2. For your reference, here is a list of URLs for each of the posts that make up this series:

OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Preparation

OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Software Acquisition

OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - OS Configuration OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - Oracle JDK OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - WebLogic OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - OBIEE 11.1.1.9 RCU OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - OBIEE 11.1.1.9 OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - ODI 11.1.1.9 OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - OPatch OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - OBIA 11.1.1.10.2 RCU OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Installation - OBIA 11.1.1.10.2 OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Configuration - OBIEE OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Configuration - OBIA OBIA 11.1.1.10.2 installation on Oracle Linux 7.2 - Finalizing / Wrap-up

In this post, I will be discussing how to configure the Oracle Linux 7.2 operating system in order to get it ready to run OBIA 11.1.1.10.2.

General Assumptions and Conventions Used

Before getting started, I just wanted to make some general assumptions about the environment. I will assume:

  1. The Oracle Linux 7.2 software has been installed on a server with a Minimal Install software selection

  2. No other software has been installed on the server

  3. The server has been configured for a static IP address

  4. A 200 GB disk has been mounted to /u01

  5. The user who will be performing the OBIA installation is able to do one of the following:

  • Log on to the server as a superuser (which probably is not very likely in production environments)

  • Has the ability to get sudo/wheel group access to the server (which may be possible in some companies, but still may violate security policies in others)

  • Has access to a system administrator who can perform a small subset of tasks as a super user at the beginning of this process

  1. An Oracle Enterprise Edition-based database on version 11.2.0.3 or higher, or 12.1.0.1 or higher has been setup strictly for OBIA, and the SYS account credentials have been provided. Setting up an Oracle Database is beyond the scope of this blog, however if you are interested in doing this yourself, the Oracle DB installation documentation is very comprehensive. In addition, I highly recommend visiting Tim Hall's excellent Oracle-Base blog which is a wonderful resource.

For the purposes of this blog, I will be logging on to the server as a super user (root). However, the bulk of the installation will be done using a new "obia11g" user which we will be creating. To distinguish between commands issued by the super user and those by the new obia11g user, I will adopt the normal Linux convention of starting all commands that should be done as root with the hashtag (#), and all commands that should be done as obia11g with the dollar sign ($). For more information on the hashtag versus dollar sign prompt, check out this wikipedia article.

Also, as I mentioned in a previous blog of the series, I use a combination of PuTTY, WinSCP and Notepad++ to make all of my changes. I use Notepad++ to edit text files, PuTTY to issue commands, and WinSCP to perform file transfers (including when I want to open a file on the server for editing). As a result, my screenshots will be from one of these 3 tools. Furthermore, it is expected that the reader of this blog has basic working knowledge of these tools. Now, the term "basic" means different things to different people, but for the purposes of this blog, I equate "basic" to meaning something that the reader has downloaded each tool and used it for their intended purposes (i.e. Notepad++ to edit a text file, PuTTY to open a terminal connection to a Linux host, WinSCP to transfer files from a Windows host to a Linux host) at least once before. If you have done these things, then you have all the knowledge you need to follow through this series of blog entries and do the OBIA installation.

Lastly, I just wanted to mention that the specifications for the server used in this blog series was: 4 cores and 12 GB RAM.

Initial Administrator-level Tasks

Set SELinux to permissive mode

The first thing that needs to be done is to set SELinux to permissive mode. This is because by default in Oracle Linux 7.2, SELinux is set to enforcing mode.

SELinux has been known to cause issues with OBIEE installation unless it is running in permissive mode (see Oracle Doc Id 1429353.1). As a result, I recommend setting it to permissive mode for the entirety of the OBIA installation.

To set SELinux to permissive mode and to check that this change has occured, issue the following commands from the command prompt:

# setenforce 0

# getenforce

As you will see after issuing the getenforce command, SELinux is now operating in permissive mode. However, this change is only temporary. The next time the server is rebooted, SELinux will be placed back into enforcing mode.

In order to ensure that SELinux remains in permissive mode after a reboot, you need to change /etc/selinux/config so that it will remain in permissive mode after a reboot

Open /etc/selinux/config in your text editor and change the SELINUX line to read:

SELINUX=permissive

Once OBIA has been installed and running, you can investigate setting SELinux back to enforcing mode, but please be aware that this will not be a trivial exercise. I would only recommend looking into this level of hardening for OBIA if this server will be exposed publicly or if your company policy expressly forbids keeping it disabled.

Disable the Firewall

Next, we need to disable the operating system firewall or the installation will fail (see Oracle Doc Id 15845901.1).

To disable the firewall, issue the following commands:

# systemctl stop firewalld

# systemctl disable firewalld

It is important to note that the firewall is only being disabled for the purposes of installation. It can (and in virtually all cases should) be re-enabled post-installation - just make sure you configure the firewall to be aware of all the necessary ports. For the purposes of this blog series, I will not be re-enabling the firewall, but if there's enough interest I will publish a blog entry on how to do so in the future.

Enter the server name and IP address in /etc/hosts

We need to ensure that an entry gets made for your server in the hosts file (found in /etc/hosts). In my case, my server name is ol72bia1111102 and my server IP address is 192.168.186.7. Therefore, I need to create an entry that looks like the following at the end of the /etc/hosts file:

192.168.186.7 ol72bia1111102

Create the oinstall group and obia11g user account

Next, we need to create the use account under which OBIA will be installed and ultimately run. I have elected to call this user obia11g. Furthermore, although we are not installing the Oracle Database, I am a huge advocate of Oracle's Optimal Flexible Architecture (OFA). As a result, you will see a little later that we will create a directory structure following the OFA standard. Furthermore, the Oracle Inventory will sit in this directory structure. And, since iIn a typical Oracle Database installation, a group named oinstall gets created and they have permissions on all of this OFA directory structure, I like to follow this same convention here.

Therefore, I am going to create a group called oinstall, create a user called obia11g, and make this group the primary group for that user. Then, I'm going to set the password for this user.

Here are the commands to do all of this:

# groupadd -g 54321 oinstall

# useradd obia11g -g oinstall

# passwd obia11g

Configure OS limits for the obia11g user

Now that the obia11g user has been created, we need to configure soft and hard limits for the number of files and processes for this user. To do this, we need to create a limits file. I would recommend creating a separate limits file in the /etc/security/limits.d directory. This file will be processed during the boot process, and will not "pollute" the existing /etc/security/limits.conf file (but you could also set limits in this file too if you were so inclined).

To create a new limits file, enter the following commands:

# touch /etc/security/limits.d/99-obia11g.conf

# chmod 644 /etc/security/limits.d/99-obia11g.conf

Once this file has been created, open it in your text editor and add the following lines to it:

# Set limits for obia11g user

obia11g soft nofile 4096

obia11g hard nofile 65536

obia11g soft nproc 2047

obia11g hard nproc 16384

These settings will take effect when you log on as the obia11g user.

Create directory structure and add obia11g permissions/ownership

As mentioned above, I will assume that a minimum of 200GB of disk space has been allocated to this machine and has been mount to /u01. Assuming this is the case, then we next will need to create a directory structure underneath /u01 which will not only contain the location where all of the OBIA software will be installed, but also a spot for temporary files, logs and the installation binaries. Then we will grant the obia11g and oinstall user and group permissions on this folder structure. The commands to do all of this are as follows:

# mkdir -p /u01/app/obia11g

# mkdir -p /u01/sw

# mkdir -p /u01/app/obia11g/tmp

# mkdir -p /u01/app/obia11g/logs

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

# chown -R obia11g:oinstall /u01/sw

# chmod -R 775 /u01

Create the Oracle Inventory

I recommend creating the Oracle Inventory up-front as the super-user. Technically, you could perform this later on, but because a super-user is usually required to write to the /etc directory, I simply recommend doing it now while the operating system is being setup.

In order to do this, we need to create a directory to house the inventory, a file called oraInst.loc with inventory_loc and inst_group variables defined in it, and then create a copy of this new file in the /etc directory. The commands to do all of this are as follows:

# mkdir -p /u01/app/oraInventory

# chmod -R 775 /u01/app/oraInventory

# touch /u01/app/oraInventory/oraInst.loc

# echo inventory_loc=/u01/app/oraInventory >> /u01/app/oraInventory/oraInst.loc

# echo inst_group=oinstall >> /u01/app/oraInventory/oraInst.loc

# chmod 664 /u01/app/oraInventory/oraInst.loc

# chown -R obia11g:oinstall /u01/app/oraInventory

# cp /u01/app/oraInventory/oraInst.loc /etc

# chown root:oinstall /etc/oraInst.loc

# chmod 664 /etc/oraInst.loc

Ensure all OS-level package dependencies are met

According to the documentation for FMW 11g, the following packages are required for installation in Oracle Linux 7+:

binutils-2.23.52.0.1

compat-libcap1-1.10

compat-libstdc++-33-3.2.3 for x86_64

compat-libstdc++-33-3.2.3 for i686

gcc-4.8.2

gcc-c++-4.8.2

glibc-2.17 for x86_64

glibc-2.17 for i686

glibc-devel-2.17 for x86_64

libaio-0.3.109 for x86_64

libaio-devel-0.3.109 for x86_64

libgcc-4.8.2 for x86_64

libgcc-4.8.2 for i686

libstdc++-4.8.2 for x86_64

libstdc++-4.8.2 for i686

libstdc++-devel-4.8.2 for x86_64

ksh

make-3.82

ocfs2-tools-1.8.0

sysstat-10.1.5

numactl-2.0.9 for x86_64Foot 1

numactl-devel-2.0.9 for x86_64

motif-2.3.4-7 for x86_64

motif-devel-2.3.4-7 for x86_64

We will definitely need to ensure that these packages are installed, however I have found that the following additional packages are required or else certain portions of the installation will fail:

libXext.i686

libXext.x86_64

libXtst.i686

libXtst.x86_64

libXi.i686

libXi.x86_64

bc

perl

In addition, the unzip package is useful in order to unzip the software, and in fact many of the scripts used in my blog will require this utility:

unzip

Finally, I have found that the lsof utility is useful when diagnosing issues relating to open files:

lsof

Here's a command that checks for all of the above packages. It indicates which packages are already on the system, and which ones need to still be installed. I have highlighted the ones that need to be installed in yellow.

# rpm -q --qf "%{n}-%{v}-%{r} %{arch}\n" binutils compat-libcap1 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 gcc gcc-c++ glibc.i686 glibc.x86_64 glibc-devel.x86_64 libaio.x86_64 libaio-devel.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.x86_64 ksh make ocfs2-tools sysstat numactl.x86_64 numactl-devel.x86_64 motif.x86_64 motif-devel.x86_64 libXext.i686 libXext.x86_64 libXtst.i686 libXtst.x86_64 libXi.i686 libXi.x86_64 bc perl unzip lsof

binutils-2.23.52.0.1-55.el7 x86_64

package compat-libcap1 is not installed

package compat-libstdc++-33.i686 is not installed

package compat-libstdc++-33.x86_64 is not installed

gcc-4.8.5-4.el7 x86_64

package gcc-c++ is not installed

package glibc.i686 is not installed

glibc-2.17-106.0.1.el7_2.8 x86_64

glibc-devel-2.17-106.0.1.el7_2.8 x86_64

libaio-0.3.109-13.el7 x86_64

package libaio-devel.x86_64 is not installed

package libgcc.i686 is not installed

libgcc-4.8.5-4.el7 x86_64

package libstdc++.i686 is not installed

libstdc++-4.8.5-4.el7 x86_64

package libstdc++-devel.x86_64 is not installed

package ksh is not installed

make-3.82-21.el7 x86_64

package ocfs2-tools is not installed

package sysstat is not installed

package numactl.x86_64 is not installed

package numactl-devel.x86_64 is not installed

package motif.x86_64 is not installed

package motif-devel.x86_64 is not installed

package libXext.i686 is not installed

libXext-1.3.3-3.el7 x86_64

package libXtst.i686 is not installed

libXtst-1.2.2-2.1.el7 x86_64

package libXi.i686 is not installed

libXi-1.7.4-2.el7 x86_64

bc-1.06.95-13 is not installed

perl-5.16.3-286 is not installed

unzip-6.0-15 is not installed

lsof-4.87-4 is not installed

In order to install all of the packages listed as "not installed" from the above list, issue the following command (please note that as I mentioned earlier, this series of blog entries assumes that Oracle Linux 7 has been installed with a Minimal Install software selection). If you have done so and have followed the instructions listed so far, then you should have an identical outcome as the above. If not, then you may need to tweak the following command based on what required packages you are missing):

# yum install -y compat-libcap1 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 gcc-c++ glibc.i686 libaio-devel.x86_64 libgcc.i686 libstdc++.i686 libstdc++-devel.x86_64 ksh ocfs2-tools sysstat numactl.x86_64 numactl-devel.x86_64 motif.x86_64 motif-devel.x86_64 libXext.i686 libXtst.i686 libXi.i686 bc perl unzip lsof

Once this has been done, if you run the above rpm command again, you should see that none of the packages are indicated as "not installed".

Reboot the server

From here-on out, all steps will be performed as the new obia11g user. As a result, now would be an excellent time to reboot the machine. Please do so, and when the machine comes back up please log on as the obia11g user. You can issue the following command to reboot the server:

# reboot

Log on as obia11g user for the first time and update .bashrc and .bash_profile

After logging on as the obia11g user for the first time, I recommend "cleaning up" the .bashrc and .bash_profile files. This step is not necessary, but I like to do it because I personally found it very instructive in understanding how these files work with relation to setting environment variables.

First of all, it is important to note that we will need to set several environment variables over the course of this installation. The question that I initially had was where does one set these environment variables? Initially, I had thought that the .bash_profile file for the user (obia11g user in our case) was where all environment variables should be set. However, over time, my position has changed and I now believe that the .bashrc file is where they should all be set, and the .bash_profile file should simply call the .bashrc file.

The reason why I believe this is because as it states in the documentation for bash (which you can get by issuing "man bash" from your terminal), the .bash_profile file is executed upon login, but the .bashrc file is issued when there is no login, such as when you are spawning more than one terminal sessions from an x-windows environment.

It can be a source of confusion for not only yourself, but other users of your system (especially those with very little Linux experience) if environment variables are not consistently set.

By default, most Linux implementations do call the .bashrc file from .bash_profile using logic that resembles the following:

# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi

If you open the .bash_profile file in your text editor, you will see that Oracle Linux 7.2 is no different. However, you will also see that underneath the line that says: "# User specific environment and startup programs" two lines which read:

PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH Due to the fact that we will be making changes to that PATH environment variable and because I like to keep all my changes in one place, I recommend moving these two lines from this file into the .bashrc file (i.e. cut and paste) underneath the line that reads "# User specific aliases and functions".

Just to be clear, when done, the .bash_profile file for the obia11g user should look the following:

And the .bashrc file for the obia11g user should look like the following:

Create software directory structure to store installation binaries

As the obia11g user, create the following directory structure underneath /u01/sw. All of the installation binaries (i.e. the zip files) will subsequently be transferred here. I recommend creating separate sub-directories for: jdk, obia, obiee, odi, opatch, rcu, scripts and weblogic. Here are the commands used to create these directories:

$ mkdir /u01/sw/jdk

$ mkdir /u01/sw/weblogic

$ mkdir /u01/sw/obiee

$ mkdir /u01/sw/odi

$ mkdir /u01/sw/obia

$ mkdir /u01/sw/rcu

$ mkdir /u01/sw/opatch

$ mkdir /u01/sw/scripts

You will note that this series of commands is prefixed with the dollar sign ($) as opposed to the hashtag (#). As mentioned at the beginning of this blog entry, this is because these directories should be created as the new obia11g user and not the root user.

Transfer downloaded files into this directory structure

At this point, we need to transfer all of the downloaded files mentioned in the previous blog post to the above directory structure. There are many methods of doing this, however I used WinSCP to transfer the files. Here's a quick outline of the files to be transferred and the directory I transferred them to:

/u01/sw/jdk/p20418657_17080_Linux-x86-64.zip

/u01/sw/obia/V270271-01.zip

/u01/sw/obia/V270274-01_1of2.zip

/u01/sw/obia/V270274-01_2of2.zip

/u01/sw/obia/V270276-01.zip

/u01/sw/obiee/V137649-01_1of3.zip

/u01/sw/obiee/V137649-01_2of3.zip

/u01/sw/obiee/V137649-01_3of3.zip

/u01/sw/obiee/V137657-01_1of2.zip

/u01/sw/obiee/V137657-01_2of2.zip

/u01/sw/odi/V75874-01_1of2.zip

/u01/sw/odi/V75874-01_2of2.zip

/u01/sw/opatch/p6880880_111000_Linux-x86-64

/u01/sw/rcu/V75907-01.zip

/u01/sw/rcu/V270272-01.zip

/u01/sw/weblogic/V29856-01.zip

Here is a WinSCP screenshot of the /u01/sw/obiee directory showing the above five zip files that should be in that particular directory:

Once this is done, you are now ready to being installation of the software. Please note that the scripts directory is empty right now. In subsequent blog entries, I will provide all scripts and response files required to do this installation.

Summary

In this blog entry, we configured an Oracle Linux 7.2 machine (setup with the Minimal Install option) for installation with OBIA 11.1.1.10.2. We not only created a dedicated user which will be used to install and ultimately run the OBIA software, but we also applied required operating system limits to this user and granted it all the necessary permissions on a directory structure based on Oracle's Optimal Flexible Architecture (OFA). In addition, we ensured the operating system had all the required software packages in order to install and run OBIA. Then, we logged on as the new obia11g user for the first time and performed some house-cleaning on the .bash_profile and .bashrc files. Lastly, we setup a directory to store all of the installation files and transferred the software there.

Looking ahead

In the next blog entry, we will start installing all of the OBIA 11.1.1.10.2 software.