Installing stand-alone Essbase client on Linux/Unix

A former colleague of mine reached out to me recently with an interesting request. He wanted to know how to install Essbase client on one of his Linux servers so that he can write batch scripts and call them using startMaxl.sh. I didn’t quite understand why he needed my help. “Use the installer” I said. Only problem, there is no client installer for Linux.

Earlier versions of EPM suite used to come with a client installer for both Windows and Linux operating systems. However, in the more recent versions, Oracle stopped including the client as an install option. On windows, you get a separate .exe file to install essbase client. But no such thing exists on Linux.

Earlier version of installTool came with client options
Windows installer, still shipped with EPM suite

If you install Essbase server on your linux server, and configure it as part of your environment, resulting in a “user_projects” folder being created, sure, you will automatically get the Maxl client as a by-product. But if you just want the client and nothing else, there is nothing in the installer. If you want to write maxl scripts, and/or use ODI etc. to run essbase commands from a standalone linux server, this poses a severe challenge.

11.1.2.4 installTool doesn't have the client options anymore

So, I did a bit of studying, and turns out the maxl client is pretty easy to create on linux. Essentially, when we install Essbase server ( just install the software, no need to actually create an instance) all the binaries required for client are also installed. We just need to create the “startMaxl.sh” file and make it an executable.

Essentially this is what I did to get it work on my Linux box. You can tweak the process to suit your situation.

  1. Install the Essbase server components on the linux machine using the installTools.sh script. It will create the Middleware directory and install the necessary binaries in the products folder
  2.  Create a directory called maxl
  3. copy startMaxl.sh and setEssbaseEnv.sh from the machine running your essbase server ( Linux/Unix)
  4. If you don’t have access to an Essbase server, just create the two files and add the code shown in the next steps.
  5. Change the permissions of the two files above  so we can execute them. use chmod 750 *.

Code required for the two files.
startMaxl.sh

#!/bin/ksh
# This script is to start Essbase
script_name=`which "$0"`
script_dir=`dirname "$script_name"`
. "$script_dir"/setEssbaseEnv.sh
$ESSBASEPATH/bin/essmsh $*

setEssbaseEnv.sh

cd $CURRENT_DIR
EPM_ORACLE_HOME=/home/oracle/Oracle/Middleware/EPMSystem11R1
#ARBORPATH=/home/oracle/Oracle/Middleware/user_projects/epmsystem1/EssbaseServer/essbaseserver1
ESSBASEPATH=$EPM_ORACLE_HOME/products/Essbase/EssbaseServer
#ESSLANG=English_UnitedStates.Latin1@Binary
DOMAIN_HOME=/home/oracle/Oracle/Middleware/user_projects/domains/EPMSystem
#HYPERION_LOGHOME=$EPM_ORACLE_INSTANCE/diagnostics/logs/essbase
ESS_CSS_JVM_OPTION3=-Doracle.security.jps.config=$DOMAIN_HOME/config/fmwconfig/jps-config.xml
ESS_CSS_JVM_OPTION4=-DEPM_ORACLE_HOME=$EPM_ORACLE_HOME
ESS_CSS_JVM_OPTION5=-DEPM_ORACLE_INSTANCE=$EPM_ORACLE_INSTANCE
ESS_CSS_JVM_OPTION6=-Doracle.dms.context=OFF
ESS_CSS_JVM_OPTION7=-Djava.util.logging.config.class=oracle.core.ojdl.logging.LoggingConfiguration
ORA_NLS10=$EPM_ORACLE_HOME/nls/data
LD_LIBRARY_PATH=$EPM_ORACLE_HOME/../jdk160_35/jre/lib/amd64/server:$EPM_ORACLE_HOME/../jdk160_35/jre/lib/amd64:$EPM_ORACLE_HOME/common/ODBC-64/Merant/7.1/lib:$ESSBASEPATH/bin:${EPM_ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
PATH=$ESSBASEPATH/bin:$ARBORPATH/bin:$PATH
ODBCINI=$EPM_ORACLE_HOME/common/ODBC-64/Merant/7.1/odbc.ini
ODBCINST=$EPM_ORACLE_HOME/common/ODBC-64/Merant/7.1/odbcinst.ini
ESS_JVM_OPTION1=-Xmx64M
export EPM_ORACLE_HOME EPM_ORACLE_INSTANCE ARBORPATH HYPERION_LOGHOME ESSBASEPATH ESSLANG ESS_CSS_JVM_OPTION3 ESS_CSS_JVM_OPTION4
export ESS_CSS_JVM_OPTION5 ESS_CSS_JVM_OPTION6 ESS_CSS_JVM_OPTION7 ORA_NLS10 LD_LIBRARY_PATH DOMAIN_HOME PATH ODBCINI ODBCINST ESS_JVM_OPTION1

If you already have a functioning Essbase server, you could simply copy the “startMaxl.sh” and “setEssbaseEnv.sh” files to the server where you want to install the client. Then it’s just a matter of editing the paths to make it work. The paths, by the way, are very intuitive and not all paths defined in the file are actually necessary. What I did was to use the files as starting point and commented out the unnecessary ones. References to “user_projects” folder is not necessary, nor possible (since you didn’t create the instance), so it is one of the lines you can delete or comment out.

create a maxl folder
create the two files show below

Finally add the maxl directory to your bash_profile so that startMaxl.sh can be invoked from anywhere.

Add maxl directory to your bash_profile
Maxl script test

BTW, the startMaxl.sh script actually runs on K-shell, so make sure you have KSH installed. If you don’t have it already, you can easily install it by running something like yum install ksh  or more easily you can just delete the very first line of the startMaxl.sh file so the script is executed on sh or bash.

If you do not have access to an essbase server you can just take the code below and create the files from scratch. Just make sure you adjust your paths based on your installation.

Let me know if you run into any issues with this setup. It worked out great for me and my friend, but it may or may not work for everyone. Your feedback will help me improve this technique.

Please reach out to me via my linkedin profile.

One Comment

Leave a Reply