Why... Why... Why?
This blog is dedicated to documenting error resolution and other tidbits that I discover while working as a Consultant in the Oracle EPM (Hyperion) field. As much of my job revolves around issue resolution, I see an opportunity to supplement the typical troubleshooting avenues such as the Oracle Knowledgebase and Oracle Forums with more pinpointed information about specific errors as they are encountered. Beware, the information found in this blog is for informational purposes only and comes without any warranty or guarantee of accuracy.

EPMVirt: Create your own Oracle Hyperion Virtual Environment:

Friday, December 30, 2016

A Look Inside EPMVirt: The EPMVirt RPM Package


The EPMVirt RPM is what deploys all the custom automation scripts and OS configurations needed to perform the EPM installation.

An RPM consists of a .spec file, which contains the configuration details for the RPM. I

The rpm can  be built with the following command:
cd ~/rpmbuild/$VERSION/ 
rpmbuild -ba --define "_topdir $PWD" --clean SPECS/epmvirt.spec
Building will generate a new RPM package such as:
epmvirt-11.1.2.4.0-4.x86_64.rpm
The spec file is split into a few basic sections. The top contains basic info on the version and prerequisites for the package. 

The %pre section setups up the oracle user and dba group for the Oracle database installation. 
The main purpose of the RPM is to lay out the automation scripts needed to build EPM. The %install section lays out the files onto the user's system. The %files section defines the files that are part of the rpm. 

Finally, the post section kicks off the first automation script, which is desribed in more detail below.

The spec file contents look like this:

[root@localhost SPECS]# cat epmvirt.spec
Summary: Virtual Environment
Name: epmvirt
Version: 11.1.2.4.0
Release: 4
License: GPL
Group: Oracle EPM
URL: epm-errors.blogspot.com
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
Requires: unixODBC, openssl098e, numactl, zip, emacs, unzip, xauth, xdpyinfo, compat-libcap1, libstdc++-devel, sysstat, gcc, gcc-c++, ksh, libaio, libaio-devel, lsof, /usr/lib/libg.a, /lib/libgcc_s.so.1, /usr/lib/libnss_compat.so, /usr/lib/libstdc++.so.5, /usr/lib/libstdc++.so.6, /usr/lib64/libnsl.so, /usr/lib64/libstdc++.so.5

%description
%prep
rm -rf $RPM_BUILD_ROOT
%setup -q 

%pre
groupadd -f dba
groupadd -f oinstall
id -u oracle &>/dev/null || useradd -G dba oracle


%build

%install 
# dirs
install -m 0755 -d $RPM_BUILD_ROOT/u0
install -m 0755 -d $RPM_BUILD_ROOT/u0/automation
install -m 0755 -d $RPM_BUILD_ROOT/u0/install
install -m 0755 -d $RPM_BUILD_ROOT/u0/install/downloads
install -m 0755 -d $RPM_BUILD_ROOT/u0/automation/root
install -m 0755 -d $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 -d $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 -d $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 -d $RPM_BUILD_ROOT/u0/automation/database



# files

install -m 0755 u0/automation/startAll.sh $RPM_BUILD_ROOT/u0/automation
install -m 0755 u0/automation/startDB.sh $RPM_BUILD_ROOT/u0/automation
install -m 0755 u0/automation/startDB.sql $RPM_BUILD_ROOT/u0/automation

install -m 0755 u0/automation/root/start.sh $RPM_BUILD_ROOT/u0/automation/root
install -m 0755 u0/automation/root/start_main.sh $RPM_BUILD_ROOT/u0/automation/root
install -m 0755 u0/automation/root/startOver.sh $RPM_BUILD_ROOT/u0/automation/root

install -m 0755 u0/automation/database/db.rsp $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/ENV.env $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/init.ora $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/installDB_1.sql $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/install_DB_create_db.sql $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/install_DB_create_objects.sql $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/listener.ora $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/sqlnet.ora $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/tnsnames.ora $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/installDB.sh $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/installDB_main.sh $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/dropAll.sql $RPM_BUILD_ROOT/u0/automation/database
install -m 0755 u0/automation/database/recreateDB.sh $RPM_BUILD_ROOT/u0/automation/database



