Monday, November 17, 2008

Discoverer Plus 10g: contact with Server lost: DiscoApplet Error DiscoNetworkException CORBA.COMM_FAILURE. ICX Territory!

An interesting one today; a Discoverer Plus Workbook called via an eBusiness Suite Menu errored out with:

OracleBI Discoverer: "Contact with the Discoverer Server has been lost. To continue your work, please restart Discoverer Plus. If this problem persists, please contact your Oracle Application Server administrator."

Doh! Who's that Application Server administrator ... oh! me :-(

Attempting to expand the workbook, after going directly into Discoverer Plus errors with:

"This workbook cannot be expanded".

 

Hmm, okay, let's look at the Java Console:

Reading bytes from input stream
   Unmarshalling response
   Session ID:2008111408252618857
   BI Beans Graph version [3.2.3.0.37]
   DiscoApplet[0]: Error received by GlobalStatusListener.workerFailed() in SessionUI.java
   DiscoNetworkException  - Nested exception: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe
   DiscoNetworkException  - Nested exception: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe
   org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe
 at com.sun.corba.se.internal.iiop.IIOPConnection.purge_calls(IIOPConnection.java:438)
 at com.sun.corba.se.internal.iiop.ReaderThread.run(ReaderThread.java:70)
 at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
 at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
 at sun.rmi.server.UnicastRef.invoke(Unknown Source)
 at oracle.disco.remote.rmi.serverbase.RMISessionBase_Stub.sendRecieveData(Unknown Source)
 at oracle.disco.model.corbaserver.ModelInterface.sendRecieveData(Unknown Source)
 at oracle.disco.model.corbaserver.ModelInterface.SendReceiveData(Unknown Source)
 at oracle.disco.model.corbaserver.serverrequest.DsrOpenWorkbook.xmlUpdateServer(Unknown Source)
 at oracle.disco.model.corbaserver.serverrequest.DsrCorbaXML.corbaUpdateServer(Unknown Source)
 at oracle.disco.model.corbaserver.serverrequest.DsrGeneralCorbaXML.updateServer(Unknown Source)
 

Ouch! Sounds like it hurts!

A quick blast through Metalink (oops MOS - My Oracle Support) and a bunch of old bugs later, not looking promising, however there's one major clue - the problem is only occurring for some Users. Okay, lets do a side by side comparison of Profile Options as a first guess:

User Level Profile Option Value Comparison Side by Side

select *
   from (
 with
 prof_di as
 ( select 'USER' level_name, 
 fu.user_name level_value, 
 fpo.profile_option_id,
 fpot.user_profile_option_name,
 fpo.profile_option_name,
 fpov.profile_option_value
 from   fnd_user fu, 
 fnd_profile_options fpo,
 fnd_profile_option_values fpov,
 fnd_profile_options_tl fpot
 where  fu.user_id = fpov.level_value
 and    fpo.profile_option_id = fpov.profile_option_id
 and    fpo.profile_option_name = fpot.profile_option_name
 and    fpot.language = 'US'
 and    fpov.level_id = 10004
 and    fu.user_name = 'SYSADMIN'
 ),
 prof_gr as
 (
 select 'USER' level_name, 
 fu.user_name level_value, 
 fpo.profile_option_id,
 fpot.user_profile_option_name,
 fpo.profile_option_name,
 fpov.profile_option_value
 from   fnd_user fu, 
 fnd_profile_options fpo,
 fnd_profile_option_values fpov,
 fnd_profile_options_tl fpot
 where  fu.user_id = fpov.level_value
 and    fpo.profile_option_id = fpov.profile_option_id
 and    fpo.profile_option_name = fpot.profile_option_name
 and    fpot.language = 'US'
 and    fpov.level_id = 10004
 and    fu.user_name = 'ROBERTSG'
 )
 select pd.profile_option_id
 ,      pd.user_profile_option_name
 ,      pd.profile_option_name
 ,      pd.profile_option_value d_value
 ,      pg.profile_option_value g_value
 ,      decode(pd.profile_option_value,pg.profile_option_value,'EQUAL','DIFF') status
 from   prof_di pd
 ,      prof_gr pg
 where  pd.profile_option_name = pg.profile_option_name (+)
 union
 select pg.profile_option_id
 ,      pg.user_profile_option_name
 ,      pg.profile_option_name
 ,      pd.profile_option_value d_value
 ,      pg.profile_option_value g_value
 ,      decode(pg.profile_option_value,pd.profile_option_value,'EQUAL','DIFF') status
 from   prof_di pd
 ,      prof_gr pg
 where  pg.profile_option_name = pd.profile_option_name (+)
 )
 where status != 'EQUAL';  

The query gets output that includes the following:

USER_PROFILE_OPTION_NAME PROFILE_OPTION_NAME D_VALUE     G_VALUE STATUS
------------------------ ------------------- ----------- ------- ------
ICX: Territory ICX_TERRITORY NEW ZEALAND AMERICA DIFF

Whenever I see anything related to "NLS_LANG" or "Territory" the alarm bells start ringing, and sure enough - for the problem User, just a quick navigate to the "Preferences" responsibility, General Preferences and change the Territory from New Zealand to United States and we're off and laughing again! Alternatively could have looked at the ICX: Territory profile option.

 

What was the real underlying problem? My guess is a clash on date formats for default parameter values ... but that's left for another day.

 

7 comments:

Sri Vejendla said...

Hi Gareth,
This is really nice post. I am facing similar issue with our UK users while it works fine with same userid in US. I am struggling on this issue for last two days and now i was looking at your post, did query the profiles, all we have for ICX:Territory is AMERICA.
Do you remember any thing on this, as this is a quite old issue for you.
Thanks
Sri

Gareth said...

Hi Sri,

Are you using Disco Plus or Desktop?
Feel free to email me, plus if you haven't tried already, post your error messages on Oracle Forums in Discoverer Forum.

Regards,
Gareth

Unknown said...

Hi Gareth

we am getting same error but in a different stituation,we are trying to schedule a workbook in discoverer plus and we get this error, granted all the scheduling previlages to the USER_ID. no clue why we are getting this error, and we are able to schedule without an problem in discoverer desktop, and the most crazy thing that i have observed is, when my desktop session is open i am able to schedule from PLUS also. sounds craazy but thats is happening. could you please share your knowledge on this issue and help us out.

thanks
Sid

Gareth said...

Hi Sid,
Hmm, that does sound weird, but nothings impossible. Either you're correct, and there is some IP address based session initialization coming into play around that area, or alternatively it could just be coincidence and there's something else going on. I'd guess something in the area of user specific based session initialization, but tough for me to help out without access to the system to diagnose.

Regards,
Gareth

Smita said...

Could you please provide the solution that was followed for this issue.

Gareth said...

Hi Smita,
For the user that is getting the error, login to EBS, navigate to "Preferences" responsibility, General Preferences and change the Territory from to United States. If it is already United States, look at the ICX: Territory profile option for that User / Responsibility and set to United States (or set to whatever you are Territory you are running).

Regards,
Gareth

Smita said...

Hello Gareth,

AT "Preferences" responsibility, General Preferences the Territory is already set to United States. However changed the ICX: Territory profile option for that User / Responsibility to United States but it did not solve the problem.
Actually its a new responsibility where i add existing workbook, also shared the business area but when trying to execute the report through my user firstly it says "Workbbok cannot be expanded, Unable to open workbook" later when i close the page i get the below error
“Contact with the Discover server has been lost. To continue with your work, please restart Discoverer Plus. If this problem persists, please contact your Oracle Application Server Administrator” error message.

Regards,
Smita