cancel
Showing results for 
Search instead for 
Did you mean: 

In BOBJ, am I missing something moving Trending database to oracle?

NTruhan
Participant
0 Kudos

I am currently running BusinessObjects 4.2 on Solaris. I have configured the Oracle Audit database and added the monitoring tables using the TrendingDB\Oracle.sql script. Since it is oracle, I have converted auditing to use a JDBC HOST,PORT,SID connection string vs just SID. I have also updated the dataAccess/connectionServer/jdbc/oracle.sbo for the correct oracle alias and ojdbc6.jar file location. finally I configured the monitoring app to use the audit database. Also, not sure if it affects Monitoring, but we have disabled WACS since we use Tomcat and don't use RESTful. I know this affects the Admin cockpit CMC page.

I have tested Auditing after these changes and it works fine. However, I do not see any data in the new MOT_ tables. And in the logs for monitoring, I see:

|0722100B8B2540AFBEE5C281F1DDC76755b|2016 10 13 14:54:03.006|-0400|Error| |==|E| |aps_ruger.AdaptiveProcessingServer| 843| 196|Monitoring Service Thread: 18| ||||||||||||||||||||com.businessobjects.monitoring.common.MonitoringTask||[run] Failed
java.lang.NullPointerException: while trying to invoke the method java.util.Map.containsKey(java.lang.Object) of a null object returned from com.businessobjects.monitoring.trendingmanager.TrendingManager.access$300()
at com.businessobjects.monitoring.trendingmanager.TrendingManager$MetricDataCommitTask.invoke(TrendingManager.java:461)
at com.businessobjects.monitoring.common.MonitoringTask.run(MonitoringTask.java:53)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:812)

The user that is configured for auditing has CONNECT and RESOURCE roles. I am not sure if I am missing something in the configuration or permissions that it can't write to the tables.

Since we now have to post references that we have tried to investigate ourselves:

Here is the Admin guide I used to setup monitoring:

http://help.sap.com/businessobject/product_guides/sbo42/en/sbo42sp2_bip_admin_en.zip

This is the log file that is throwing the error (single APS)

aps_ruger.AdaptiveProcessingServer_trace.000087.glf

Oracle Role Permission Guide:

https://docs.oracle.com/cd/B28359_01/network.111/b28531/authorization.htm#i1007401

I have tried searching google or SAP Support or Communty support for any combination of the error:

- null object returned from com.businessobjects.monitoring.trendingmanager.TrendingManager

- NullPointerException: while trying to invoke the method java.util.Map.containsKey



Has anyone come across this before and have anything to try?

Accepted Solutions (0)

Answers (2)

Answers (2)

NTruhan
Participant
0 Kudos

Hello,

Thank you for the suggestion, my oracle.sbo is slightly different, there is no Oracle 10. entry by itself. My ADS Connection name is setup like the article. Also if I go into the Monitoring Application Properties, I don't get the monitoring is disabled error. It looks like it is connecting.

My oracle.dbo looks like this:

<?xml version="1.0" encoding="UTF-8"?><DriverConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../sbo.xsd">
<Defaults>
<Class JARFile="dbd_oracle">com.sap.connectivity.cs.java.drivers.jdbc.oracle.OracleDriver</Class>
<JDBCDriver>
<ClassPath>
<Path>$ROOT$/drivers/java/dbd_jdbcwrapper.jar</Path>
</ClassPath>
<Parameter Name="JDBC Wrapper">com.sap.connectivity.cs.java.drivers.jdbc.wrapper.JDBCWrapper</Parameter>
</JDBCDriver>
<Parameter Name="Family">Oracle</Parameter>
<Parameter Name="SQL External File">oracle</Parameter>
<Parameter Name="SQL Parameter File">oracle</Parameter>
<Parameter Name="Description File">oracle</Parameter>
<Parameter Name="Strategies File">oracle</Parameter>
<Parameter Name="Driver Capabilities">Query,Procedures</Parameter>
<Parameter Name="Extensions">oracle,jdbc</Parameter>
<Parameter Name="Connection Shareable">Yes</Parameter>
<Parameter Name="Shared Connection">No</Parameter>
<Parameter Name="Array Fetch Available">True</Parameter>
<!-- define "magic" value 0 for Array Fetch Size to use default JDBC Fetch Size -->
<Parameter Name="Array Fetch Size">250</Parameter>
<Parameter Name="Array Bind Available">False</Parameter>
<Parameter Name="Max Rows Available">Yes</Parameter>

