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.