Quantcast
Channel: Hyperion Error of the Day
Viewing all 102 articles
Browse latest View live

Problem Accessing Windows Share on Node - BackConnectionHostNames

$
0
0
Windows 2008 R2 has some enhanced security which can get in the way of the Hyperion installation process. The problem is that the default settings will not allow network connections back to the node itself. For instance, if you create a windows share on a particular node, and then try to access the share from the same node, the connection fails. However, anywhere else on the network will be able to access the share.

This can come into play for the Windows Shares for FDM, Reporting and Analysis, and the Share for the LCM import_export assuming you are using the Hyperion servers to host the shares, rather than a remote share location. Additionally, you will notice that if you log into a server and try using the client tools to connect to Hyperion it will fail on one node, but work on the others. For instance, if you open FDM Workbench and try to connect to FDM it may show "Backup Load Balance Server is being used!". This is because the server cannot talk back to itself to connect to the primary load balance server.

The Solution:

http://support.microsoft.com/kb/926642
Error message when you try to access a server locally by using its FQDN or its CNAME alias after you install Windows Server 2003 Service Pack 1: "Access denied" or "No network provider accepted the given network path"

Additional info:
http://serverfault.com/questions/23823/how-to-configure-windows-machine-to-allow-file-sharing-with-dns-alias

Add the new key "BackConnectionHostNames" as a Multi-String Value in this registry path:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0

Enter the different names for the node using a newline as a separator:

server1
server1.fullyqualified.com




DRM Console in 11.1.2.2 Crashes When Opening

$
0
0

Problem:
DRM Console will not open - Application Crash Details:

Description:
  Stopped working

Problem signature:
  Problem Event Name:APPCRASH
  Application Name:drm-server-console.exe
  Application Version:11.1.22302.3
  Application Timestamp:50464102
  Fault Module Name:KERNELBASE.dll
  Fault Module Version:6.1.7601.17932
  Fault Module Timestamp:503285c2
  Exception Code:e0434f4d
  Exception Offset:000000000000caed
  OS Version:6.1.7601.2.1.0.272.7
  Locale ID:1033

Read our privacy statement online:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

If the online privacy statement is not available, please read our privacy statement offline:
  C:\Windows\system32\en-US\erofflps.txt


Resolution:
This was simply a mistake preparing the pre-requisites for the install...
Install .Net 3.5.1 Features in Windows 

EIS Console Crashes When Opening

$
0
0
In 11.1.2.2 If you Install EIS on a standalone machine without Essbase Server, the console will crash with

Essbase Integration Services Console
"Unable to initialize Essbase."



This turns out to be because msvcr71.dll is missing from the PATH in startOlapbldr.bat.

To fix this,
Navigate to
\Oracle\Middleware\EPMSystem11R1\products\Essbase\eis\console\bin

Edit startOlapbldr.bat

Find the PATH line and change it to include %HYPERION_HOME%\ccr\bin at the END of the specified path but before the %PATH% directive. Yes... The location in the PATH does matter...


For instance:
set PATH=%HYPERION_HOME%\bin-32;%ARBORPATH%\bin;%HYPERION_HOME%\ccr\bin;%PATH%

The console will now start up.

Financial Reporting Studio Patching in 11.1.2.2

$
0
0

The client tools have been repackaged in 11.1.2.2. Instead of requiring a special bloated installer, they come packaged as a streamlined .msi installer package. This greatly simplifies the distribution and patching process. However, keep an eye out for updated client installers when patching.

For example, The newest version of the financial reporting client comes inside in the patches.
Patch 13997553: Patch Set Update: 11.1.2.2.300 for Oracle Hyperion Reporting and Analysis for Financial Reporting

The studio installer is in this directory: 13997553/files/install/bin/financialreportingstudio.exe 

It is required to uninstall the old version and re-install the new version on all client machines.





EPMVirt - New PLANDEMO sample app

How to Triage Hyperion Errors in Windows

$
0
0

Ever get stuck with a intermittent application error requiring frequent interaction to help bounce the service if it gets stuck? Sometimes it is necessary to quickly detect an error and act on it immediately. For instance, if a production service such as DRM is crashing intermittently - but the service remains running - how can you effectively triage the issue? Another use case is with development activities. Sometimes during development the environment is somewhat unstable as new features come online - If you are not around to bounce the service do development activities come to a halt?

One option is to identify a specific Windows Event that denotes the error and attach a restart script to have windows automatically restart the service.

Keep in mind I am not recommending that simply bouncing the service it is going to solve the root problem. However, this trick can really cut down on downtime if an issue is present and help you focus on the root cause rather than babysit the symptoms.

For instance,
Let's say that an intermittent error occurs in DRM which comes out in the Event Log:

If you right click on the event there is an option "Attach task to this event...."

When you select this you are essentially provided the screens to create a Windows scheduled task such as in Task Manager.

At this point, you can quickly configure sending an email to be notified of the event. My favorite option is to run a script by selecting "Start a program":

You can setup a quick script to bounce the service and point to the script.

set LOG=c:\drmrestart.log
net stop "Oracle DRM Server Processes"
net start "Oracle DRM Server Processes"
date /t >> %LOG%
time /t >> %LOG%
When finished, be sure to go into advanced properties:
  1) set the user to "system"
  2) make sure the script runs with highest privileges



That's all there is to it! At this point there is no need to babysit the service - it will detect the error condition automatically and bounce itself. Now you can get on to more important things such as finding that root cause.

New Oracle EPM 11.1.2.4 Installation & Configuration

$
0
0

I am currently running though install and config of the new Oracle EPM 11.1.2.4 release. The following is the roughly outlined process...


The 11.1.2.4 EPM binaries can be found here:
http://www.oracle.com/technetwork/middleware/epm/downloads/index.html

I downloaded the following files:
Foundation-11124-linux64-Part1.zip
Foundation-11124-linux64-Part2.zip
Foundation-11124-Part3.zip
Foundation-11124-linux64-Part4.zip
Essbase-11124-linux64.zip
Apps-11124-linux64.zip

In addition, pick up the Client installers and OHS if you prefer to use OHS.

Installation

I ran through the installer, selecting nearly everything available:
/u0/install/epm/installTool.sh




Installer summary:



On to the config...

/u0/Oracle/Middleware/EPMSystem11R1/common/config/11.1.2.0/configtool.sh


I like to configure each component separately. I find that it helps localize any errors that might occur and helps keep my mind on a single task to avoid making human errors during config.



































































Starting the environment....

[oracle@EPMVirt database]$ /u0/Oracle/Middleware/user_projects/epmsystem1/bin/start.sh
Starting all
Apache Ant version 1.7.1 compiled on June 27 2008
Buildfile: /u0/Oracle/Middleware/EPMSystem11R1/common/config/11.1.2.0/resources/instance/start.xml
Finish all


Logging in...
http://epmvirt:9000/workspace/index.jsp




Next I will spend time to do some regression testing and make sure everything is working as expected. To be continued...

Having trouble starting MAXL on 11.1.2.4 (and Essbase Server)?

$
0
0


Having trouble starting MAXL on 11.1.2.4 (and Essbase Server)?

[oracle@EPMVirt bin]$ ./startMaxl.sh
/u0/Oracle/Middleware/EPMSystem11R1/products/Essbase/EssbaseServer/bin/essmsh: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory



[oracle@EPMVirt bin]$ yum whatprovides libnuma.so.1
numactl-2.0.7-6.el6.i686 : Library for tuning for Non Uniform Memory Access machines
Repo        : public_ol6_latest
Matched from:
Other       : libnuma.so.1



(As root install...)
[root@EPMVirt ~]# yum install numactl

Installed:
  numactl.x86_64 0:2.0.9-2.el6


Works now...
[oracle@EPMVirt bin]$ /u0/Oracle/Middleware/user_projects/epmsystem1/EssbaseServer/essbaseserver1/bin/startMaxl.sh

 Essbase MaxL Shell 64-bit - Release 11.1.2 (ESB11.1.2.4.000B193)
 Copyright (c) 2000, 2015, Oracle and/or its affiliates.
 All rights reserved.