<Parameter Name="Query TimeOut Available">Yes</Parameter>
<Parameter Name="Optimize Execute">True</Parameter>
<Parameter Name="Include Synonyms">False</Parameter>
</Defaults>
<DataBases>
<DataBase Active="Yes" Name="Oracle 11">
<Aliases>
<!-- You can add an alias here if you are using some connections
that are defined with an older database engine -->
<Alias>Oracle 7.3</Alias>
<Alias>Oracle 8</Alias>
<Alias>Oracle 8.0</Alias>
<Alias>Oracle 8.1</Alias>
<Alias>Oracle 9</Alias>
<Alias>Oracle 10</Alias>
<Alias>Oracle</Alias>
</Aliases>
<JDBCDriver>
<ClassPath>

<Path>/opt/bobje/jdbc/oracle/ojdbc6.jar</Path>
</ClassPath>
<Parameter Name="JDBC Class">oracle.jdbc.OracleDriver</Parameter>
<Parameter Name="URL Format">jdbc:oracle:thin:@//$DATASOURCE$/$DATABASE$</Parameter>
</JDBCDriver>
<Parameter Name="Extensions">oracle11,oracle,jdbc</Parameter>
<Parameter Name="Escape Character">/</Parameter>
<Parameter Name="Force Execute">Always</Parameter>
<Parameter Name="Catalog Separator">.</Parameter>
</DataBase>
<DataBase Active="Yes" Name="Oracle Exadata">
<JDBCDriver>
<!-- Uncomment and edit the following lines
to define java classes required by JDBC driver
&lt;ClassPath&gt;
&lt;Path&gt;your jar or class files directory&lt;/Path&gt;
&lt;/ClassPath&gt;
-->
<Parameter Name="JDBC Class">oracle.jdbc.OracleDriver</Parameter>
<Parameter Name="URL Format">jdbc:oracle:thin:@//$DATASOURCE$/$DATABASE$</Parameter>

</JDBCDriver>
<Parameter Name="Extensions">oracleexadata,oracle11,oracle,jdbc</Parameter>
<Parameter Name="Escape Character">/</Parameter>
<Parameter Name="Force Execute">Always</Parameter>
<Parameter Name="Catalog Separator">.</Parameter>
</DataBase>
<DataBase Active="Yes" Name="Oracle 12">
<JDBCDriver>
<!-- Uncomment and edit the following lines
to define java classes required by JDBC driver
<ClassPath>
<Path>your jar or class files directory</Path>
</ClassPath>
-->
<Parameter Name="JDBC Class">oracle.jdbc.OracleDriver</Parameter>
<Parameter Name="URL Format">jdbc:oracle:thin:@//$DATASOURCE$/$DATABASE$</Parameter>
</JDBCDriver>
<Parameter Name="Extensions">oracle12,oracle,jdbc</Parameter>
<Parameter Name="Escape Character">/</Parameter>
<Parameter Name="Force Execute">Always</Parameter>
<Parameter Name="Catalog Separator">.</Parameter>

<Parameter Name="Driver Capabilities">Query,Procedures,Cancel</Parameter>
</DataBase>
</DataBases>
</DriverConfiguration>

Now one thing I did notice in that note is service vs sid syntax.

The SID for the connection is just edwdev, the service name is edwdev.deltadentalnj.com

I am using the SID, but the syntax in the oracle.sbo looks like it uses the service
syntax. Auditing seems to be working though and when I changed the ads connection to use the service name instead auditing stopped working with "There is no connection to the Auditing Data Store from the CMS winchester.CentralManagementServer."

Thanks,

Nathan

Toby_Johnston
Advisor
Advisor
0 Kudos

Hey Nathan,

Could you try the solution in this KB Article: https://launchpad.support.sap.com/#/notes/1768678

It could be that the guide needs to be updated. Let us know.

Thanks
Toby