install -m 0755 u0/automation/epm/EPMconfig_Essbase.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm//EPMconfig_Disc.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_CalcMgr.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_ReconfigWeb.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_RA.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_Profit.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_Plan.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_HFM.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_Foundation.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_FDMEE.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/EPMconfig_EssbaseStudio.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/silentInstall.xml $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/installAll.sh $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/installAll_main.sh $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/configAll.sh $RPM_BUILD_ROOT/u0/automation/epm
install -m 0755 u0/automation/epm/configAll_main.sh $RPM_BUILD_ROOT/u0/automation/epm

install -m 0755 u0/automation/epm/boost_libs/libboost_date_time.so.1.48.0 $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/libboost_filesystem.so.1.48.0 $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/libboost_locale.so.1.48.0 $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/libboost_regex.so.1.48.0 $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/libboost_system.so.1.48.0 $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/libboost_thread.so.1.48.0 $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/hfm_post_install_steps.sh $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/hfm_post_install_steps_helper.sh $RPM_BUILD_ROOT/u0/automation/epm/boost_libs
install -m 0755 u0/automation/epm/boost_libs/odbc.ini $RPM_BUILD_ROOT/u0/automation/epm/boost_libs

install -m 0755 u0/automation/apps/createApps.sh $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/insertPlanDS.sh $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/insertPlanDS.sql $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/loadPlanData.maxl $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/PLANDEMO.zip $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/RA.zip $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/pwgen.java $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/ImportHFM1.xml $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/HFM-COMMA4DIM.zip $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/HFMTuning.sh $RPM_BUILD_ROOT/u0/automation/apps
install -m 0755 u0/automation/apps/HFMTuning.sql $RPM_BUILD_ROOT/u0/automation/apps

install -m 0755 u0/automation/extractFiles.py  $RPM_BUILD_ROOT/u0/automation
install -m 0755 u0/automation/extractFiles.sh  $RPM_BUILD_ROOT/u0/automation
install -m 0755 u0/automation/buildEPMvirt.sh  $RPM_BUILD_ROOT/u0/automation
install -m 0755 u0/automation/buildEPMvirt.py  $RPM_BUILD_ROOT/u0/automation
install -m 0755 u0/automation/restartEPM.sh  $RPM_BUILD_ROOT/u0/automation


%clean



%files
%defattr(-,oracle,dba,-)
%dir /u0
%dir /u0/automation
%dir /u0/install
%dir /u0/install/downloads
%dir /u0/automation/root
%dir /u0/automation/database
%dir /u0/automation/epm
%dir /u0/automation/epm/boost_libs

/u0/automation/startAll.sh
/u0/automation/startDB.sh
/u0/automation/startDB.sql

/u0/automation/root/start.sh
/u0/automation/root/start_main.sh
/u0/automation/root/startOver.sh

/u0/automation/database/db.rsp
/u0/automation/database/ENV.env
/u0/automation/database/init.ora
/u0/automation/database/installDB_1.sql
/u0/automation/database/install_DB_create_db.sql
/u0/automation/database/install_DB_create_objects.sql
/u0/automation/database/listener.ora
/u0/automation/database/sqlnet.ora
/u0/automation/database/tnsnames.ora
/u0/automation/database/installDB.sh
/u0/automation/database/installDB_main.sh
/u0/automation/database/dropAll.sql
/u0/automation/database/recreateDB.sh