MAXL>


EPMVirt: Get Your New Hyperion 11.1.2.4 Virtual Environment

$
0
0
I have finished putting together the latest EPMVirt release for automating the new Hyperion 11.1.2.4 Installation/Configuration. Check it out:
What is EPMVirt?
  • Prerequisites completed for Oracle RDBMS/EPM
  • Automated Linux Install
  • Automated Oracle DB Installation
  • Database configuration for EPM
  • Automated EPM Installation
  • Automated EPM Configuration
  • Automated Configuration of Sample Planning App
Don't spend time fussing around with the install, try EPMVirt and immediately start evaluating Hyperion 11.1.2.4!

How to get HFM running on 11.1.2.4 Oracle Linux

$
0
0

HFM is only officially supported for 11.1.2.4 on Windows and Exalytics. However, some are looking to get it working on Oracle Linux (OEL). EPMVirt is based on OEL so I was curios if I could get it working. Note: This is a hack and is not supported.

First, you will notice when creating a new application, this error appears:

EPMHFM-66054: The system was unable to find the Datasource process for application.


The corresponding error message in the logs is

==> /u0/Oracle/Middleware/user_projects/epmsystem1/diagnostics/logs/hfm/oracle-epm-fm-hsx-server.log <==
[2015-02-01T13:51:52.457-05:00] [FM] [NOTIFICATION] [] [oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceProcessManager] [tid: 13] [ecid: 0000Kh6SoCBFw000jzwkno1KnTf90000yN,0:4] [SRC_CLASS: oracle.epm.fm.dslm.DatasourceProcessManager] [SRC_METHOD: startDatasourceProcess] Starting a new datasource process for the application HHH
[2015-02-01T13:51:52.463-05:00] [FM] [ERROR] [EPMHFM-66076] [oracle.FM.FMCOMMON.oracle.epm.fm.common.ServiceClientFactory] [tid: 13] [ecid: 0000Kh6SoCBFw000jzwkno1KnTf90000yN,0:4] [SRC_CLASS: oracle.epm.fm.common.ServiceClientFactory] [SRC_METHOD: getClient] Server EPMVirt is unavailable, connection could not be established.[[
org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused
at org.apache.thrift.transport.TSocket.open(TSocket.java:185)
at oracle.epm.fm.common.ServiceClientFactory.getProtocol(ServiceClientFactory.java:171)
at oracle.epm.fm.common.ServiceClientFactory.getClient(ServiceClientFactory.java:71)
at oracle.epm.fm.dslm.DatasourceManagerImpl.pingDatasource(DatasourceManagerImpl.java:1038)
at oracle.epm.fm.dslm.DatasourceManagerImpl.performDataSourceHealthCheckup(DatasourceManagerImpl.java:804)
at oracle.epm.fm.dslm.DatasourceManagerImpl.getDatasourceInfo(DatasourceManagerImpl.java:681)
at oracle.epm.fm.hsxserver.service.HsxServerDelegate.openApplication(HsxServerDelegate.java:117)
at oracle.epm.fm.hsxserver.service.HsxServerImpl.createSession(HsxServerImpl.java:261)
at oracle.epm.fm.hsxserver.service.HsxServerServiceHandler.createSession(HsxServerServiceHandler.java:201)
at oracle.epm.fm.common.service.hsxserver.HsxServerService$Processor$createSession.getResult(HsxServerService.java:3851)
at oracle.epm.fm.common.service.hsxserver.HsxServerService$Processor$createSession.getResult(HsxServerService.java:3835)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at org.apache.thrift.transport.TSocket.open(TSocket.java:180)
... 16 more
This is a very generic error meaning that the xfmdatasource is not initializing properly. There is not much logging so it is necessary to dive into the weeds to debug.

First you will notice that some of the shared libraries are missing  by running ldd on the exe file,



This coaxes out the openssl library

yum install openssl098e


Finally all the objects resolve:
[oracle@EPMVirt ~]$ export LD_LIBRARY_PATH=/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/:/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/:/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib
[oracle@EPMVirt ~]$
[oracle@EPMVirt ~]$ ldd /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/xfmdatasource.exe
        linux-vdso.so.1 =>  (0x00007fff52f51000)
        libboost_system-gcc41-mt-1_48.so.1.48.0 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_system-gcc41-mt-1_48.so.1.48.0 (0x00007f66bd8af000)
        libxfmsession.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmsession.so (0x00007f66bd672000)
        libxfmjournals.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmjournals.so (0x00007f66bd3ad000)
        libxfmicm.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmicm.so (0x00007f66bd0e1000)
        libxfmdata.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmdata.so (0x00007f66bcc5f000)
        libxfmprocessflow.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmprocessflow.so (0x00007f66bc9b6000)
        libxfmreports.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmreports.so (0x00007f66bc71f000)
        libxfmdatacubes.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmdatacubes.so (0x00007f66bc4f8000)
        libxfmdqi.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmdqi.so (0x00007f66bc25a000)
        libxfmcalculate.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmcalculate.so (0x00007f66bbfe4000)
        libthrift-0.9.0.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libthrift-0.9.0.so (0x00007f66bbd38000)
        libboost_locale-gcc41-mt-1_48.so.1.48.0 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_locale-gcc41-mt-1_48.so.1.48.0 (0x00007f66bba97000)
        libboost_thread-gcc41-mt-1_48.so.1.48.0 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_thread-gcc41-mt-1_48.so.1.48.0 (0x00007f66bb87c000)
        libboost_regex-gcc41-mt-1_48.so.1.48.0 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_regex-gcc41-mt-1_48.so.1.48.0 (0x00007f66bb590000)
        libboost_filesystem-gcc41-mt-1_48.so.1.48.0 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_filesystem-gcc41-mt-1_48.so.1.48.0 (0x00007f66bb371000)
        libxerces-depdom.so.28 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxerces-depdom.so.28 (0x00007f66bb0fd000)
        libxerces-c.so.28 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxerces-c.so.28 (0x00007f66baae1000)
        libboost_date_time-gcc41-mt-1_48.so.1.48.0 => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_date_time-gcc41-mt-1_48.so.1.48.0 (0x00007f66ba8d0000)
        libhfmcassecurity.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhfmcassecurity.so (0x00007f66ba687000)
        libhsxsecurity.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsxsecurity.so (0x00007f66ba425000)
        libhsxdssecurity.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsxdssecurity.so (0x00007f66ba13b000)
        libhsxsystemconfig.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsxsystemconfig.so (0x00007f66b9edf000)
        libhsvdqiinternal.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdqiinternal.so (0x00007f66b9b53000)
        libxfmmetadata.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmmetadata.so (0x00007f66b9749000)
        libhsvdatasourceimpl.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdatasourceimpl.so (0x00007f66b94b7000)
        libxfmsysteminfo.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmsysteminfo.so (0x00007f66b91da000)
        libxfmsecurityaccess.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmsecurityaccess.so (0x00007f66b8f0c000)
        libxfmsystemchange.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmsystemchange.so (0x00007f66b8cf7000)
        libhsvdsjournals.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsjournals.so (0x00007f66b80ff000)
        libhsvdsicm.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsicm.so (0x00007f66b7d4f000)
        libwsock32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libwsock32.so (0x00007f66b7c3e000)
        libhsvdscalculate.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdscalculate.so (0x00007f66b7577000)
        libhsvdsmemberlists.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsmemberlists.so (0x00007f66b71a5000)
        libhsvdsmemberlistscript.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsmemberlistscript.so (0x00007f66b6f51000)
        libhsvdsrulesom.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsrulesom.so (0x00007f66b694a000)
        libhsvdsdata2.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsdata2.so (0x00007f66b624b000)
        libhsvscriptengine.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvscriptengine.so (0x00007f66b5ff3000)
        libhsvmdarraysinternal.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvmdarraysinternal.so (0x00007f66b5d14000)
        libhsvdstransactions.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdstransactions.so (0x00007f66b5aee000)
        libhsvdsdatacubes2.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsdatacubes2.so (0x00007f66b56f0000)
        libhsvdscalcstatus.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdscalcstatus.so (0x00007f66b5300000)
        libhsvdsreports.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsreports.so (0x00007f66b504d000)
        libhsvdsmetadata2_x64.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsmetadata2_x64.so (0x00007f66b4961000)
        libhsvdssysteminfo.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdssysteminfo.so (0x00007f66b45e7000)
        libhfmrulesinfo.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhfmrulesinfo.so (0x00007f66b43cf000)
        libhsvdssystemchange.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdssystemchange.so (0x00007f66b4181000)
        libxfmdssql.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmdssql.so (0x00007f66b3efa000)
        libxfmclustercontroller.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmclustercontroller.so (0x00007f66b3c42000)
        libhsvmetadataapp.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvmetadataapp.so (0x00007f66b3a05000)
        libatl.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libatl.so (0x00007f66b38dd000)
        libhsxodbc.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsxodbc.so (0x00007f66b3640000)
        libxfmjhsxserverwrapper.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmjhsxserverwrapper.so (0x00007f66b324d000)
        libcrypt32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libcrypt32.so (0x00007f66b3052000)
        libversion.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libversion.so (0x00007f66b2f46000)
        libshell32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libshell32.so (0x00007f66b2d68000)
        libcomctl32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libcomctl32.so (0x00007f66b2bb9000)
        libshlwapi.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libshlwapi.so (0x00007f66b2a2a000)
        libmwsafe.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libmwsafe.so (0x00007f66b290b000)
        libhsvmetadatadiff.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvmetadatadiff.so (0x00007f66b267d000)
        libhsvmetadataxml.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvmetadataxml.so (0x00007f66b23e1000)
        libxfmcommon.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libxfmcommon.so (0x00007f66b20bc000)
        liboleaut32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/liboleaut32.so (0x00007f66b1e71000)
        libole32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libole32.so (0x00007f66b1bbc000)
        libmfc400su.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libmfc400su.so (0x00007f66b184c000)
        libuuid.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libuuid.so (0x00007f66b1720000)
        libolepro32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libolepro32.so (0x00007f66b161d000)
        librpcrt4.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/librpcrt4.so (0x00007f66b145a000)
        libmsvcrt.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libmsvcrt.so (0x00007f66b1336000)
        libgdiuser32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libgdiuser32.so (0x00007f66b0fb9000)
        libadvapi32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libadvapi32.so (0x00007f66b0e82000)
        libkernel32.so => /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/libkernel32.so (0x00007f66b0c38000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f66b0a11000)
        libodbc.so.1 => /u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/libodbc.so.1 (0x00007f66b0768000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f66b03d4000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f66b01d0000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f66afec9000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f66afc45000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f66afa2f000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f66af818000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f66af610000)
        libssl.so.6 => /usr/lib64/libssl.so.6 (0x00007f66af3be000)
        libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007f66af062000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f66aed20000)
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f66aeb0f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f66bdab3000)
        libodbcinst.so => /u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/libodbcinst.so (0x00007f66ae8de000)
        libARicu27.so => /u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/libARicu27.so (0x00007f66ad9e7000)
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f66ad7a2000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f66ad4bc000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f66ad2b8000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f66ad08b000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f66ace6d000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f66acc61000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f66aca5e000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f66ac844000)
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f66ac640000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f66ac421000)
[oracle@EPMVirt ~]$

