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.
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:
Showing posts with label HFM. Show all posts
Showing posts with label HFM. Show all posts
Sunday, February 26, 2017
HFM 11.1.2.4 Support for Sqlnet Encryption
A while back I posted about an issue with HFM 11.1.2.4 where the product cannot support an Oracle database using Sqlnet (Advanced) Encryption. This means all database traffic between the database and HFM is in clear text for anyone sniffing/capturing network packets. The basic issue is that the Merant ODBC driver needs a specific flag set to support encryption. HFM does not provide any option to set this flag for the ODBC connection.
Troubleshooting HFM 11.1.2.4 on Windows
Looks like we have confirmation that a fix is coming in the HFM 11.1.2.4.250 PSU. The rough ETA on this PSU is July.
Saturday, April 23, 2016
Troubleshooting HFM 11.1.2.4 on Windows
HFM on 11.1.2.4 and higher versions has a significantly different architecture than previous versions. This difference makes troubleshooting issues much harder. The old tricks seem out of date and it is easy to feel lost in the new version. Unfortunately, getting lost and unable to solve problems can lead to downtime and project delays. I wanted to share some basic tips to help get started in 11.1.2.4. Specifically, I wanted to focus on Windows because I have covered Linux in previous posts.
First, let's take a real error while creating a brand new HFM application.
Here we get the error: EPMHFM-66054: The system was unable to find the Datasource process for application. Essentially each HFM application spawns its own process in HFM and this application crashed while trying to initialize. This could be due to any number of things...
The first thing to note is the old HFMErrorLogViewer from previous versions is gone. The HFMErrorLogViewer was a great tool because it collected all the backend log messages into one convenient place. Now it looks like things are spread out over many logs.
First, HFM is broken down at a high level into the Weblogic/ADF components and the Java HFM Wrapper Engine. They appear as Windows services,
The Web Tier consists of the Weblogic applications & UI. These logs can be found under the WebLogic domain,
The Java Server is the more interesting of the two for debugging because most significant errors can be traced to the backend. One thing to realize is HFM is still only partially Java based. There are still significant portions of HFM representing legacy code written in C. These low level functions are wrapped into this Java framework to make it look seamless.
Let's take a look at some of the backend logs.
One of the main logs to investigate is under
Oracle\Middleware\user_projects\epmsystem1\diagnostics\logs\hfm
The hsx-server log will have most details regarding the HFM backend service, similiar to the messages you would see previously in the HFMErrorLogViewer.
oracle-epm-fm-hsx-server.log
startDatasourceProcess] Starting a new datasource process for the application TESTHFM999[2016-04-23T00:29:43.500-07:00] [FM] [NOTIFICATION] [] [oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceProcessManager] [tid: 12] [ecid: 005CI7TJTRS8dplqwsedMG0006Vu001PXQ,0:1:4] [SRC_CLASS: oracle.epm.fm.dslm.DatasourceProcessManager] [SRC_METHOD: getDSCommandLineArguments] Starting the application TESTHFM999 on the ports : DSManagementPort port 10001 and DSHandler Port 10002
[2016-04-23T00:29:43.532-07:00] [FM] [NOTIFICATION] [] [oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceProcessManager] [tid: 12] [ecid: 005CI7TJTRS8dplqwsedMG0006Vu001PXQ,0:1:4] [SRC_CLASS: oracle.epm.fm.dslm.DatasourceProcessManager] [SRC_METHOD: isSingleInstance] Is Single Instance ? true
[2016-04-23T00:29:43.532-07:00] [FM] [ERROR] [EPMHFM-65925] [oracle.FM.HSX.SERVER.oracle.epm.fm.common.HsxServerConfig] [tid: 12] [ecid: 005CI7TJTRS8dplqwsedMG0006Vu001PXQ,0:1:4] [SRC_CLASS: oracle.epm.fm.common.HsxServerConfig] [SRC_METHOD: getDSHangTimeoutPeriod]
...
[2016-04-23T00:29:44.485-07:00] [FM] [NOTIFICATION] [] [oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceProcessManager] [tid: 14] [ecid: 005CI7TJTRS8dplqwsedMG0006Vu001PXQ,0:1:4:21] [SRC_CLASS: oracle.epm.fm.dslm.DatasourceProcessManager] [SRC_METHOD: onProcessFailed] Datasource process for application TESTHFM999 stopped.
[2016-04-23T00:29:44.500-07:00] [FM] [NOTIFICATION] [] [oracle.FM.HSXDATAACCESS.oracle.epm.fm.dal.manager.ApplicationManagerDALImpl] [tid: 14] [ecid: 005CI7TJTRS8dplqwsedMG0006Vu001PXQ,0:1:4:21] [SRC_CLASS: oracle.epm.fm.dal.manager.ApplicationManagerDALImpl] [SRC_METHOD: deleteCCLockRecordsForServer] Table TESTHFM999_CC_LOCKS does not exist
[2016-04-23T00:29:44.563-07:00] [FM] [WARNING] [] [oracle.FM.HSXDSLM.oracle.epm.fm.dslm.DatasourceManagerImpl] [tid: 12] [ecid: 005CI7TJTRS8dplqwsedMG0006Vu001PXQ,0:1:4] [SRC_CLASS: oracle.epm.fm.dslm.DatasourceManagerImpl] [SRC_METHOD: pingDatasource] Unable to invoke ping on XDS management service for the application TESTHFM999 ,
From this log it is evident that each HFM application creates a new datasource. A datasource is a separate process that handles all the processing for a particular application. The datasource process is launched after creating the application, or on the fly as the application is accessed.
This spawned datasource process creates a new logfile for each application. For instance, a log file is created with the application name, such as xfm.odl.TESTHFM000-1.log.
Having a look:
xfm.odl.TESTHFM000-1.log
So it looks like ODBC is involved here. Essentially, the underlying database connection in HFM is now ODBC. This was done to support HFM on Linux. The ODBC layer is how Oracle choose to make the code OS agnostic.[2016-04-23T00:29:44.453951-07:00] [XFM] [ERROR:1] [EPMHFM-07392] [XFM] [ecid: XDS.0000.0000.0000.0001] [File: XfmODBC.cpp] [Line: 203] [userId: ] [appName: TESTHFM999] [pid: 19988] [tid: 20008] [host: ] [nwaddr: ] [errorCode: 800402B5] [srcException: NotSpec] [errType: 1] [dbUpdate: 2] [11.1.2.4.200.5149] An unknown error occurred in an ODBC object. [[1 record: SQLSTATE = 08001; NATIVE ERROR = -4; MSG = [DataDirect][ODBC Oracle Wire Protocol driver][Oracle]Connection Dead. This may have occurred because the server requires Oracle Advanced Security. To enable the driver to use OAS, please use the DataIntegrityLevel and/or EncryptionLevel connect options.]][2016-04-23T00:29:44.453951-07:00] [XFM] [ERROR:1] [EPMHFM-07406] [XFM] [ecid: XDS.0000.0000.0000.0001] [File: XfmODBC.cpp] [Line: 615] [userId: ] [appName: TESTHFM999] [pid: 19988] [tid: 20008] [host: ] [nwaddr: ;] [errorCode: 800402C3] [srcException: XfmExc] [errType: 1] [dbUpdate: 1] [11.1.2.4.200.5149] An error occurred in creating an ODBC connection. [[08001]][2016-04-23T00:29:44.469577-07:00] [XFM] [ERROR:1] [EPMHFM-07406] [XFM] [ecid: XDS.0000.0000.0000.0001] [File: XfmODBC.cpp] [Line: 700] [userId: ] [appName: TESTHFM999] [pid: 19988] [tid: 20008] [host: ] [nwaddr: ] [errorCode: 800402C3] [srcException: XfmExc] [errType: 1] [dbUpdate: 1] [11.1.2.4.200.5149] An error occurred in creating an ODBC connection. [[Failed to create DB connection.]]
The ODBC connection is controlled by the Merant DataDirect 7.1 ODBC Driver. This is similar to how external Essbase database connections were created in the past. Looking at the error message, we are getting Connection Dead. This is actually a common problem with the ODBC DataDirect drivers and encrypted database connections. It is possible to reproduce this outside of HFM by testing the ODBC driver by hand:
Open Microsoft ODBC Manager, and add a connection.
HFM uses the DataDirect 7.1 Oracle Wire Protocol
Entering in the basic database connection details:
The exact error message appears, outside of HFM.
This error message also happens to indicate where to look to solve the issue. In this case, the Oracle Database Listener connection requires an encrypted connection. Unsecured connections are rejected. So we can simply configure the ODBC connection to use the same encryption as the Oracle Listener.
sqlnet.crypto_checksum_server = REQUIRED
sqlnet.crypto_checksum_types_server = (SHA1)
sqlnet.encryption_types_server = (AES256)
Oracle Database Listener Settings
In the ODBC connection there are Advanced Security parameters which allow us to easily match the listener settings.
This is great. However, now we need to figure out where the ODBC connection is stored in HFM in order to configure these advanced properties.
HFM creates a new datasource in the Oracle client called HFMTNS. This info is entered during config tool, and automatically added to the tnsnames.ora in the HFM Database client folder
D:\Oracle\Middleware\dbclient64\network\admin. The ODBC connection leverages this HFMTNS connection information.
Taking a step back, since all of this is actually wrapped into a Java Server container, one additional place for logs is the Windows service start log:
D:\Oracle\Middleware\user_projects\epmsystem1\diagnostics\logs\services
HyS9FinancialManagementJavaServer-sysout.log
Here there is some very interesting information about how this ODBC connection is stored.
[2016-04-23T10:29:07.179806-07:00] XDS: XFMDataSource process starting...[2016-04-23T10:29:07.179806-07:00] XDS: Processing command line arguments...[2016-04-23T10:29:07.179806-07:00] XDS: Initializing XfmJHsxServerWrapper...[2016-04-23T10:29:07.179806-07:00] XDS: Getting database settings from HIT registry ...[2016-04-23T10:29:07.257929-07:00] XDS: Transforming DB connect info from JHsxServer into a DB connect string[2016-04-23T10:29:07.257929-07:00] Connection string: DRIVER={DataDirect 7.1 Oracle Wire Protocol};SRVR=HFMTNS;UID=...;PWD=**********;ENS=1;AN=HFM[2016-04-23T10:29:07.257929-07:00] XDS: Initializing static parameters...[2016-04-23T10:29:07.257929-07:00] XDS: Initializing critical errors log...[2016-04-23T10:29:07.257929-07:00] XDS: Critical errors log: D:\Oracle\Middleware\user_projects\epmsystem1\diagnostics\logs\hfm\TEST23.oracle_critical_errors.log[2016-04-23T10:29:07.257929-07:00] XDS: Initializing ODL logging...Found trace level'TRACE:32' in the logger node[2016-04-23T10:29:07.367305-07:00] XDS: Initializing DB logging...[2016-04-23T10:29:07.820454-07:00] XDS: Failed to run XFMDataSource. Unexpected error occured ...[2016-04-23T10:29:07.836077-07:00] XDS: Right before exit
From the log message it looks like the ODBC connection is created on the fly by transforming the database connection information used by the Java HFM Service, JHsxServer. This comes from the database credentials used when running the HFM config tool during configuration. I find this design unfortunate because there are going to be slight differences between how Java drivers and the DataDirect drivers work for non trivial connections. Looking at the Config Tool advanced properties, there are options for SSL database connections, but all are focused on JDBC (Java) connectivity.
In this case, we see that the DataDirect based encryption properties cannot be set. Since there does not seem to be any way to change the advanced properties, The investigation has hit a dead end and Oracle SR needs created to get this fixed.
In this case, we see that the DataDirect based encryption properties cannot be set. Since there does not seem to be any way to change the advanced properties, The investigation has hit a dead end and Oracle SR needs created to get this fixed.
Monday, February 23, 2015
HFM 11.1.2.4 Architecture
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.
Here are the unix processes involved:
The next question to answer is how is MainWin used by xfmdatasource?
Further investigation uncovers a file, hfm_post_install_steps.sh
Towards the end of the script we see some references to MWHOME
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.
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
The Hyperion configuration actually sets up a new TNS connection named HFMTNS located at /u0/Oracle/Middleware/user_projects/config/dbclient/tnsnames.ora.
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.
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
[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.
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 ~]$
[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 ~]$
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 located at /u0/Oracle/Middleware/user_projects/config/dbclient/tnsnames.ora.
export TNS_ADMIN=/u0/Oracle/Middleware/user_projects/config/dbclient
[oracle@EPMVirt Oracle]$ tnsping 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:
First, setup the utility:
yum install -y unixODBC
ln -fs /u0/Oracle/Middleware/EPMSystem11R1/common/ODBC-64/Merant/7.1/odbc.ini ~/.odbc.ini
Next, try to connect:
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/
[oracle@EPMVirt ~]$ isql -v "Oracle Wire Protocol" EPM_HSS PWD
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
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>
+---------------------------------------+
| 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.
Monday, July 28, 2014
Some Bad Patches?
I recently came across a few bad patches.
Specifically, HSS 17537889, 11.1.2.2.303
In Shared Services, Application Groups, when trying to expand LCM for HFM applications (also with EPMA applications) SSL URLs will be appended with a :80, invalidating the URL.
EPMLCM-30034:Failed in communicating to Hyperion Financial Management remote service at URL https://servername:80/hfmlcmservice/LCMWS.asmx
Note the https protocol with the :80 appended to the end. The patch cannot form SSL URL's properly. This was confirmed by rolling back the patch and seeing the URLs form properly.
File: CDQISource.cpp Version: 11.1.2.2.306.4365 Line: 6408 Error: (-3)(0xFFFFFFFD)(An unknown error occurred. (-3))
· 18528346 – Financial reports using ‘Base of Current POV for entity’ is not working with conditional suppression.
I think there are broader issues with FR and HFM in this patch that only occur with certain report options in FR.
I suspect these two issues also reside in the 11.1.2.2.500 patch set because it was released before Oracle fixed these issues.
Sunday, July 7, 2013
Bug in 11.2.0.3 Oracle Client Installation Prevents HFM Configuration
The 11.2.0.3 version of the Oracle Client on Windows seems to have a unique bug where it has trouble registering the OLE DB provider in windows. This effects both HFM and FDM database configuration tasks. First, HFM will not pass configuring the db in the config tool. Second, FDM will not be able to create an application - throwing a very generic message saying check your database connection.
This essentially means that if you create a new UDL file manually, and look at the providers list, the Oracle Client provider is not shown.
The easiest way to see this issue, as mentioned above is to create a new text file, with zero bytes. Then rename it to test.udl. When you double click it should let you test the OLE DB connection. This is a good way to test any HFM DB related connection issue. However, if this bug exists, you will quickly discover that the Oracle provider is missing.
Please refer to this KB for more info:
Installing the 11.2.0.3 Oracle Provider for OLE DB from the Client Install Media Does Not Properly Register the Provider [ID 1380742.1]
For reference, the 64 bit (HFM) command to register the OLE DB would be
D:\>regsvr32 d:\oracle\product\11.2.0\client_2\bin\OraOLEDB11.dll
remember to refer to the KB article for the 32 bit command for FDM to work too.
Here are some more symptoms of the issue:
UDL: "Test connection failed because of an error in setting the window handle property. Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done."
From Hyperion Configtool.log (Error configuring HFM database connection):
Here are some more symptoms of the issue:
UDL: "Test connection failed because of an error in setting the window handle property. Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done."
From Hyperion Configtool.log (Error configuring HFM database connection):
[SRC_CLASS: com.hyperion.hfm.config. hfmregistry.HFMRegistry] Error while configuring HFM Database: {0}[[
java.lang.RuntimeException: Oracle DB registry entry is not available
at com.hyperion.hfm.config. hfmregistry.HFMRegistry. configureHFMDataBase( HFMRegistry.java:754)
at com.hyperion.hfm.config. HfmDbConfigurator.configure( HfmDbConfigurator.java:150)
at com.hyperion.config.wizard. impl.RunAllTasks. executeDbConfigTask( RunAllTasks.java:929)
at com.hyperion.config.wizard. impl.RunAllTasks.execute( RunAllTasks.java:482)
at com.hyperion.config.wizard. impl.RunnAllTasksState.run( RunnAllTasksState.java:91)
at java.lang.Thread.run(Thread. java:662)
]]
Additionally, this post is also talking about the same issue, though perhaps not the best solution:
Wednesday, September 12, 2012
Unable to Open HFM Applications - A null reference pointer was passed to the stub.
Very strange error when opening any HFM Application.
A null reference pointer was passed to the stub.
Error Code: -2147023116
File: CHFMwManageApplications.cpp; Line: 212;Ver: 11.1.2.0.0.2762;
Additional errors in the Windows Event Viewer:
Error 11; SYSTEM;<Num>-2147220966</Num><Type>0</Type><File>CHsxClient.cpp</File><Line>2417</Line><Ver>11.1.2.0.0.2762</Ver><ExErr>Unknown Error</ExErr></ESec></EStr>
Turns out that the HFM Web node had an issue that corrupted the Financial Management ADM Driver.
I ran the installer, chose re-install, and selected the HFM ADM component. This resolved the errors.
A null reference pointer was passed to the stub.
Error Code: -2147023116
File: CHFMwManageApplications.cpp;
Additional errors in the Windows Event Viewer:
Error 11; SYSTEM;<Num>-2147220966</Num><Type>0</Type><File>CHsxClient.cpp</File><Line>2417</Line><Ver>11.1.2.0.0.2762</Ver><ExErr>Unknown Error</ExErr></ESec></EStr>
Error 11; SYSTEM; 09/05/2012 12:26:01; HsvADMDriverSessionInternal.cpp; Line 355; <?xml version="1.0"?>
<EStr><Num>-2147467261</Num><Type>0</Type><DTime>9/5/2012 12:26:01 PM</DTime><File>HsvADMDriverSessionInternal.cpp</File><Line>355</Line><Ver>11.1.2.0.0.2762</Ver></ESec></EStr>
Turns out that the HFM Web node had an issue that corrupted the Financial Management ADM Driver.
I ran the installer, chose re-install, and selected the HFM ADM component. This resolved the errors.
Sunday, July 8, 2012
Error Opening New HFM Application in 11.1.2.2
After creating a new HFM application in 11.2.2.2 the new application would not open in Workplace.
Reviewing the logs, I was able to see this in Windows Event Viewer - Application Log:
ORA-01031: insufficient privileges CREATE OR REPLACE TYPE TYPE_NUMTABLE AS TABLE OF NUMBER
This indicates there is a new database permission in Oracle required for HFM in 11.1.2.2:
For Oracle:
grant create type to HFM_DB;
Reviewing the logs, I was able to see this in Windows Event Viewer - Application Log:
ORA-01031: insufficient privileges CREATE OR REPLACE TYPE TYPE_NUMTABLE AS TABLE OF NUMBER
This indicates there is a new database permission in Oracle required for HFM in 11.1.2.2:
For Oracle:
grant create type to HFM_DB;
Wednesday, January 25, 2012
Deleting an EPMA HFM Application not Listed in the Application Library
Problem: The HFM EPMA application does not show up in EPMA application library in Workspace, yet it is listed in the list of HFM applications. The intention is to delete the rogue application because it is partially deployed and not used. Trying to delete the application from HFM gives a message saying "This application is not registered in Shared Services". The next logical step is to try and register the HFM application in Shared Services, however registration fails with the error:
This is a BPMA application. The functionality must be done through BPMA.
Show Details:
Error Reference Number: {F79F0798-39B7-4565-91A3-3E929F9F16FD}
Since the application is not listed in the EPMA application library, it is not possible to re-register the application. Here's a trick to enable the registration with Shared Services in order to delete the application from HFM:
Open the HFM relational database, Each application has it's own set of tables.
Look for the APP_NAME_PROPERTIES table,
Change HFM APPMODE property from EPMA to HFM in the table. Be sure to commit any changes.
This flips the application back to a normal HFM application. Next, open Workspace Classic Application Administration and register the application.
Finally, in Shared Serivces provision yourself as administrator to the HFM application and delete the application from HFM.
This is a BPMA application. The functionality must be done through BPMA.
Show Details:
Error Reference Number: {F79F0798-39B7-4565-91A3-3E929F9F16FD}
Since the application is not listed in the EPMA application library, it is not possible to re-register the application. Here's a trick to enable the registration with Shared Services in order to delete the application from HFM:
Open the HFM relational database, Each application has it's own set of tables.
Look for the APP_NAME_PROPERTIES table,
Change HFM APPMODE property from EPMA to HFM in the table. Be sure to commit any changes.
This flips the application back to a normal HFM application. Next, open Workspace Classic Application Administration and register the application.
Finally, in Shared Serivces provision yourself as administrator to the HFM application and delete the application from HFM.
Sunday, January 1, 2012
HFM - Registry Key that has been Marked for Deletion
Problem Description:
HFM Application will not open from workspace - this was not reported by the end users and caught before it was an issue - error recieived is:
Warning Illegal operation attempted on a registry key that has been marked for deletion.
Code: -2147023878
Description: An error occurred processing the result from the server.
Trace: Error Reference Number: {61D370EC-BF81-46B9-9D06-B2323C58653C}<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr: server;File: CHsxClient.cpp;Line: 497;Ver: 11.1.2.1.000.3082;<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr:server;File: CHsxClient.cpp;Line: 899;Ver: 11.1.2.1.000.3082;<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr: server;File: CHsxClient.cpp;Line: 3671;Ver: 11.1.2.1.000.3082;<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr:server;File: CHFMwManageApplications.cpp;Line: 2722;Ver: 11.1.2.1.000.3082;
Resolution:
Symptoms
In Financial Management (HFM) application , you may receive the following error message when attempting various HFM related operations such as Journal Entries, connecting via Smartview to HFM, or with Financial Reporting:
Illegal operation attempted on a registry key that has been marked for deletion.
An error has occurred. Please contact your administrator.
Error Number:70
Error Description:Permission denied
Error Source:Microsoft VBScript runtime error
Page On which Error Occurred:/hfm/loadextract/ExtractJournals.asp
Changes
This issue occurs only in EPM systems deployed on Windows 2008 server, so if a OS upgrade had occurred, this error may be thrown.
Cause
The identity user initially logged on to the server when the application launched. The issue happens when the identity user logs off and the COM+ application can no longer read registry keys in the profile of the identity user because of a new User Profile Service functionality of forcing the unload of the user profile on Windows 2008 when the user logs off.
Solution
To resolve this issue, make the following change on all Financial Management servers in the environment:
1. Run group policy editor (gpedit.msc)
2. Expand to: Computer Configuration -> Administrative Templates -> System -> UserProfiles -> Do not forcefully unload the user registry at user logoff
3. Check the settings and change it from “Not Configured” to “Enabled”
4. Reboot the servers
HFM Application will not open from workspace - this was not reported by the end users and caught before it was an issue - error recieived is:
Warning Illegal operation attempted on a registry key that has been marked for deletion.
Code: -2147023878
Description: An error occurred processing the result from the server.
Trace: Error Reference Number: {61D370EC-BF81-46B9-9D06-B2323C58653C}<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr: server;File: CHsxClient.cpp;Line: 497;Ver: 11.1.2.1.000.3082;<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr:server;File: CHsxClient.cpp;Line: 899;Ver: 11.1.2.1.000.3082;<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr: server;File: CHsxClient.cpp;Line: 3671;Ver: 11.1.2.1.000.3082;<BR>Num: 0x800703fa;Type: 0;DTime: 9/11/2011 9:10:10 AM;Svr:server;File: CHFMwManageApplications.cpp;Line: 2722;Ver: 11.1.2.1.000.3082;
Resolution:
Symptoms
In Financial Management (HFM) application , you may receive the following error message when attempting various HFM related operations such as Journal Entries, connecting via Smartview to HFM, or with Financial Reporting:
Illegal operation attempted on a registry key that has been marked for deletion.
An error has occurred. Please contact your administrator.
Error Number:70
Error Description:Permission denied
Error Source:Microsoft VBScript runtime error
Page On which Error Occurred:/hfm/loadextract/ExtractJournals.asp
Changes
This issue occurs only in EPM systems deployed on Windows 2008 server, so if a OS upgrade had occurred, this error may be thrown.
Cause
The identity user initially logged on to the server when the application launched. The issue happens when the identity user logs off and the COM+ application can no longer read registry keys in the profile of the identity user because of a new User Profile Service functionality of forcing the unload of the user profile on Windows 2008 when the user logs off.
Solution
To resolve this issue, make the following change on all Financial Management servers in the environment:
1. Run group policy editor (gpedit.msc)
2. Expand to: Computer Configuration -> Administrative Templates -> System -> UserProfiles -> Do not forcefully unload the user registry at user logoff
3. Check the settings and change it from “Not Configured” to “Enabled”
4. Reboot the servers
Subscribe to:
Posts (Atom)