/u0/automation/epm/EPMconfig_Essbase.xml
/u0/automation/epm/EPMconfig_Disc.xml
/u0/automation/epm/EPMconfig_CalcMgr.xml
/u0/automation/epm/EPMconfig_ReconfigWeb.xml
/u0/automation/epm/EPMconfig_RA.xml
/u0/automation/epm/EPMconfig_Profit.xml
/u0/automation/epm/EPMconfig_Plan.xml
/u0/automation/epm/EPMconfig_HFM.xml
/u0/automation/epm/EPMconfig_Foundation.xml
/u0/automation/epm/EPMconfig_FDMEE.xml
/u0/automation/epm/EPMconfig_EssbaseStudio.xml
/u0/automation/epm/silentInstall.xml
/u0/automation/epm/installAll.sh
/u0/automation/epm/installAll_main.sh
/u0/automation/epm/configAll.sh
/u0/automation/epm/configAll_main.sh

/u0/automation/epm/boost_libs/libboost_date_time.so.1.48.0 
/u0/automation/epm/boost_libs/libboost_filesystem.so.1.48.0
/u0/automation/epm/boost_libs/libboost_locale.so.1.48.0
/u0/automation/epm/boost_libs/libboost_regex.so.1.48.0 
/u0/automation/epm/boost_libs/libboost_system.so.1.48.0 
/u0/automation/epm/boost_libs/libboost_thread.so.1.48.0 
/u0/automation/epm/boost_libs/hfm_post_install_steps.sh
/u0/automation/epm/boost_libs/hfm_post_install_steps_helper.sh
/u0/automation/epm/boost_libs/odbc.ini

/u0/automation/apps/createApps.sh
/u0/automation/apps/insertPlanDS.sh
/u0/automation/apps/insertPlanDS.sql
/u0/automation/apps/loadPlanData.maxl
/u0/automation/apps/PLANDEMO.zip
/u0/automation/apps/RA.zip
/u0/automation/apps/pwgen.java
/u0/automation/apps/ImportHFM1.xml
/u0/automation/apps/HFM-COMMA4DIM.zip
/u0/automation/apps/HFMTuning.sh
/u0/automation/apps/HFMTuning.sql

/u0/automation/extractFiles.py
/u0/automation/extractFiles.sh
/u0/automation/buildEPMvirt.sh
/u0/automation/buildEPMvirt.py
/u0/automation/restartEPM.sh
%doc

%post

cd /u0/automation/root
./start.sh

%changelog
* Thu Oct 23 2014 root <root@localhost.localdomain> - 
- Initial build.

# Don't try fancy stuff like debuginfo, which is useless on binary-only
# packages. Don't strip binary too
# Be sure buildpolicy set to do nothing
%define        __spec_install_post %{nil}
%define          debug_package %{nil}
%define        __os_install_post %{_dbpath}/brp-compress


Finally,
cd /u0/automation/root
./start.sh
        kicks off start_main.sh with the log going to /u0/automation/root/start.log


#!/bin/bash
echo oracle | passwd oracle --stdin

mkdir /u0
mkdir /u0/install
chown -R oracle:dba /u0

# add sudo ability for oracle root.sh scripts
chmod 700 /etc/sudoers
echo "oracle ALL=NOPASSWD: /u0/app/oracle/product/12.1.0/dbhome_1/root.sh" >> /etc/sudoers
echo "oracle ALL=NOPASSWD: /u0/app/oraInventory/orainstRoot.sh" >> /etc/sudoers
# allow non-tty sudo for startup of oracle services as root in rc.local
perl -p -i -e 's/Defaults\s+requiretty/\#Defaults requiretty/g' /etc/sudoers
chmod 440 /etc/sudoers



echo "oracle soft nproc 2047" >> /etc/security/limits.conf
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
echo "oracle soft nofile 1024" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf



echo "session required pam_limits.so" >> /etc/pam.d/login



echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 2684329984" >> /etc/sysctl.conf

echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048576" >> /etc/sysctl.conf

/sbin/sysctl -p

echo "oracle soft nproc 2047" >> /etc/security/limits.conf
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
echo "oracle soft nofile 4096" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf
echo "oracle soft stack 10240" >> /etc/security/limits.conf

echo "source /home/oracle/*.env" >> /home/oracle/.bashrc
echo "ulimit -n 10000" >> /home/oracle/.bashrc