Also to get one of the libs to resolve I did this hack, not sure if it is needed:
ln -s /usr/lib64/libicuuc.so.42 /usr/lib64/libicuuc.so.36

I tried installing the boost-devel package, but still got a undefined symbol

/home/oracle/app/oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/xfmdatasource.exe: symbol lookup error: /home/oracle/app/oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_locale-gcc41-mt-1_48.so.1.48.0: undefined symbol: _ZTIN7icu_3_68CalendarE

The only way I know to resolve this would be to build from source. I grabbed the boost 1.48 source package
http://sourceforge.net/projects/boost/files/boost/1.48.0/
boost_1_48_0.tar.gz


Then build the package:
cd boost_1_48_0/
./bootstrap.sh --prefix=/u0/Oracle/boost
./b2 install

Now, these classes are registered at the end of the EPM configuration using a regsrv32 variant.  Since the shared libraries were messed up, the classes never got registered correctly. Make sure you have HFM started at this point.


Let's edit the script to use the new libraries. 

First, put them somewhere convenient,
In the boost_1_48_0/ directory
mkdir /u0/Oracle/boost_libs
/bin/cp ./bin.v2/libs/locale/build/gcc-4.4.7/release/threading-multi/libboost_locale.so.1.48.0 /u0/Oracle/boost_libs
/bin/cp ./bin.v2/libs/thread/build/gcc-4.4.7/release/threading-multi/libboost_thread.so.1.48.0 /u0/Oracle/boost_libs
/bin/cp ./bin.v2/libs/date_time/build/gcc-4.4.7/release/threading-multi/libboost_date_time.so.1.48.0 /u0/Oracle/boost_libs
/bin/cp ./bin.v2/libs/filesystem/build/gcc-4.4.7/release/threading-multi/libboost_filesystem.so.1.48.0 /u0/Oracle/boost_libs
/bin/cp ./bin.v2/libs/regex/build/gcc-4.4.7/release/threading-multi/libboost_regex.so.1.48.0 /u0/Oracle/boost_libs
/bin/cp ./bin.v2/libs/system/build/gcc-4.4.7/release/threading-multi/libboost_system.so.1.48.0 /u0/Oracle/boost_libs
Next edit
/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/hfm_post_install_steps.sh

At the top of the script, after "#!/bin/sh" add the following lines:

/bin/cp /u0/Oracle/boost_libs/libboost_locale.so.1.48.0 /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_locale-gcc41-mt-1_48.so.1.48.0
/bin/cp /u0/Oracle/boost_libs/libboost_thread.so.1.48.0 /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_thread-gcc41-mt-1_48.so.1.48.0
/bin/cp /u0/Oracle/boost_libslibboost_date_time.so.1.48.0 /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_date_time-gcc41-mt-1_48.so.1.48.0
/bin/cp /u0/Oracle/boost_libslibboost_filesystem.so.1.48.0 /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_filesystem-gcc41-mt-1_48.so.1.48.0
/bin/cp /u0/Oracle/boost_libs/release/threading-multi/libboost_regex.so.1.48.0 /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_regex-gcc41-mt-1_48.so.1.48.0
/bin/cp /u0/Oracle/boost_libslibboost_system.so.1.48.0 /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libboost_system-gcc41-mt-1_48.so.1.48.0

Now execute the script and verify correct registration of the objects:

export LD_LIBRARY_PATH=/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/:/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/lib-amd64_linux_optimized/:/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/
export EPM_ORACLE_HOME=/u0/Oracle/Middleware/EPMSystem11R1
./hfm_post_install_steps.sh 

/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/hfm_post_install_steps.sh
Sourcing the mainwin runtime environment required for registration ...Registering COM objects ....RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhfmcassecurity.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsxdssecurity.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsxsecurity.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvsystemactivity.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvsharedappdata.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsxsystemconfig.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvscriptengine.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsmemberlistscript.so succeeded.RegSvr32: DllRegisterServer in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/libhsvdsrulesom.so succeeded.Completed post install steps.[oracle@EPMVirt ~]$

Next, I added the data source to DataDirect odbc configuration:
I changed the "/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/odbc.ini"
file to read:
[ODBC Data Sources]
Oracle Wire Protocol=DataDirect 7.1 Oracle Wire Protocol
[ODBC]
IANAAppCodePage=4
InstallDir=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1
Trace=0
TraceFile=odbctrace.out
TraceDll=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/ARtrc27.so
[Oracle Wire Protocol]
ServerName=HFMTNS
Driver=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/ARora27.so
Description=DataDirect 7.1 Oracle Wire Protocol
TNSNamesFile=/u0/app/oracle/product/12.1.0/dbhome_1/network/admin/HYPDB/tnsnames.ora
Host=EPMVirt

