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 22.214.171.124.2.
General Assumptions and Conventions Used
Before getting started, I just wanted to make some general assumptions about the environment. I will assume:
The Oracle Linux 7.2 software has been installed on a server with a Minimal Install software selection
No other software has been installed on the server
The server has been configured for a static IP address
A 200 GB disk has been mounted to /u01
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
An Oracle Enterprise Edition-based database on version 126.96.36.199 or higher, or 188.8.131.52 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
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:
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:
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:
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:
According to the documentation for FMW 11g, the following packages are required for installation in Oracle Linux 7+:
compat-libstdc++-33-3.2.3 for x86_64
compat-libstdc++-33-3.2.3 for i686
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
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:
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:
Finally, I have found that the lsof utility is useful when diagnosing issues relating to open files:
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.
package compat-libstdc++-33.x86_64 is not installed
package gcc-c++ is not installed
package glibc.i686 is not installed
package libaio-devel.x86_64 is not installed
package libgcc.i686 is not installed
package libstdc++.i686 is not installed
package libstdc++-devel.x86_64 is not installed
package ksh is not installed
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
package libXtst.i686 is not installed
package libXi.i686 is not installed
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):
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:
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:
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:
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.
In this blog entry, we configured an Oracle Linux 7.2 machine (setup with the Minimal Install option) for installation with OBIA 184.108.40.206.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.
In the next blog entry, we will start installing all of the OBIA 220.127.116.11.2 software.