echo "nohup sudo -u oracle -i /u0/automation/startAll.sh &" >> /etc/rc.local

# needed for WL admin server.
echo "127.0.0.1 epmvirt" >> /etc/hosts

chkconfig iptables off
service iptables stop
ln -s /u0/install/downloads/ /home/oracle/downloads

ln -s /u0/automation/buildEPMvirt.sh /bin/buildEPMvirt

What's going on? 
  1. Give oracle user the ability to do sudo for running "root.sh" during the Oracle installation
  2. Setup kernel parameters for Oracle and EPM
  3. Add startAll.sh to rc.local file to start EPM on boot

The other important thing the RPM does is setup the file system structure under /u0 and give rights to the oracle user. At this point, the root user has given all the necessary security and rights to the oracle user to perform the remaining installs. The rest of the installation is done as the oracle user.

Now that we understand how the OS was installed, and the EPMVirt RPM, the next thing to understand is the actual automation scripts. These scripts perform all of the actual installation and configuration tasks. Details will come in the next post... 

Thursday, December 29, 2016

A Look Inside EPMVirt: OS Install

I will be doing a multi part series of articles on the details of how EPMVirt works. This deep dive can help strengthen your automation skills and give a better understanding what is occurring under the hood.

EPMVirt:
http://epm-errors.blogspot.com/p/epmvirt-11124-oracle-hyperion-virtual.html

The basic idea behind EPMVirt is to allow anyone to create an Oracle Virtual Machine with a working test version of Hyperion. The basic steps:
  1. Download all the required software
  2. Create a virtual Oracle Linux instance using Oracle Virtual Box
  3. Copy downloaded software from step 1 to virtual instance
  4. Run custom buildEPMvirt script to build the environment 
Let's focus on step 2. The Oracle Virtual Machine provides an environment we which can be run on many different platforms and systems. In other words, adding this virtual layer allows anyone with Oracle Virtual Box installation to be able run the environment. Instructions are provided in the link above on how to setup Oracle Virtual Box.

Next comes the OS, From a licensing standpoint, I decided to avoid Microsoft since it is not freely distributed. Going with the Oracle Linux seems like the best choice for an open system. However, the choice of Linux does come with downsides. For instance, EPMA and DRM are Windows only products, and consequently must be excluded.

From a Hyperion EPM standpoint, the OS setup is an important aspect. It must include specific packages and tuning settings for Hyperion to run. Let's look further at the OS automated installation.
To get Oracle Linux installed, there is a special kickstart file that provides all the details. It is specified on the command line after booting from the Oracle Linux DVD ISO image:
vmlinuz initrd=initrd.img ks=http://interopconsulting.com/ks2


The ks2 script has the following contents:
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
text
cdrom
reboot --eject
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6 --hostname EPMVirt

rootpw  --iscrypted $6
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc America/New_York
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work

clearpart --all --initlabel
zerombr
part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1


volgroup VolGroup --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=VolGroup --grow --size=3776 --maxsize=3776



%packages --nobase
@core
zip
emacs
unzip
xauth
xdpyinfo
compat-libcap1
libstdc++-devel
sysstat
gcc
gcc-c++
ksh
libaio
libaio-devel
lsof
numactl
glibc-devel
glibc-devel.i686
libgcc
libgcc.i686
compat-libstdc++-33
compat-libstdc++-33.i686
openssh-clients


%post --log=/root/ks-post.log
curl -L http://interopconsulting.com/rpms/epmvirt-11.1.2.4.0-4.x86_64.rpm -o EPMVirt.rpm
yum install -y EPMVirt.rpm


%end

The script roughly does the following:

  1. Creates the Unix file system partitions
  2. Sets up the network interface to connect to the internet
  3. Specifies specific packages to install. Notice some of these are both x86 and i686.
  4. Finally, tries to download and install the EPMVirt rpm which provides customization for all remaining steps.
For reference, details of the install are logged to /root/ks-post.log