also making sure to add HFMTNS as part of the tnsnames.ora config:

HFMTNS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = HYPDB)
    )
  )


Kill your Hsx server process, and retry creating the application:

ps -wwef | grep -i hsx | awk '{ print $2 }' | xargs kill -9

/u0/Oracle/Middleware/user_projects/epmsystem1/bin/startHFMJavaServer.sh


You should see:
/u0/Oracle/Middleware/user_projects/epmsystem1/diagnostics/logs/starter/startHsxServer.sh.log
<Feb 5, 2015 2:14:08 AM EST> <Info> <oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceManagerImpl> <BEA-000000> <Waiting for Data Source to start for application NICK1...>
XDS: ping request received. App name: NICK1 State: INITIALIZING DS LAYER
<Feb 5, 2015 2:14:08 AM EST> <Info> <oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceManagerImpl> <BEA-000000> <DataSource Process status for the application : NICK1 , Status : INITIALIZING_DS >
XDS: ping request received. App name: NICK1 State: INITIALIZING DS LAYER
<Feb 5, 2015 2:14:11 AM EST> <Info> <oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceManagerImpl> <BEA-000000> <DataSource Process status for the application : NICK1 , Status : INITIALIZING_DS >
<Feb 5, 2015 2:14:14 AM EST> <Info> <oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceManagerImpl> <BEA-000000> <Waiting for Data Source to start for application NICK1...>
XDS: ping request received. App name: NICK1 State: INITIALIZING DS LAYER
<Feb 5, 2015 2:14:14 AM EST> <Info> <oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceManagerImpl> <BEA-000000> <DataSource Process status for the application : NICK1 , Status : INITIALIZING_DS >
XDS: HsvDatasourceImpl successfully initialized.
XDS: *** XfmDatasource for NICK1 successfully started. ***
XDS: ping request received. App name: NICK1 State: RUNNING
XDS: There are 0 session(s) in the session map for NICK1
<Feb 5, 2015 2:14:17 AM EST> <Info> <oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceManagerImpl> <BEA-000000> <The datasource process with PID -  4018 for the application NICK1 is started successfully.>
<Feb 5, 2015 2:14:45 AM EST> <Info> <oracle.FM.HSXDATAACCESS.oracle.epm.fm.dal.dao.application.ParametersDAOImpl> <BEA-000000> < return value : StandardConsol>



EPMVirt 11.1.2.4 now with HFM

HFM 11.1.2.4 Architecture

$
0
0
There seems to be great deal of changes in the 11.1.2.4 HFM release for Linux. I have reviewed the typical Oracle docs for info and did not find anything detailing the architecture. I figure it is worth fleshing out what I have learned. Keep in mind that I do not have any special internal knowledge so this is all just speculation based on observation.




The main tier which the user interacts with is the familiar WebLogic ADF application. This is pretty familiar to prior versions so I will gloss over this.

Moving into the application layer, the primary interface is the Java based HsxServer application. It is involved when you use LCM, create/add/delete or interact with HFM through Workspace. In Oracle terms, this is also referred to as JHsxServer (Java based). The main Java application class is oracle.epm.fm.hsxserver.HsxServer. The server does not perform any of the actual calculations. It spawns another process to act as the main calculation engine.

The HsxServer process kicks off a separate process for each HFM application, called xfmdatasource. The xfmdatasource is written in C and seems to have been ported to Unix via some abstraction layers. There is still a very Windows feel to the process, as you will see.

To start let's begin by investigating xfmdatasource.
Start with a ps listing:
 6483 oracle    20   0 1501m  54m  32m S 14.3  1.1   0:00.58 xfmdatasource.exe

Using the pid we can get the command line and environment variables used to start the process.

[oracle@EPMVirt ~]$ cat /proc/6483/cmdline
/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/xfmdatasource.exe/XDSManagementPort=10005/XDSHandlersPort=10006/JHsxServerPort=9091/AppName=COMMA4DIM/SecKey=¾¼Ã¿Â¢/EpmOracleInstance=/u0/Oracle/Middleware/user_projects/epmsystem1/LogFolder=/u0/Oracle/Middleware/user_projects/epmsystem1/diagnostics/logs/hfm

One thing to note here is the various ports xfmdatasource uses. Also useful is the logging location. To investigate errors during startup you could look in this folder. However this only works if the process starts up enough to initialize the logger.

Taking a look at the environment variables one can see some hints at ODBC and something called MW... 
xargs -n 1 -0 < /proc/6483/environ
...
ODBCINST=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/odbcinst.ini
EPM_ORACLE_INSTANCE=/u0/Oracle/Middleware/user_projects/epmsystem1
MWHOME=/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw
MWOS=linux

What is the MW? MainWin...

Poking around in the MWHOME folder you can see some utilities to get a better idea. 
 reg - an mwadm command, administers the MainWin System Core (MSC)
         registry services.

Usage: mwadm command [parameters]
Following is the list of commands supported by the mwadm utility:

version displays the version number of the MSC.
help            displays help on using mwadm and its commands.
stop            stops all MSC services in an orderly manner.
start           manually starts all MSC services.
status          provides vital signs of the MSC services.
log             administers the MSC logs.
sec             administers MSC DCOM security settings.
reg             administers the MSC registry service.

export MWREGISTRY=/home/oracle/.mw/hklm_amd64_linux.bin

[oracle@EPMVirt bin]$ ./mwadm status
Run-time mode       : professional
Core Services status: running
Core Data Directory : /home/oracle/.mw/core_data/EPMVirt
RPC Port            : dynamic
[oracle@EPMVirt bin]$

Here are the unix processes involved:
[oracle@EPMVirt bin]$ ./mwadm reg -ps
uid:    500     pid:   6553     hkcu: /home/oracle/.mw/core_data/EPMVirt/.mw/hkcu.bin
uid:    500     pid:   6483     hkcu: /home/oracle/.mw/hkcu.bin
[oracle@EPMVirt bin]$

The next question to answer is how is MainWin used by xfmdatasource?

Further investigation uncovers a file, hfm_post_install_steps.sh
"/u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/hfm_post_install_steps.sh"

Towards the end of the script we see some references to MWHOME

echo "Sourcing the mainwin runtime environment required for registration ..."
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPM_ORACLE_HOME/products/FinancialManagement/Server
export MWHOME=$EPM_ORACLE_HOME/products/FinancialManagement/Server/mw
source $MWHOME/setmwruntime

echo "Registering COM objects ...."
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhfmcassecurity.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsxdssecurity.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsxsecurity.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsvsystemactivity.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsvsharedappdata.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsxsystemconfig.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsvscriptengine.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsvdsmemberlistscript.so
regsvr32 -c -nodisplay $EPM_ORACLE_HOME/products/FinancialManagement/Server/libhsvdsrulesom.so

What is going on here? Essentially after HFM is installed it registers COM objects using regsvr32. What is regsvr32 and what's it doing on Linux? This is part of the MainWin installation 
located in /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/mw/bin-amd64_linux_optimized/regsvr32

Finally, this reveals the purpose of MainWin - to house the simulated Windows registry components for COM objects required by HFM xfmdatasource process.

Next, let's shift away from MainWin for a bit and focus on the dependencies for xfmdatasource.

the xfmdatasource.exe process has the boost libraries as a prerequisite:
[oracle@EPMVirt ~]$ ldd /u0/Oracle/Middleware/EPMSystem11R1/products/FinancialManagement/Server/xfmdatasource.exe | grep boost
        libboost_system-gcc41-mt-1_48.so.1.48.0
        libboost_locale-gcc41-mt-1_48.so.1.48.0
        libboost_thread-gcc41-mt-1_48.so.1.48.0
        libboost_regex-gcc41-mt-1_48.so.1.48.0
        libboost_filesystem-gcc41-mt-1_48.so.1.48.0
        libboost_date_time-gcc41-mt-1_48.so.1.48.0
[oracle@EPMVirt ~]$

