Wednesday, June 6, 2018

OEM Admin Privileges and java.lang.StackOverflowError

We had a request come in the other day from an OEM user saying they weren't able to access the "Top Activity" screen from the "Performance" menu option, instead getting the following pop-up error:



The error appeared at first glance as if we had an issue with our OEM environment (12.1.0.4, running RHEL 6.6) but I couldn't come up with any good explanations. The file "emoms.trc" only listed the same error along with a very long stack dump. Then I noticed that this error only occurred for 2 of the 4 databases the user had access to. After comparing privileges assigned to the local database schemas the user was connecting as ("Top Activity" requires this connection) I noticed that the "problem" schemas were missing "SELECT ANY DICTIONARY". According to the "Enterprise Manager Cloud Control Security Guide, Appendix A", this system privilege is needed for accessing performance-related information in OEM.


I also looked up the full error message text in MOS and found the document "EM 12c: Database Target Access in Enterprise Manager 12c Cloud Control Fails with Message: Internal Error Has Occurred. Check The Log File For Details. Java.lang.StackOverflowError (Doc ID 2179401.1)", so now I know this is a known issue.

I don't like to blog about well-documented items but in this case 2 things stand out. #1, the displayed error is misleading. OEM should display some sort of privilege error message, not overflowing the java stack. #2, the displayed error changes per release of OEM. Under 12.1.0.5 the message is a little more appropriate:



Under 11.2.0.1 the result is back to being confusing, where the "Top Activity" screen is displayed but without any data:



Obviously standards should be in place for configuring OEM Administrators, including assigned privileges to associated schemas on local databases, but hopefully this post will aid someone who is mystified as I was initially about the displayed error.