Provided the automated install runs successfully, you will have Oracle Linux installed with packages required for installing EPM and the Oracle Database, along with a custom EPMVirt package. The EPMVirt package is where most of the magic happens. The next installment will provide details. Stay tuned. 


Monday, December 12, 2016

Getting Virtual Box Working on Ubuntu


I recently purchased a new laptop, and this time around I finally decided to ditch Windows and install Ubuntu (Linux). While trying to get Virtual Box running I ran into a small issue.

When I tried to configure the EPMVirt VM, it ran into this error:

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing
/sbin/vboxconfig




However, when running the vboxconfig command, it fails
root@kingn-ThinkPad-X260:~# /sbin/vboxconfig
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.
There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

Looking through the system logs, it appears the kernel module simply cannot be loaded:
tail -1000 /var/log/syslog
Dec 12 22:21:19 kingn-ThinkPad-X260 vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.
Dec 12 22:21:19 kingn-ThinkPad-X260 systemd[1]: Starting VirtualBox Linux kernel module...
Dec 12 22:21:19 kingn-ThinkPad-X260 vboxdrv.sh[11598]: vboxdrv.sh: Starting VirtualBox services.
Dec 12 22:21:19 kingn-ThinkPad-X260 vboxdrv.sh: Starting VirtualBox services.
Dec 12 22:21:19 kingn-ThinkPad-X260 vboxdrv.sh[11598]: vboxdrv.sh: Building VirtualBox kernel modules.
Dec 12 22:21:19 kingn-ThinkPad-X260 vboxdrv.sh: Building VirtualBox kernel modules.
Dec 12 22:21:35 kingn-ThinkPad-X260 vboxdrv.sh: VirtualBox kernel modules built.
Dec 12 22:21:35 kingn-ThinkPad-X260 vboxdrv.sh[11598]: vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.
Dec 12 22:21:35 kingn-ThinkPad-X260 vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.
Dec 12 22:21:35 kingn-ThinkPad-X260 systemd[1]: vboxdrv.service: Control process exited, code=exited status=1
Dec 12 22:21:35 kingn-ThinkPad-X260 systemd[1]: Failed to start VirtualBox Linux kernel module.
Dec 12 22:21:35 kingn-ThinkPad-X260 systemd[1]: vboxdrv.service: Unit entered failed state.
Dec 12 22:21:35 kingn-ThinkPad-X260 systemd[1]: vboxdrv.service: Failed with result 'exit-code'.
Dec 12 22:21:35 kingn-ThinkPad-X260 systemd[1]: Started vboxballoonctrl-service.service.
Dec 12 22:21:35 kingn-ThinkPad-X260 systemd[1]: Started vboxautostart-service.service.
Dec 12 22:21:35 kingn-ThinkPad-X260 systemd[1]: Started vboxweb-service.service.
Dec 12 22:21:41 kingn-ThinkPad-X260 dbus[891]: [system] 
To solve this I was able to read some online articles and find that we can disable the Secure Boot option in the BIOS settings to help fix the issue. Rebooting into the system BIOS:



Simply turning off secure boot seems to fix the problem,
root@kingn-ThinkPad-X260:~# /sbin/vboxconfig
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.
root@kingn-ThinkPad-X260:~#
kPad-X260 dbus[891]: [system] Successfully activated service 'org.freedesktop.hostname1'
Dec 12 22:21:41 kingn-ThinkPad-X260 systemd[1]: Started Hostname Service.
Now, on to installing EPMVirt...

Thursday, December 1, 2016

Keep Your Hyperion Platform Secure by Patching WebLogic

One of the Hyperion Administration tasks often overlooked is the need to patch the underlying components such as WebLogic. If you subscribe to the Oracle security vulnerabilities, you will find frequent critical patch vulnerabilities released.

For instance, the October CPU release link is:
http://www.oracle.com/technetwork/security-advisory/cpuoct2016-2881722.html

Searching for WebLogic will bring up a list of vulnerabilities addressed in this CPU cycle.

If you are curious you can search on the CVE number to get more details.