What is libboost?
http://www.boost.org/

Boost is essentially an open source set of C libraries focusing on being portable between different platforms. HFM uses boost to be more platform independent. Specifically, it looks like Boost is used in a lot of low level calls like threading, file system access. Presumably, code written using Boost would work on Linux and Windows, providing portability without having to rewrite code.

One last thing we discover looking at the xfmdatasource environment is the ODBC datasource dependency. Now let's investigate the ODBC piece. We are familiar with ODBC from Essbase drill through. However, this is the first it is being used with HFM. 

The main configuration takes place in a file called odbc.ini

[oracle@EPMVirt Oracle]$ cat ./Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/odbc.ini
[ODBC Data Sources]
Oracle Wire Protocol=DataDirect 7.1 Oracle Wire Protocol

[ODBC]
IANAAppCodePage=4
InstallDir=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1
Trace=0
TraceFile=odbctrace.out
TraceDll=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/ARtrc27.so

[Oracle Wire Protocol]
ServerName=HFMTNS
Driver=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/ARora27.so
Description=DataDirect 7.1 Oracle Wire Protocol
TNSNamesFile=/u0/app/oracle/product/12.1.0/dbhome_1/network/admin/HYPDB/tnsnames.ora
Host=EPMVirt
[oracle@EPMVirt Oracle]$

The Hyperion configuration actually sets up a new TNS connection named HFMTNS. 

[oracle@EPMVirt Oracle]$ tnsping HFMTNS

TNS Ping Utility for Linux: Version 12.1.0.1.0 - Production on 23-FEB-2015 01:52:34

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = HYPDB)))
OK (0 msec)
[oracle@EPMVirt Oracle]$

Sometimes it may be necessary to test the ODBC connection to ensure connectivity and help with troubleshooting. You can use the unix utility isql for basic connectivity.

First, setup the utility:
yum install -y unixODBC
ln -fs /u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/odbc.ini ~/.odbc.ini
export LD_LIBRARY_PATH=/u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/lib/

Next, try to connect:
[oracle@EPMVirt ~]$ isql -v "Oracle Wire Protocol" EPM_HSS PWD
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

Trying apparently one step to far! Not able to perform any queries due to licencing restrictions. 
SQL> select max(starttime) from SMA_AUDIT_FACT;
Warning:
[DataDirect][ODBC Oracle Wire Protocol driver]The DataDirect product you are attempting to access has been provided to you by Oracle for exclusive use with Oracle products.  You are not licensed to use this product with any application other than Oracle products.   If you would like to purchase this product for some other use, please call 800-876-3101 or visit DataDirect at www.datadirect.com
+---------------------------+
| MAX(STARTTIME)            |
+---------------------------+
|                           |
+---------------------------+
SQLRowCount returns -1
1 rows fetched
SQL>

Bummer.. 


In conclusion, the post describes how HsxServer depends on xfmdatasource.exe. Some of the dependencies of xfmdatasource are Boost, MWHOME, and ODBC. Knowing more about these dependencies can greatly help in understanding the architecture.


Useful Administrative Tools in Windows

$
0
0
Do you work with Hyperion in Windows and feel like your hands are tied? Like a fish out of water? OK, maybe this is an exaggeration for most admins, but as a former Linux sysadmin it is how I feel most days. I wanted to share some tools that can be used to help bridge the gap and become a Windows power user as it relates to Hyperion. Please feel free to share your own tools and ideas in the comments.

Note: Each of these tools has its own licencing agreement. Please carefully read and adhere to each licence. 

AstroGrep

Unix equivalent: grep
Find strings in files. AstroGrep is much more powerful than windows find utility. The Windows find utility only searches for whole words. For example, "this is an exception" vs. "java.lang.exception". The Windows find utility only finds the first example, yet AstroGrep finds both strings.

If Hyperion throws a weird message or error, you can use AstroGrep to search the file system for the file to help pinpoint where it is coming from and get more context around the error. It can be useful to find specific server names, passwords, usernames, etc in files such as MAXL scripts.

In the example below I am searching the *.log files in the EPM Diagnostics folder for the string "Exception".

WinDiff

Unix equivalent: diff

Diff files, or recursively entire directories for changes. For instance, compare the EPMA accounts from an LCM export taken at two different times to identify the differences in EPMA metadata.

mTAIL

Unix equivalent: tail -f
Windows error log tailer. It is used to monitor logs in real time. Simply drag and drop a file from windows explorer into mTAIL, click the start button and it will start displaying updates to the log file in real time. This is handy when you need to check a file over and over for updates, such as looking for new errors. It is also useful if you are constantly restarting WebLogic to check log for errors during startup.



Process Explorer and Handle

Unix equivalent: lsof
Ever try to rename or delete that certain folder and it keeps saying it is in use, but you do not see anything open? Ever have trouble with Hyperion patches failing to apply because some files in use? Obviously, the first step is to search task manager for Hyperion related processes. However, there are some pesky situations where this alone cannot identify the culprit. Process Explorer has an option to search file handles, and is easier to use. The Handle tool is a command line tool and kind of archaic, but can also find what is using the files you want to get access to.

WinDirStat

Unix equivalent: du -k | sort -n
Out of disk space? Need a quick tool to discover the where the most space is being consumed? WinDirStat gives you an ordered list of disk space consumption and lets you drill through, finding what is using all the disk space on your system.


mRemoteNG

  Sadly, the opensource form of this tool is deprecated. It it a very useful remote desktop/SSH session manager for Windows. Integrates nicely with PuTTY.

Process Monitor

Unix equivalent: strace
A very low level tool to see the system calls a process is making while executing. Typically this tool comes out when all of the normal avenues have been tried to solve the problem. Sometimes getting down to the level of system calls can pinpoint things like missing files, bad security, and bugs. This helps figure out why a process is crashing by seeing what unexpected conditions the process encountered while running.

Internet Explorer Developer tools

Similar tools also available in Chrome and Firefox

Network profiling can help find latency in your requests. For instance, you can measure the time it takes to get resources from different geographic regions and pinpoint certain latency issues. From the example below, there are a ton of images and background activity after each click in Hyperion. Sometimes slow performance can be found on the front-end using this method. It is also useful to inspect in detail certain processes for debugging purposes.

Simply go to Tools -> F12 Developer Tools. Select the Network tab, and "start capturing".


Handling WebLogic Failures

$
0
0

The default behavior when a critical error occurs in a running WebLogic application is to do nothing about the failure condition. This can cause the web server, OHS, to keep routing traffic to the service, even in a highly available situation where there is more than one server available. This situation leaves many with HA setups vulnerable to a single point of failure.

The basic problem is that when you have a WebLogic service running, such as HFM, and it encounters a critical situation such as out of memory (OOM) error, the service comes to a halt and cannot process users requests. End users are left with their requests spinning in the web browser until they eventually timeout. It is important to configure the WebLogic Managed Server to acknowledge the failure and shut itself down quickly so that the other member of the cluster can take over.

Two settings in WebLogic can help with this, under the theme Overload protection. The settings are Failure Action and Panic Action.

  

This can be scripted to set for all managed servers using WLST
connect(....)  
edit() 
startEdit()
servers = cmo.getServers()
for server in servers:
  name=server.getName()
               cd('OverloadProtection/' + name)
      cmo.setPanicAction('system-exit')               
      cmo.setFailureAction('force-shutdown')
    save()
    activate()



More Details about overload protection can be found here:
http://www.dba-oracle.com/t_weblogic_overload_protection.htm

Taking this scenario one step further, rather than just failing, Node Manager can be used automatically restart the failed service. However, Node Manager is most often used as an optional component, so you would need to decide whether to implement Node Manager to use these features.




Auto Restarting Windows Services

$
0
0
I wanted to discuss a very simple task to help with keeping services running. In most cases if you have some service running and it unexpectedly crashes, you want it to automatically come back up. This holds true whether you are an EPM pro or just starting out.