For instance,
CVE 2015-7501 is part of a bug in apache-commons library bundled inside WebLogic (and JBoss, etc).
https://access.redhat.com/security/vulnerabilities/2059393

Looking back at the CPU article under WebLogic:

Following the link to the Oracle Support Note will require an Oracle Support Login. Once logged in, you can find the suggested patch:
WebLogic Server 10.3.6.0 home PSU 10.3.6.0.161018 Patch 23743997

It is always important to read the README file and all instructions that go along with the patch. Let's take a look at a typical example. Most often the process is twofold:
   1) uninstall any old patches
   2) apply the new patch using the bsu command (in Weblogic 10.3.x)

Some useful snippets from the README:
Oracle WebLogic Server Patch Set Update 10.3.6.0.161018 README
========================================================= This README provides information about how to apply Oracle WebLogic Server
Patch Set Update 10.3.6.0.161018. It also provides information about reverting to
the original version. Released: Oct, 2016 Smart Update Details of Oracle WebLogic Server Patch Set Update 10.3.6.0.161018
-------------------------------------------------------------------------- PATCH_ID - K25M
Patch number - 23743997

Preparing to Install Oracle WebLogic Server Patch Set Update 10.3.6.0.161018
----------------------------------------------------------------------- - WebLogic Server Patch Set Update (PSU) can be applied on a per-domain basis
(or on a more fine-grained basis), Oracle recommends that PSU be applied on an installation-wide basis.
PSU applied to a WebLogic Server installation using this recommended practice
affect all domains and servers sharing that installation.
- Login as same "user" with which the component being patched is installed.
- Stop all WebLogic servers.
- Remove any previously applied WebLogic Server Patch Set Update and associated overlay patches
Installing Oracle WebLogic Server Patch Set Update 10.3.6.0.161018------------------------------------------------------------- - unzip p23743997_1036_Generic.zip to {MW_HOME}/utils/bsu/cache_dir or any local directory Note: You must make sure that the target directory for unzip has required write and executable permissions for "user" with which the component being patched is installed. - Navigate to the {MW_HOME}/utils/bsu directory. - Execute bsu.sh -install -patch_download_dir={MW_HOME}/utils/bsu/cache_dir -patchlist={PATCH_ID} -prod_dir={MW_HOME}/{WL_HOME} Where, WL_HOME is the path of the WebLogic home Reference: BSU Command line interface http://docs.oracle.com/cd/E14759_01/doc.32/e14143/commands.htm To verify the installed patch: b) The following command is a simple way to determine the application of WebLogic Server PSU. $ . $WL_HOME/server/bin/setWLSEnv.sh $ java weblogic.version In the following example output, 10.3.6.0.161018 is the installed WebLogic Server PSU. WebLogic Server 10.3.6.0.161018 PSU Patch for BUG23743997

Translating this into actual commands:
cd Oracle\Middleware\utils\bsu\
bsu.cmd -remove -prod_dir=Oracle\Middleware\wlserver_10.3 -patchlist=UIAL
Checking for conflicts....
No conflict(s) detected
Removing Patch ID: UIAL..
Result: Success
bsu.cmd -install -prod_dir=\Oracle\Middleware\wlserver_10.3 -patch_download_dir=\Oracle\Mid
dleware\utils\bsu\cache_dir -patchlist=K25M

Checking for conflicts....
No conflict(s) detected
Installing Patch ID: K25M..
Result: Success
Testing the patch...
Oracle\Middleware\wlserver_10.3\server\bin\setWLSEnv.cmd

CLASSPATH=....
PATH=...
Your environment has been set.
 >java weblogic.version
WebLogic Server 10.3.6.0.161018 PSU Patch for BUG23743997 TUE AUG 30 18:34:42 IST 2016
WebLogic Server 10.3.6.0  Tue Nov 15 08:52:36 PST 2011 1441050
Use 'weblogic.version -verbose' to get subsystem information
Use 'weblogic.utils.Versions' to get version information for all modules
Success! The 10.3.6.0.161018 version matches that of the README.