In an earlier post, I talked about a more complex event like running an external script upon failure.
http://epm-errors.blogspot.com/2014/12/how-to-triage-hyperion-windows-service.html
The external script solution can be good for very specific cases, but it takes a bit of work to setup. To expand upon this specific case, it is a good idea to have every Hyperion service to auto restart upon failure. This is much simpler than setting up custom scripts. It is a simple property in the Windows service settings.

The settings are located in Windows Services, under the service properties there is a Recovery tab. Here you can set the action to "Restart the Service"



An easy way to script this is to get the Service names for all Hyperion components and write up something like this:
sc \\localhost failure HyS9FRReports actions= restart/60000/restart/60000/""/60000 reset= 0
Localhost can be replaced by the server name.

Some additional tips:
  • Don't infinity restart the service by setting the "subsequent failures" box. At some point you'll want to have it crash and stay down rather than flap up and down constantly.
  • This restart action is not intended to solve the root cause of problems. You should be detecting when the services crash to take additional action on the root cause.
  • This customization is overwritten whenever you run the Hyperion Config Tool. Config Tool resets the service properties and the custom settings would need reapplied. 


Linux Tips - Beyond the Basics (Part 1)

$
0
0
As a lot of recent posts have focused on Windows tips, a coworker of mine suggested writing up some Unix tips. Many day to day operations in Unix can be performed using the same old techniques and a lot of Unix users become stagnant and do not progress to help improve Unix skills beyond the basics. Here are everyday tips I still find useful from my days as a Unix admin.

There is a lot that can be covered, at this point it looks like this will be a multi-part series of articles. Feel free to comment with any suggested topics.

Simple Bash Navigation
There is no excuse for fumbling around on the command line. This is your primary interface to Unix and Hyperion. However, this all breaks down when your boss is looking over your shoulder and you start fumbling around like a novice.

(emacs key bindings)
CTRL +a beginning of line,
CTRL+ e end of line
CTRL + k - cut from current position to end of the line
CTRL + y - yank back the cut contents at the current cursor position
Learn other cool tips like swapping the position of command line arguments:
http://ss64.com/bash/syntax-keyboard.html

Ctrl+r at the Bash Shell
This is the recall command; the most useful feature in the bash shell. Maneuvering in the Unix shell often requires complex commands and long paths. Most users are familiar with the history command and the up and down arrows to access recent history. However, this is inefficient. At the command prompt press CTRL+r and type any unique part of the string containing the command that you want to recall. This powerful feature lets you pull up anything from the history by typing in a few unique characters. You may have used this before. Web browsers have copied this feature in the URL prompt. For instance, typing /em in Chrome can pull back "https://server:7002/em". After some time using this feature your brain starts to rewire and it becomes a snap to use "recall" mode to rapidly pull up commands to run or edit.

If there is more than one match, pressing CTRL+r again will go to a prior match the command history. CTRL + p and CTRL + r also cycle back and forth between matches.

Advanced users will find that the more commands you type in with full paths, the more the recall feature helps. For instance, if you run a command by changing into 6 directories with individual cd commands and then run the command with a relative path, the recall feature won't help piece this together. It is encouraged to enter the full paths to the command so it is easily run from any location at a different time.

Become Very Familiar with your Editor of Choice
The text editor is the most powerful tool on the Linux box. Vi or EMACS or Other? Either way - learn more than the basics, these are powerful editors can can save tons of time.

Emacs:
https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf

Vi:
http://www.albany.edu/faculty/hy973732/ist535/vi_editor_commands.pdf

Screen
The Unix command prompt is a fragile thing when running over a network connection via SSH. Ever run a command, have it take longer than expected and now it's time to go home? Logging out will surely kill the long running process. This is very useful when running database backups that will take a while, yet the default timeout for your bash shell is only 20 minutes. This prevents the backup terminating when your shell is killed.


Screen basics:
Before running long running command type "screen" to enter screen session.

screen -S ScreenTest

sleep 1000000

Now detach your session
CTRL+a d

[detached from 11504.ScreenTest]

Log out and go home for the day.

When you get home, check what's running:
:~$ screen -ls
There are screens on:
        11504.ScreenTest        (04/08/2015 08:44:26 PM)        (Detached)
1 Socket in /var/run/screen

reattach to the running screen session:
screen -r ScreenTest
sleep 1000000 (sleep command is still sitting there executing)

Killing
kill all processes matching the word "java"

killall java
OR
ps -wwef | grep java | awk ' { print $2 } ' | xargs kill -9

Swiftly kill everything. If you have a service account such as "hyperion" and you need to quickly make sure all processes are down, assuming you have tried all sane ways to do this, you can kill everything running under the current user id by:
kill -9 -1
Tip: Don't do this as root.

Network Testing
The old "telnet" command to test if a service is running on a port is being deprecated. The nc command, "netcat" command can be used for basic connectivity.

:~$ nc -v localhost 80
nc: connect to localhost port 80 (tcp) failed: Connection refused

Also nc can be used to startup a mock network server on a port for testing connectivity between two machines. This allows you to test firewall rules long before you have setup the environment and realize the connectivity is not working.

On server1:
nc -l 1234    (start a server on port 1234)

from another machine, try to connect:
nc -v server1 1234
typing text on the client side should appear on the server side.

Copying Files Between Servers

rsync -a ~/tmp/dir1/ oracle@epmvirt:/tmp/destination

Bash For Loops
for i in a b c; do  echo $i ; done

for server in server1 server2 server3 server4 ; do scp file $server:/tmp/; done

Disk Space Consumption
du -m /u0 | sort -n

36643   /u0/app/oracle/product
68393   /u0/app/oracle/backups
320977  /u0/app/oracle/arch
576131  /u0/app/oracle
576230  /u0/app
605054  /u0/

This shows where to find the largest disk space consumers to quickly mitigate disk space issues. In this case we could check the archive logs directory and reduce disk space.

Learning a Programming Language
Often users get sucked into writing complex shell scripts. They start off innocent enough, but quickly shell scripting will show its weaknesses. Shell scripts become unwieldy with syntax and flow control - loops all over the place, difficult command line argument handling, poor error handling... etc. I encourage having a more elegant language to write scripts in. Any will do, but python can be a quick way to get started and is proven in the real world. Even if you completely new, spending a few hours on a tutorial site and then tackling a simple program in python will pay off in the long run over using a bash script.
A tutorial can be found here:
https://docs.python.org/2/tutorial/

Linux Tips - Beyond the Basics (Part 2)

$
0
0
Find log files in / last modified within 1 day
This is great when you are on an unfamiliar system or don’t know which log file you need to look at.
find / -name "*.log" -mtime -1


Interactively look at recent logs
Each log file modified within 1 day is constantly streamed. Simply retry the operation and watch the new log messages appear on the screen.
find / -name "*.log" -mtime -1 | xargs tail -f


Parsing Command Output
It is good to be able to quickly parse output from the command line. Fortunately with awk and grep, many operations are possible with basic knowledge.


Hypothetically, let’s say you want to find the number of network packets on the eth1 interface.
There are some easy commands to get this other commands to get this information, but, for the sake of learning, this example just uses basic parsing.


First the ifconfig command tells us this info on each interface, including the number of received packets, RX packets:


eth1      Link encap:Ethernet  HWaddr 08:00:27:B0:6A:94
         inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
         inet6 addr: fe80::a00:27ff:feb0:6a94/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:1522 errors:0 dropped:0 overruns:0 frame:0
         TX packets:1461 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:133938 (130.7 KiB)  TX bytes:339721 (331.7 KiB)


lo        Link encap:Local Loopback
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

But we want to only focus on the RX packets. Let's first eliminate the loopback interface. You could easily run ifconfig eth1, but it is also possible to grep for the data.


The following will focus on the "eth1" line and also display 5 lines after the eth1 match to get the RX packets line:


ifconfig | grep eth1 -A5


eth1      Link encap:Ethernet  HWaddr 08:00:27:B0:6A:94
         inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
         inet6 addr: fe80::a00:27ff:feb0:6a94/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:1556 errors:0 dropped:0 overruns:0 frame:0
         TX packets:1502 errors:0 dropped:0 overruns:0 carrier:0


Next, let’s keep trying to focus on the RX packets:
ifconfig | grep eth1 -A5 | grep RX  
[root@localhost tmp]# ifconfig | grep eth1 -A5 | grep RX
         RX packets:1572 errors:0 dropped:0 overruns:0 frame:0
Now it is down to parsing this line for the number of packets, say 1572...


The awk command can be used to split a line into columns where spaces separate the fields.
Therefore, if each space in the line above represents a column we can focus on column two:


ifconfig | grep eth1 -A5 | grep RX | awk ' {  print $2 } '
packets:1572


Great, now how can we strip out the “packets:” from the raw number we are looking for?
We already know that awk is good for selecting columns from text data. As the string is now, it can also be interpreted in column format by switching the delimiter from a space to colon. Therefore, selecting column 2 using a ":" delimiter with awk will finally give us the number
[root@localhost tmp]# ifconfig | grep eth1 -A5 | grep RX | awk ' {  print $2 } ' | awk -F ":"' { print $2 } '
1616


That's it!


What can be done with the number of packets? If you take a sample before after, say for 60 seconds one can derive a rough estimate of packets per second on the interface.


LENGTH=60
START=`ifconfig | grep eth1 -A5 | grep RX | awk ' {  print $2 } ' | awk -F ":"' { print $2 } '`;
sleep $LENGTH
END=`ifconfig | grep eth1 -A5 | grep RX | awk ' {  print $2 } ' | awk -F ":"' { print $2 } '`;
echo $START $END $LENGTH | awk ' { print ($2-$1)/$3 } '


Again the awk command in the last line is used to parse columns but additionally it can be used for doing simple arithmetic with the columns. For instance, packets/sec = ($END-$START)/$LENGTH


The thing to remember about this example is that this is not difficult. The solution only uses simple features of awk and grep.


This exercise can also be done without using ifconfig. As an exercise on your own try using
only the file /proc/net/dev and grep/awk commands. The same metric, RX packets, can be found here:
Inter-|   Receive                                                |  Transmit
face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
 eth1:  359967    4110    0    0    0     0          0         1   786631    3985    0    0    0     0       0          0
 eth2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
   lo:       0    



Windows service restart in action...

$
0
0
A while back I wrote a post on automatic service restarts using Windows:
http://epm-errors.blogspot.com/2015/04/auto-restarting-windows-services.html

I recently had the opportunity to watch one of the Windows automatic service restarts happen in a real production scenario. Complete with pagers firing, alerts going off, and, at the end of it, a completetly automatic service restart. This type of event is somewhat hard to trigger for testing, so it was nice to see it work as expected.

The event looked like this in Windows Event Viewer:

By the time I got logged in and was looking into the log file I noticed WebLogic starting back up. Ultimatly, no action was required. I never did find any error in the logs. However, there were some odd access log entries relating to a security scan and I think this ultimatly caused EAS to crash.

Basic WebLogic Tuning in EPM

$
0
0
Part of the EPM Infrastucture Tuning Guide is a section on WebLogic tuning. The guide can be found here, https://blogs.oracle.com/pa/resource/Oracle_EPM_11_1_2_3_Tuning_Guide_v2.pdf 

These steps are recommended, and will be required because any time you create an SR with Oracle they will ask, "Did you apply the recomended tuning guidelines?" Responding no to this question usually results in an impass and failure to complete the SR.

The basic WebLogic Tuning steps are:
1. Increase number of threads in connection pool
2. Tune connection backlog buffering
3. Stuck thread detection behavior tuning
4. Enable Native IO Performance pack.

Analyizing this a bit, steps 2 and 4 are already configured by default in 10.3.x. Consequently, they can be ignored.

The tuning guide shows how to somewhat teadilusly go and set the database connection pool settings and stuck threads using some screenshots. However, a scripted approach might be better to apply the settings in multiple enviroments, and ensure unifomity over time. A quick WLST script is below to do this. Keep in mind the tuning settings are just suggested values. For instance, stuck thread time is more an indicator of how long your longest acceptable web transaction might be, which is customer specific. In the script below EAS is configured with a different thread value than the rest of the managed servers, as an example.

Important Note: Once the connection pool is increased, you may also need to increase the number of available connections the database allows. For example, you may want to increase the number of processes in the Oracle Database.

File: TuneWL.py
connect(.....) 
edit() 
startEdit()

servers = cmo.getServers()
for server in servers:
  name=server.getName()
  print 'Tuning Cluster: '+ name
  cd('/Servers/' + name)   
  t_time = 1200
  if "Essbase" in name:
    t_time = 2400
    print "Setting EAS thread time to " + str(t_time)
  cmo.setStuckThreadMaxTime(t_time)
  cmo.setStuckThreadTimerInterval(t_time)


# JDBC connection pool

dsName = 'calc_datasource'cd('/JDBCSystemResources/'+dsName+'/JDBCResource/'+dsName+'/JDBCConnectionPoolParams/'+dsName)cmo.setMaxCapacity(30)

dsName = 'eas_datasource'cd('/JDBCSystemResources/'+dsName+'/JDBCResource/'+dsName+'/JDBCConnectionPoolParams/'+dsName)cmo.setMaxCapacity(30)

dsName = 'EPMSystemRegistry'cd('/JDBCSystemResources/'+dsName+'/JDBCResource/'+dsName+'/JDBCConnectionPoolParams/'+dsName)cmo.setMaxCapacity(150)

dsName = 'planning_datasource'cd('/JDBCSystemResources/'+dsName+'/JDBCResource/'+dsName+'/JDBCConnectionPoolParams/'+dsName)cmo.setMaxCapacity(150)

dsName = 'raframework_datasource'cd('/JDBCSystemResources/'+dsName+'/JDBCResource/'+dsName+'/JDBCConnectionPoolParams/'+dsName)cmo.setMaxCapacity(150)

save() 
activate() 
Output:

C:\Oracle\Middleware\user_projects\domains\EPMSystem\bin>setDomainEnv.cmd
C:\Oracle\Middleware\user_projects\domains\EPMSystem>java weblogic.WLST TuneWL.py


Starting an edit session ...
Started edit session, please be sure to save and actichanges once you are done.

Tuning Cluster: FoundationServices0
Tuning Cluster: EssbaseAdminServices0
Setting EAS thread time to 2400
Tuning Cluster: EpmaDataSync0

...

Silent Install and Configuration for EPM

$
0
0
One of the keys to reproducible installation and configuration is using a response file to store the configuration. The response file allows for rapid, scripted deployement across multiple environemnts. It also helps ensure others can easily repeat the installation.

The basis for EPMVirt is using response files for install/configuration. This allows for a building a process for a completetly scripted Hyperion environment.

The install was recorded like this:
/u0/install/epm/installTool.sh -record /u0/automation/epm/silentInstall.xml

The install is invoked like this:
/u0/install/epm/installTool.sh -silent /u0/automation/epm/silentInstall.xml

The config tool was recorded like this:
/u0/Oracle/Middleware/EPMSystem11R1/common/config/11.1.2.0/configtool.sh -record /u0/automation/epm/EPMconfig_Foundation.xml

The config tool is invoked like this:
/u0/Oracle/Middleware/EPMSystem11R1/common/config/11.1.2.0/configtool.sh -silent /u0/automation/epm/EPMconfig_Foundation.xml


For a closer look, let's dive into the files:
silentInstall.xml

<?xml version="1.0" encoding="UTF-8"?>
<HyperionInstall>
  <HyperionHome>/u0/Oracle/Middleware</HyperionHome>
  <UserLocale>en_US</UserLocale>
  <ActionType>0</ActionType>
  <SelectedProducts>
        <Product name="foundation">
            <ProductComponent name="foundationServices">
                <Component>hssWebApp</Component>
                <Component>staticContent</Component>
                <Component>weblogic</Component>
            </ProductComponent>
            <ProductComponent name="Calc">
                <Component>CalcWebApp</Component>
            </ProductComponent>
        </Product>
        <Product name="essbase">
            <Component>essbaseWebApp</Component>
            <Component>essbaseApsWebApp</Component>
            <Component>essbaseApsWebAppSamples</Component>
            <Component>essbaseStudioService</Component>
            <Component>essbaseStudioServiceSamples</Component>
            <Component>essbaseService</Component>
            <Component>essbaseServiceSamples</Component>
        </Product>
        <Product name="reportingAndAnalysis">
            <ProductComponent name="raFramework">
                <Component>raFrameworkWebApp</Component>
                <Component>raFrameworkService</Component>
            </ProductComponent>
            <ProductComponent name="fr">
                <Component>frWebApp</Component>
            </ProductComponent>
        </Product>
        <Product name="planning">
            <Component>planningWebApp</Component>
        </Product>
        <Product name="disclosure">
            <Component>disclosureWebApp</Component>
        </Product>
        <Product name="hfm">
            <Component>hfmAdmClient</Component>
            <Component>hfmWebApps</Component>
            <Component>hfmService</Component>
        </Product>
        <Product name="erpi">
            <Component>erpiWebApp</Component>
        </Product>
        <Product name="profitability">
            <Component>osloWebApp</Component>
            <Component>osloWebAppSamples</Component>
        </Product>
    </SelectedProducts>
  <ProductHomes/>
  <UpgradeCleanUp/>
  <UninstallCleanUp>false</UninstallCleanUp>
</HyperionInstall>


Silent Config - EPMconfig_Foundation.xml
It is pretty straight forward. Each product has its own section, and under each section is a task that you would find in the config tool. Following there are a series of bean objects which define the configuration values for each component.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<products>
  <instance>/u0/Oracle/Middleware/user_projects/epmsystem1</instance>
  <enable_compact_deployment_mode>true</enable_compact_deployment_mode>
  <auto_port_tick>true</auto_port_tick>
  <product productXML="Foundation">
    <tasks>
      <task>applicationServerDeployment</task>
      <task>FndCommonSetting</task>
      <task>preConfiguration</task>
      <task>relationalStorageConfiguration</task>
      <task>WebServerConfiguration</task>
    </tasks>
    <bean name="main">
      <bean name="applicationServerDeployment">
        <bean name="WebLogic 10">
          <property name="adminHost">localhost</property>
          <property name="adminPassword">AgzKbSiBZt2xNcQYXYjZ7qMeHz0qv6U7PosgZx76RSdPJqnOCohak8JSWBpC8ngw</property>
          <property name="adminPort">7001</property>
          <property name="adminUser">epm_admin</property>
          <beanList name="applications">
            <listItem>
              <bean>
                <property name="compactPort">9000</property>
                <property name="compactServerName">EPMServer</property>
                <property name="compactSslPort">9443</property>
                <property name="component">Shared Services</property>
                <beanList name="contexts">
                  <listItem>
                    <property>interop</property>
                  </listItem>
                </beanList>
                <property name="enable">true</property>
                <property name="port">28080</property>
                <property name="serverName">FoundationServices</property>
                <property name="sslPort">28443</property>
                <property name="validationContext">interop</property>
              </bean>
            </listItem>
          </beanList>
          <property name="BEA_HOME">/u0/Oracle/Middleware</property>
          <property name="domainName">EPMSystem</property>
          <property name="manualProcessing">false</property>
          <property name="remoteDeployment">false</property>
          <property name="serverLocation">/u0/Oracle/Middleware/wlserver_10.3</property>
        </bean>
      </bean>
      <bean name="customConfiguration">
        <property name="AdminEmail"/>
        <property name="adminPassword">2CvVUAlFeGfG1/SW1TS3u6b8wcJouqEEKp6s0KfyD806sQuDkm2LbJLNkUt4iY0S</property>
        <property name="adminUserName">admin</property>
        <property name="common_lwa_set">false</property>
        <property name="enable_SMTPServer_Authentication">false</property>
        <property name="enable_ssl">false</property>
        <property name="enableSslOffloading">false</property>
        <property name="externalUrlHost"/>
        <property name="externalUrlPort"/>
        <property name="filesystem.artifact.path">import_export</property>
        <property name="isSSLForSMTP">false</property>
        <property name="relativePaths"/>
        <property name="relativePathsInstance">filesystem.artifact.path</property>
        <property name="SMTPHostName"/>
        <property name="SMTPMailServer"/>
        <property name="SMTPPort">25</property>
        <property name="SMTPPortIncoming">143</property>
        <property name="SMTPServerPassword"/>
        <property name="SMTPServerUserID"/>
      </bean>
      <bean name="httpServerConfiguration">
        <property name="displayVersion">10.3.6</property>
        <property name="port">9000</property>
        <property name="protocol">http</property>
        <bean name="Proxy">
          <property name="path"/>
          <property name="port">9000</property>
          <property name="useSSL">false</property>
        </bean>
        <property name="sharedLocation">use_local_instance</property>
      </bean>
      <bean name="lwaConfiguration">
        <beanList name="batchUpdateLWAComponents"/>
        <beanList name="deploymentLWAComponents"/>
      </bean>
      <bean name="relationalStorageConfiguration">
        <bean name="ORACLE">
          <property name="createOrReuse">create</property>
          <property name="customURL">false</property>
          <property name="dbIndexTbsp"/>
          <property name="dbName">HYPDB</property>
          <property name="dbTableTbsp"/>
          <property name="dropRegistry">true</property>
          <property name="encrypted">true</property>
          <property name="host">epmvirt</property>
          <property name="jdbcUrl">jdbc:oracle:thin:@EPMVirt:1521:HYPDB</property>
          <property name="password">u/3u8zGjUgl6ekXFWdmCw8Ep992dW5WySl5q22W5Ty6kvzPM8FFJegduUsHaVXah</property>
          <property name="port">1521</property>
          <property name="SSL_ENABLED">false</property>
          <property name="userName">EPM_HSS</property>
          <property name="VALIDATESERVERCERTIFICATE">true</property>
        </bean>
      </bean>
      <property name="shortcutFolderName">Foundation Services</property>
    </bean>
  </product>
  <product productXML="workspace">
    <tasks>
      <task>applicationServerDeployment</task>
    </tasks>
    <bean name="main">
      <bean name="applicationServerDeployment">
        <bean name="WebLogic 10">
          <property name="adminHost">localhost</property>
          <property name="adminPassword">VH+syQvfsdYnKKP6VHA7OVvVTOa5kHSulb6MOJuJVQAJxGGVM12fO+fo0QDTp4//</property>
          <property name="adminPort">7001</property>
          <property name="adminUser">epm_admin</property>
          <beanList name="applications">
            <listItem>
              <bean>
                <property name="compactPort">9000</property>
                <property name="compactServerName">EPMServer</property>
                <property name="compactSslPort">9443</property>
                <property name="component">Workspace</property>
                <beanList name="contexts">
                  <listItem>
                    <property>workspace</property>
                  </listItem>
                </beanList>
                <property name="enable">true</property>
                <property name="port">28080</property>
                <property name="serverName">FoundationServices</property>
                <property name="sslPort">28443</property>
                <property name="validationContext">workspace/status</property>
              </bean>
            </listItem>
          </beanList>
          <property name="BEA_HOME">/u0/Oracle/Middleware</property>
          <property name="domainName">EPMSystem</property>
          <property name="manualProcessing">false</property>
          <property name="remoteDeployment">false</property>
          <property name="serverLocation">/u0/Oracle/Middleware/wlserver_10.3</property>
        </bean>
      </bean>
      <bean name="httpServerConfiguration">
        <property name="contextRoot">workspace</property>
        <property name="host">null</property>
        <property name="port">19000</property>
        <property name="protocol">http</property>
      </bean>
      <bean name="lwaConfiguration">
        <beanList name="batchUpdateLWAComponents"/>
        <beanList name="deploymentLWAComponents"/>
      </bean>
      <property name="shortcutFolderName">Workspace</property>
    </bean>
  </product>
</products>

Viewing all 102 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>