Feed aggregator

Java memory leak in XML Parser 2.0.2.9 leads to thousands of workflow notification emails with ORA-29532: Java call terminated by uncaught Java exception: java.lang.NullPointerException

Gaurav Verma - Thu, 2008-01-17 07:26

IntroductionIn a particular customer's production instance (11.5.9, post ATG RUP 5), the WF administrator email was being bombarded with thousands of emails like these:

==================================================
An Error occurred in the following Workflow.

Item Type = XITEMIFS
Item Key = 982893-5825-38602875
User Key =

Error Name = ECX_PROGRAM_EXIT_EMBD
Error Message = 6012: XML Gateway process aborted : 'ORA-29532: Java
call terminated by uncaught Java exception: java.lang.OutOfMemoryError -
ecx_utils.INITIALIZE: '. For further details, see the log corresponding to
FND-Logging AFLOG MODULE Name: ''.
Error Stack =
Wf_Engine.GetItemAttrEvent(XITEMIFS, 982893-5825-38602875,
ECX_EVENT_MESSAGE)
ECX_STANDARD.sendDirectCover(XXINV, SYNC_ITEM)
ECX_STANDARD.Send(XITEMIFS, 982893-5825-38602875, 113178, RUN)
Wf_Engine_Util.Function_Call(ECX_STANDARD.SEND, XITEMIFS,
982893-5825-38602875, 113178, RUN)

Activity Id = 113178
Activity Label = XXINV_RECEIVE_SYNC_EVENT:DOCUMENT_SEND_XMLGATEWAY
Result Code = #EXCEPTION
Notification Id =
Assigned User =

Workflow monitor

Action History

=========================

An Error occurred in the following Workflow.

Item Type = XITEMIFS
Item Key = 986029-5704-38881957
User Key =

Error Name = ECX_PROGRAM_EXIT_EMBD
Error Message = 6012: XML Gateway process aborted : 'ORA-29532: Java call terminated by uncaught Java exception: java.lang.NullPointerException - ecx_utils.INITIALIZE: '. For further details, see the log corresponding to FND-Logging AFLOG MODULE Name: ''.
Error Stack =
Wf_Engine.GetItemAttrEvent(XITEMIFS, 986029-5704-38881957, ECX_EVENT_MESSAGE)
ECX_STANDARD.sendDirectCover(XXINV, SYNC_ITEM)
ECX_STANDARD.Send(XITEMIFS, 986029-5704-38881957, 113178, RUN)
Wf_Engine_Util.Function_Call(ECX_STANDARD.SEND, XITEMIFS, 986029-5704-38881957, 113178, RUN)

Activity Id = 113178
Activity Label = XXINV_RECEIVE_SYNC_EVENT:DOCUMENT_SEND_XMLGATEWAY
Result Code = #EXCEPTION
Notification Id =
Assigned User =

==================================================
Another variation...
An Error occurred in the following Workflow.

Item Type = XITEMIFS
Item Key = 982893-5825-38602875
User Key =

Error Name = ECX_PROGRAM_EXIT_EMBD
Error Message = 6012: XML Gateway process aborted : 'ORA-29532: Java call
terminated by uncaught Java exception: java.lang.OutOfMemoryError -
ecx_utils.INITIALIZE: '. For further details, see the log corresponding to
FND-Logging AFLOG MODULE Name: ''.
Error Stack =
Wf_Engine.GetItemAttrEvent(XITEMIFS, 982893-5825-38602875,
ECX_EVENT_MESSAGE)
ECX_STANDARD.sendDirectCover(XXINV, SYNC_ITEM)
ECX_STANDARD.Send(XITEMIFS, 982893-5825-38602875, 113178, RUN)
Wf_Engine_Util.Function_Call(ECX_STANDARD.SEND, XITEMIFS,
982893-5825-38602875, 113178, RUN)

Activity Id = 113178
Activity Label = XXINV_RECEIVE_SYNC_EVENT:DOCUMENT_SEND_XMLGATEWAY
Result Code = #EXCEPTION
Notification Id =
Assigned User =

Workflow monitor

Action History
==================================================
Initial investigation...Initial investigation revealed that maybe it was beneficial to apply patch 5194357 - REHOST XML PARSER FOR PL/SQL v1.0.2+ for Oracle EBS 11i  (as per Metalink note 356141.1). Patch 5356822 (PATCH FOR XMLGATEWAY MEMORY ISSUES) was also mentioned, but it was not clear if it would solve the problem.

After studying bugs, another patch come up: 5209280 (APPST: ORA-29532: JAVA CALL TERMINATED BY JAVA EXCEPTION:JAVA.LANG.OUTOFMEMORYER). The product mentioned in the patch information is CORE, which can easily be confused with CORE RDBMS product e.g. 9i, 8i etc. The CORE was actually referring to the CORE component of XDK xmlparser product. Apparently, the XDK XML parser was broken in version 2.0.2.9 and fixed in 8.1.7.2.99.

Later on, we came to understand that patch 5194357 was a APPS rehosting of core patch 5209280.
rehosting ?
"rehosting" is an interesting patch terminology. Essentially, it means that a patch for a core XML sub-component was re-certified to be applied in an Oracle Applications 11i environment.

For example, While running patch.sh supplied in patch 5209280, it failed to copy files to $ORACLE_HOME/xdk/plsql/parser/bin . Also since load.sql which was not present in $ORACLE_HOME/xdk/plsql/parser/bin, as mentioned in the README, it could not be executed. It was clear that patch 5209280 made a lot of assumptions about the environment where it was to be executed.

Thats where patch 5194357 (REHOST XML PARSER FOR PL/SQL v1.0.2+ for Oracle EBS 11i) was useful; it was fully compliant to be run with adpatch utility. It was the same fix, but delivered to be applied in an 11i environment.
WorkaroundThe workaround was to bounce the Workflow Agent Listener Service GSM container from Oracle Applications Manager GUI.

SolutionAfter applying patch 5194357 (REHOST XML PARSER FOR PL/SQL v1.0.2+ for Oracle EBS 11i) and doing heavy regression testing (marking status of SENT or ERRORed notifications in WF_NOTIFICATIONS as MAIL), the memory stamina of the Workflow Agent Listener Service GSM container increased considerably.

Essentially, there was a memory leak introduced in the previous XML parser used by the pl/sql sessions of Workflow Agent Listener Service.


Some Kind Words on 8.97

Mark Vakoc - Wed, 2008-01-16 12:16
I'm always willing to publish kind words about Server Manager. Check out this post from Andrews Consulting Group:

Oracle Delivers Cool Tools for JD Edwards EnterpriseOne

Build Your First Smart Space Gadget

Oracle EPM Smart Space - Tue, 2008-01-15 13:44
Whenever I start a new development endeavor I almost always look to sample code to get started, and it is even better if it is a simple sample. So with that I will attempt to give you my version of a ‘Hello World’ sample for Smart Space gadgets. Changing things up a bit I will make this a notepad sample as this is pretty common in the Gadget/Widget world.

For this sample I am using Smart Space 9.3.1 and Visual Studio 2005 and will be writing my code in C# (sorry VB’ers). I have the Smart Space client installed on my machine and I have the Smart Space SDK Wizard installed. The SDK Wizard is what enables you to create gadget projects in Visual Studio. Let’s get started:

First launch Visual Studio and select New Project from the File menu. You will get the following new project dialog. In this dialog select the root node for the language you plan to develop in. Smart Space has templates for Visual C# or Visual Basic. Select the gadget template, type a name for your gadget solution and click the ‘OK’ button. Remember the project name will end up being the name of the gadget that your users will see, so select something easy like DeskNotes or Notes instead of something like gadget1.



Once you click OK the project will get created and you will be presented with the following dialog. From this dialog you simply need to give the gadget a namespace. This is used to identify the gadget in the xml file associated with the gadget. (currently named gadgets.xml)



Once you click finish on the dialog you can begin writing code or interacting with the project.
To keep this sample simple we are going to use the designer in Visual Studio to layout our gadget. For this sample, layout should be simple, all we really need is a textbox.


  1. In the project double click the user control named Gadget and you will be put in design mode.

  2. In the toolbox select the textbox control and add it to the user control.

  3. Edit the properties of the textbox to make it like work like a note pad. Here is what I changed:

    • Set Multiline to True
    • Set Dock to Fill
    • Set BackColor to Yellow
    • Set BorderStyle to None

  4. Resize the gadget to a starting size that you want when the user opens the gadget.



From here you can run your project to test it out and see your first gadget in action. Please take note that we have not written one line of code!



Now let’s add a bit of code to make this gadget more useful. For starters lets add menu items to change the color of the notes. You can add this code on almost any event for the gadget but I usually use the load event for the gadget user control.

//create the commands to be added to the default menu
ICommand commandYellow = CommandHelper.CreateCommand("Yellow", "Yellow", "Yellow");
ICommand commandBlue = CommandHelper.CreateCommand("Blue", "Blue", "Blue");

//add events for the commands
commandYellow.Executed += new EventHandler(commandYellow_Executed);
commandBlue.Executed += new EventHandler(commandBlue_Executed);

//add the commands to the default gadget menu
this.Services.Appearance.Menu.AddCommand(commandYellow);
this.Services.Appearance.Menu.AddCommand(commandBlue);

This will add two sub menus under the default gadget menu named Yellow and Blue. You can also add these to the toolbar with a slight variation in the code.

//add the commands to the gadget toolbar
this.Services.Appearance.Toolbar.AddCommand(commandYellow);
this.Services.Appearance.Toolbar.AddCommand(commandBlue);

All that needs to be added is the code to execute when the events are fired on these new commands. Here is a sample for one.

private void commandBlue_Executed(object sender, EventArgs e)
{
this.textBox1.BackColor = System.Drawing.Color.Blue;
}

Now the user can decide what color they want their note to be. Now there is one last thing to do to make this gadget really useable; save the text and color of the note so it will be restored when the user switches Smart Space desktops or restarts Smart Space. As a developer this is something you can handle on your own but is can get pretty tricky because of gadget and desktop instances in Smart Space. Because of this there are some methods and interfaces that will make this easy.

To do this start off with a new public structure with variables to store the settings, and you need to then create a local variable of that type.

public struct GadgetPreferences
{
public String noteText;
public Color noteColor;
}

private GadgetPreferences preferences;

When closing the gadget add code to save your preferences. This is usually done in the ‘stop’ event for the gadget but can be done at anytime.

public override void Stop()
{
preferences.noteText = this.textBox1.Text;
preferences.noteColor = this.textBox1.BackColor;

//save the preferences for the gadget
this.SaveGadgetPreferences(preferences);
}

When loading the gadget you will want to restore these preferences if they exist. Again this can be done in many places but I usually do them in the load event for the gadget user control.

//get the preferences for the gadget
preferences = this.LoadGadgetPreferences();
this.textBox1.Text = preferences.noteText;
this.textBox1.BackColor = preferences.noteColor;

When loading the preferences you may need to account for the fact that the preferences are blank or null. I often have some if statements or try catch blocks to assist when loading the preferences.

Well there you have it, a fully functional notepad gadget. You may decide that you want to expand on the concept and allow for more colors, use a RichTextBox control, support various fonts, use images for the notes background, etc.

Categories: Development

11i Post cloning issues: APPSLOCALLOGIN.JSP gives JAVA.LANG.NOCLASSDEFFOUNDERROR - how is it related to JTF Distributed caching..

Gaurav Verma - Tue, 2008-01-15 05:10

Preface

This situation was faced after cloning: in spite of repeated apache bouncing, we could not make the self service login page to work, in a multi-tier(load balanced) application architecture for 11.5.10 instance. A generic error like java.lang.NoClassDefFoundError was coming up.

Many a times, it can be resolved by making sure that your CLASSPATH or AF_CLASSPATH has all the right .zip/.jar files/$JAVA_TOP etc in $IAS_ORACLE_HOME/Apache/Jserv/etc or adovars.env, BUT at times even those checks did not work.

Debugging and trying all sorts of things first..Well, we did not come to the understanding of the actual problem till much later. Initially, we tried many things like recompiling JSP cache in $COMMON_TOP/_pages.

sandbox:web_dev> perl ojspCompile.pl --compile --fast
identifying apache_top.../ORACLE/dev/9iAS
identifying apache_config_top.../ORACLE/dev/9iAS
identifying java_home.../usr/java/j2sdk1.4.2_07
identifying jsp_dir.../ORACLE/apps/dev/common/html
identifying pages_dir.../ORACLE/apps/dev/common
identifying classpath...file:///ORACLE/dev/9iAS/Apache/Jserv/etc/jserv.properties
auto-logging to /ORACLE/apps/dev/common/_pages/ojsp_error.log
starting...(compiling delta)
using 8i internal ojsp ver: 1.1.3.5.2
including compatibility flag -whiteSpaceBetweenScriptlet
synchronizing dependency file:
  enumerating jsps...14016
  parsing jsp...14016
  writing deplist...14016
initializing compilation:
  eliminating children...10724 (-3292)
  searching uncompiled...10692
translating and compiling:
  searching untranslated...10692
  translating jsps...10692/10692 [failed: 204] in 3m58s             
  compiling jsps...10488/10488 [failed: 75] in 5m44s               
Finished!


Now, when we tried accessing the AppsLocalLogin.jsp page, the following contents could be seen in the _pages directory and the error was still very much present:

sandbox:web_dev> pwd
/ORACLE/apps/dev/common/_pages/_oa__html


sandbox:web_dev> ls -l *Apps*
-rw-r--r--    1 applmgr  oaa         11356 Nov 14 09:23 _AppsChangePassword.class
-rw-r--r--    1 applmgr  oaa         11494 Nov 14 09:23 _AppsChangePassword$__jsp_StaticText.class
-rw-r--r--    1 applmgr  oaa          2037 Nov 14 09:23 _AppsCustomizedSSOLogin.class
-rw-r--r--    1 applmgr  oaa           852 Nov 14 09:23 _AppsCustomizedSSOLogin$__jsp_StaticText.class
-rw-r--r--    1 applmgr  oaa          4626 Nov 14 09:23 _AppsLocalLogout.class
-rw-r--r--    1 applmgr  oaa           888 Nov 14 09:23 _AppsLocalLogout$__jsp_StaticText.class
-rw-r--r--    1 applmgr  oaa         25964 Nov 14 09:28 _qotSZzpAppsLink.class
-rw-r--r--    1 applmgr  oaa          3714 Nov 14 09:28 _qotSZzpAppsLink$__jsp_StaticText.class

Since the .class files were very much present, it meant that the .jsp files had been converted into runtime .class files.
Snippets from relevant log filesmod_jerv.log

[12/11/2007 14:33:53:558] (ERROR) ajp12: Servlet Error: OracleJSP: java.io.FileNotFoundException
[12/11/2007 14:34:57:972] (ERROR) ajp12: Servlet Error: OracleJSP: java.io.FileNotFoundException
[12/11/2007 14:39:43:301] (ERROR) ajp12: Servlet Error: OracleJSP: oracle.jsp.provider.JspCompileException: <H3>Errors compiling:/ORACLE/apps/dev/common/_pages/_oa__html//_ahlBrowserTitleIncl.java</H3><TABLE BORDER=1 WIDTH=100%><TR><TH ALIGN=CENTER>Line #</TH><TH ALIGN=CENTER>Error</TH></TR><TR><TD WIDTH=7% VALIGN=TOP><P ALIGN=CENTER>63</TD><TD>[jsp src:line #:26]<br> cannot resolve symbol symbol  : class FrameworkException  location: class _oa__html._ahlBrowserTitleIncl         catch(FrameworkException fe)               </TD></TR><TR><TD WIDTH=7% VALIGN=TOP><P ALIGN=CENTER>68</TD><TD>[jsp src:line #:31]<br> cannot resolve symbol symbol  : variable csiPageContext  location: class _oa__html._ahlBrowserTitleIncl         csiPageContext.setAppId(AhlcmAppConst.APP_ID);         </TD></TR><TR><TD WIDTH=7% VALIGN=TOP><P ALIGN=CENTER>69</TD><TD>[jsp src:line #:32]<br> cannot resolve symbol symbol  : variable csiPageContext  location: class _oa__html._ahlBrowserTitleIncl         Hashtable browserTitlePrmpts = CsifutRegion.getPrompts(csiPageContext, "AHL_BROWSER_TITLES");                                                                </TD></TR><TR><TD WIDTH=7% VALIGN=TOP><P ALIGN=CENTER>69</TD><TD>[jsp src:line #:32]<br> cannot resolve symbol symbol  : variable CsifutRegion  location: class _oa__html._ahlBrowserTitleIncl         Hashtable browserTitlePrmpts = CsifutRegion.getPrompts(csiPageContext, "AHL_BROWSER_TITLES");                                        </TD></TR><TR><TD WIDTH=7% VALIGN=TOP><P ALIGN=CENTER>73</TD><TD>[jsp src:line #:36]<br> cannot resolve symbol symbol  : variable AHL_BROWSER_TITLE_PRMT  location: class _oa__html._ahlBrowserTitleIncl           browserTitle = (String)browserTitlePrmpts.get(AHL_BROWSER_TITLE_PRMT);                                                         </TD></TR></TABLE>
[12/11/2007 14:39:43:301] (ERROR) an error returned handling request via protocol "ajpv12"


OACoreGroup.0.stderr

Exception in static block of jtf.cache.CacheManager. Stack trace is: oracle.apps.jtf.base.resources.FrameworkException: IAS Cache initialization failed. The Distributed Caching System failed to initialize on port: 12362. The list of hosts in the distributed caching system is: sandbox1 sandbox2 . The port 12362 should be free on each host running the JVMs. The default port 12362 can be overridden using -Doracle.apps.jtf.cache.IASCacheProvidercacheProvider.port=<port number>
        at oracle.apps.jtf.cache.IASCacheProvider.init(IASCacheProvider.java:220)
        at oracle.apps.jtf.cache.CacheManager.activateCache(CacheManager.java:1444)
        at oracle.apps.jtf.cache.CacheManager.initCache(CacheManager.java:752)
        at oracle.apps.jtf.cache.CacheManager.<clinit>(CacheManager.java:378)
        at oracle.apps.fnd.cache.Cache.setCacheFullName(Cache.java:228)
        at oracle.apps.fnd.cache.Cache.initCache(Cache.java:114)
        at oracle.apps.fnd.cache.Cache.<init>(Cache.java:89)
        at oracle.apps.fnd.cache.AppsCache.<init>(AppsCache.java:86)
        at oracle.apps.fnd.cache.AolCaches.getCache(AolCaches.java:155)
        at oracle.apps.fnd.profiles.Profiles.<clinit>(Profiles.java:241)
        at oracle.apps.fnd.profiles.ExtendedProfileStore.init(ExtendedProfileStore.java:498)
        at oracle.apps.fnd.profiles.ExtendedProfileStore.<init>(ExtendedProfileStore.java:119)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at oracle.apps.fnd.common.AppsContext.instantiateProfileStore(AppsContext.java:4312)
        at oracle.apps.fnd.common.AppsContext.makeProfileStore(AppsContext.java:1171)
        at oracle.apps.fnd.common.Context.setProfileStore(Context.java:970)
        at oracle.apps.fnd.common.Context.setProfileStore(Context.java:952)
        at oracle.apps.fnd.common.AppsContext.initializeContext(AppsContext.java:958)
        at oracle.apps.fnd.common.AppsContext.initializeContext(AppsContext.java:918)
        at oracle.apps.fnd.common.AppsContext.<init>(AppsContext.java:752)
        at oracle.apps.mwa.container.ApplicationsObjectLibrary.AOLInit(ApplicationsObjectLibrary.java:172)
        at oracle.apps.mwa.container.ApplicationsObjectLibrary.<init>(ApplicationsObjectLibrary.java:76)
        at oracle.apps.mwa.container.MWALib.setObjectLibrary(MWALib.java:333)
        at oracle.apps.mwa.wap.engine.WapServlet.init(WapServlet.java:158)
        at org.apache.jserv.JServServletManager.load_init(JServServletManager.java:755)
        at org.apache.jserv.JServServletManager.loadServlet(JServServletManager.java:659)
        at org.apache.jserv.JServServletManager.loadStartupServlets(JServServletManager.java:789)
        at org.apache.jserv.JServServletManager.init(JServServletManager.java:447)
        at org.apache.jserv.JServ.start(JServ.java:625)
        at org.apache.jserv.JServ.main(JServ.java:234)
.....
.....
java.lang.NoClassDefFoundError
        at org.apache.jserv.JServServletManager.load_init(JServServletManager.java:765)
        at org.apache.jserv.JServServletManager.loadServlet(JServServletManager.java:659)
        at org.apache.jserv.JServConnection.processRequest(JServConnection.java:394)
        at org.apache.jserv.JServConnection.run(JServConnection.java:294)
        at java.lang.Thread.run(Thread.java:534)
.....

.....

java.lang.NoClassDefFoundError
        at oracle.apps.fnd.framework.webui.OAPageContextImpl.getMACValidationLevel(OAPageContextImpl.java)
        at oracle.apps.fnd.framework.webui.OAPageBean.isMacEnabled(OAPageBean.java:7254)
        at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:667)
        at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:508)
        at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:429)
        at _oa__html._OA._jspService(_OA.java:85)
        at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
        at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)
        at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)
        at oracle.jsp.JspServlet.internalService(JspServlet.java:186)
        at oracle.jsp.JspServlet.service(JspServlet.java:156)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
        at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)
        at org.apache.jserv.JServConnection.run(JServConnection.java:294)
        at java.lang.Thread.run(Thread.java:534)



javacache.log

sandbox:web_dev> pwd

/ORACLE/apps/dev/common/rgf/dev_sandbox1

....
....
[2007-11-14 Wed 11:59:31.099 AM EST] -001 [Grp] Transport initialization failed.
java.lang.IllegalArgumentException: Port value out of range: 144957
        at java.net.ServerSocket.<init>(ServerSocket.java:180)
        at oracle.ias.cache.group.Transport.createServerSocket(Unknown Source)
        at oracle.ias.cache.group.Transport.ssinit(Unknown Source)
        at oracle.ias.cache.group.Transport.init(Unknown Source)
        at oracle.ias.cache.group.GroupCommunication.init(Unknown Source)
        at oracle.ias.cache.Net.init(Unknown Source)
        at oracle.ias.cache.CacheInternal.init(Unknown Source)
        at oracle.ias.cache.Cache.init(Unknown Source)
        at oracle.apps.jtf.cache.IASCacheProvider.init(IASCacheProvider.java:199)
        at oracle.apps.jtf.cache.CacheManager.activateCache(CacheManager.java:1444)
        at oracle.apps.jtf.cache.CacheManager.initCache(CacheManager.java:752)
        at oracle.apps.jtf.cache.CacheManager.<clinit>(CacheManager.java:378)
        at oracle.apps.fnd.cache.Cache.setCacheFullName(Cache.java:228)
        at oracle.apps.fnd.cache.Cache.initCache(Cache.java:114)
        at oracle.apps.fnd.cache.Cache.<init>(Cache.java:89)
        at oracle.apps.fnd.cache.AppsCache.<init>(AppsCache.java:86)
        at oracle.apps.fnd.cache.AolCaches.getCache(AolCaches.java:155)
        at oracle.apps.fnd.profiles.Profiles.<clinit>(Profiles.java:241)
        at oracle.apps.fnd.profiles.ExtendedProfileStore.init(ExtendedProfileStore.java:498)
        at oracle.apps.fnd.profiles.ExtendedProfileStore.<init>(ExtendedProfileStore.java:119)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
        at oracle.apps.fnd.common.AppsContext.instantiateProfileStore(AppsContext.java:4312)
        at oracle.apps.fnd.common.AppsContext.makeProfileStore(AppsContext.java:1171)
        at oracle.apps.fnd.common.Context.setProfileStore(Context.java:970)
        at oracle.apps.fnd.common.Context.setProfileStore(Context.java:952)
        at oracle.apps.fnd.common.AppsContext.initializeContext(AppsContext.java:958)


....

....

So what is Distributed JTF cache? Thats when distributed JTF cache feature comes in, which seems to be enabled by default in 11.5.10 (not sure as of which ATG patchset though). Please my previous article What is the Java cache feature: Framework, Features, Administration and
How does it tie up with Workflow Business Event System (BES)


Essentially, it is just one kind of Java cache component for the JTF product and has a direct bearing on the compilation of the AppsLocalLogin.jsp page. If some FND profile options were changed from a non-java interface like Forms or sqlplus, AND the Workflow Java Deferred Agent Listener GSM component is NOT running, then there is a high possibility that the JTF cache has been invalidated.

Working around it...Thankfully, this is when we came across other bugs that talked about disabling the distributed JTF java cache by modifying the following parameters in the $IAS_ORACLE_HOME/Apache/Jserv/etc/jserv.properties and bouncing Apache:

###############################################
# By default the value of DLONG_RUNNING_JVM is true
###############################################
wrapper.bin.parameters=-DLONG_RUNNING_JVM=false

###############################################
# You may have to add this parameter
###############################################
wrapper.bin.parameters=-DCACHEMODE=LOCAL


And this is when it all the features of Java caching started to make sense. Again, for more information and background, I would highly advise you to read the following two articles:

What is the Java cache feature: Framework, Features, Administration and How does it tie up with Workflow Business Event System (BES)

Java Caching for Oracle Applications 11i: Part 1

ConclusionJava caching can be a pain in the neck, if we do not understand how it works. This can really cause grief in post cloning situations, since FND profile options have to changed to suit to the new environement. In the above case, the issue could also have been resolved by making sure the pending events of Workflow Java Deferred Agent Listener GSM component were processed.

The catch was to understand the Java caching framework and how it was connected with the Workflow Business Event System (BES) events.




What is the Java cache feature: Framework, Features, Administration and How does it tie up with Workflow Business Event System (BES)

Gaurav Verma - Tue, 2008-01-15 03:03

Preface
In a fast paced world, we all want to cache things for faster access: Lets keep this here, so that I wont have to go around the world to get that. Well, this concept was just applied to the JVM components in the application server realm as well.

While we already have an excellent
article by Mike Shaw on Steven Chan's million dollar blog:
http://blogs.oracle.com/schan/2007/05/01/, I thought I would expound upon the java caching feature in general and talk about how it works, it is configured and administered. Also, the relationship between java caching and Workflow Business event system is not made very clear in the existing articles.

Disclaimer:

Most of the content in this article has been taken from the  Oracle Applications Java Caching Framework Developer's Guide, so I am not going to lay any great claims to its originality. At the same time, I will just say that I have tried to present the information there in a more digestible format for Application DBAs like me, who want to get upto speed with the various features being spewed out by the FND team.
Distributed Java Cache - what framework does it provide...

The Caching Framework provides following features:



  • Synchronization: Caching Framework takes care of all
    the synchronization issues in a multi-threaded environment.



  • Distributed Caching: Distributed caching allows one JVM
    to inform all the other JVMs about updates to any cached data. This ensures
    consistency of the cached data across all the JVMS.



  • Data Partition: This feature allows the cached data to
    be partitioned based on any partition key. This is useful for JVMS in hosting
    environments running against a Virtual Private Database (VPD). The Caching
    Framework ensures that the cache data is partitioned based on security group
    id.



  • Database Invalidation: This feature ensures that when
    the data in a database is updated, the corresponding cached data in the
    mid-tier is also updated. This is useful when the updates to the database
    bypass the JVMS, such as updates through forms or sqlplus.



  • Event Support: This feature allows custom event handlers
    to be invoked when certain events such as invalidation or updates to the
    cached data occur. This is useful for maintaining consistency across inter-dependent
    cached data.



  • Cache Administration: Caching Framework comes with administration User
    interface, which is available under the Functional Administrator responsibility. This interface
    can be used to perform administrative operations including changing the time-out values for
    cache components, looking at cache usage statistics, and clearing caches.


  • Cache Diagnostics: Cache diagnostics is a set of diagnostic tests that can
    identify some of the common problems that may occur when using the Caching Framework.

Another good representation of the communication between components is:

How does it work?By default, the distributed caching works by sending the
invalidation message to other JVMs. The list of machines is maintained in the
database. As each JVM starts, it makes an entry into this list (if it is not
already present). When the other JVMs receive this invalidation message, they
mark the object invalid if it is present. When the object is requested in the
other JVMs, it is loaded from the database at that time.

DB Invalidation provides a general mechanism to originate
events from the database. For Caching Framework, these events are used to
invalidate objects in a component cache.

Distributed caching ensures that these updates are seen in all the
middle-tiers. However, in some cases, these updates can happen outside of the middle-tier such as,
updates through the Forms server or concurrent programs. In such cases, the DB invalidation
mechanism can be used to ensure that the cached data is invalidated when the corresponding
database data changes. 


The following is a typical process flow for database invalidation:


  1. The user JVM (Apache/ Jserv) caches data such as profiles. The cached data is a
    representation of some profiles in the database.

  2. The user performs an action such as, updating a profile value through Jinitiator, which
    causes the data in the database to be updated while passing the user JVM.

  3. The cached profile value must now be marked as invalid. Subsequent access to the profile in
    the user JVM causes a cache miss, which in turn results in the updated value being loaded from the
    database.

How Oracle workflow business event system (BES) is related to this.....The Workflow Business Event system provides necessary infrastructure support for notification
of the database data change to the middle-tier. The notification is originated by raising a
business event with the correct key. Caching Framework provides the support for processing the
notification and invalidating the corresponding cached data in all the user JVM.

It is important to know that:
  • Every time an event is raised, it is processed in a separate thread.
  • The events are processed by the Java Deferred Agent Listener running in a standalone JVM (GSM)
    started by a concurrent process. This JVM must be running all the time. This JVM sends a
    distributed invalidation message causing the corresponding key in all of the JVMs to be marked
    invalid.
Lets see an example of processing a WF BES event:





Configuring DB Invalidation Feature

This feature is built using the business event support provided by Oracle Workflow,
the apps caching infrastructure and the underlying distributed caching functionality
provided by IAS cache.


When an update to the database data happens, a workflow event is raised. The
Workflow JVM running the Java Deferred Agent Listener processes this event. This
JVM then issues a distributed invalidation message to all the other JVM's running
against the same database and the cached data in the JVM is invalidated. The following
configuration is necessary for this feature:



  1. Caching Framework must be running in the distributed mode. This is
    the default configuration of Caching Framework. The
    -DLONG_RUNNING_JVM=true is set and it ensures that Caching Framework
    runs in distributed mode. For backward compatibility the same can be ensured by setting
    -DCACHEMODE=DISTRIBUTED.


  2. The Workflow Java Deferred Agent Listener must be running. This runs as
    a thread in a special workflow service container JVM and processes the business
    events being raised in the database. This should be running by
    default. To verify, make sure that Oracle Applications Manager (OAM) is running,
    login into SSA and perform the following steps:
    1. Select the System Administrator responsibility.
    2. Select Workflow (OAM).
    3. Select on the icon next to Agent Listeners.
    4. Query for Workflow Java Deferred
      Agent Listener by selecting Name
      from the Filter dropdown list.

      Note: If the Status column
      shows Running then skip the following steps.


    5. Select the Workflow Agent Listener Service link (under
      Container).
    6. Select Workflow Agent Listener Service and if the status is
      not running, select Start from the dropdown list. Then select
      Go.

      Note: Make sure the status changes to the green icon
      representing a running state.


    7. Return to the Workflow Java Deferred Agent Listener page. Select Start from the dropdown list (under Actions) and then select Go.

      The Status column should show Running.



How to check if a component is enabled for cachingFollow the steps below to check whether the distributed flag is set for a particular
component cache:
  1. Login into the HTML Application Administrator Console (sysadmin/ sysadmin).
  2. Select the Performance tab and then select Components, which is
    located on left side navigation bar.
  3. Choose the correct application from the View dropdown list and then select the appropriate link under Component Identifier.
  4. Verify the Distributed Mode checkbox is
    checked. To enable distributed caching for the component cache, this box needs
    to be checked.
  5. If you change the setting, the Apache/ Jserv must be restarted for the setting
    to take effect.
Cache Administration

These java -D parameters must be added to make the java caching work. For an
Apache/Jserv these are specified in the jserv.properties file as:


wrapper.bin.parameters=-D<name>=<value>

The list of parameters is as below:


  • -DAPPLRGF=<a writeable log directory>

    The writeable log directory can be the Jserv log directory. A file with
    the name javacache.log is created under this directory. If it is not specified, the
    java current working directory is the default. If the default directory
    is not writeable, an error message is written to the jserv log file without
    any adverse effect on the functionality.



  • -DLONG_RUNNING_JVM=true

Note: The above cache deployment steps are required
only if you are using either the distributed caching feature or the cache event handling
feature.
If your environment is auto-config enabled apply the tech stack rollup patch H 3416234.
Testing and TroubleshootingTesting the Component Cache

To troubleshoot Caching Framework use the Diagnostic
Framework. The diagnostic test for Caching Framework can be accessed from
the Oracle Diagnostic UI:


http://<hostname:port>/OA_HTML/jtfqalgn.htm


To log into the system use sysadmin/ sysadmin. Alternatively, the same can
be accessed by logging into AppsLocalLogin as sysadmin, selecting either
CRM ETF Administration or CRM HTML Administration responsibility, and then
selecting the Diagnostics link under Setup.


There are two types of diagnostic tests:



  1. Basic tests to verify the basic configuration related with Caching Framework:CRM Foundation from the
    Application dropdown list, and then select
    Caching Framework on the left side. Select
    Run Without Prerequisite to run the test. Select the icon under the
    Report

    These tests do not require any user inputs and are more suitable for the system administrator
    to run. To access, select the Basic tab, choose column to see the results. This test prints out the basic
    information about Caching Framework's configuration and component caches. This test is more applicable to Apps DBAs like us.


  2. Advanced tests that can be used to troubleshoot a specific component
    cache:
    CRM Foundation
    from the ApplicationCache Component Diagnostic Test on the left side. You can run tests
    on individual component caches.
    To access, select the Advanced tab, select dropdown list, and then select
Testing Database Invalidation

This section discusses how to:


    * Perform database invalidation tests.
    * Bounce the workflow JVM.
    * Verify the workflow event is getting raised.
    * Verify workflow event processing.
    * Verify Java object cache log file location.
Performing Database Invalidation Tests

To test your implemenation, If you have implemented database invalidation:


  1. Perform an action that causes updates to the database data while bypassing the user JVM
    (typically Apache/ Jserv), such as updating a profile through Jinitiator.


    To test, the user must update the data in the database through a UI or directly. Also,
    the user must ensure that an event is raised when the update occurs.


    Note: The event can be raised using the PL/SQL API or through the
    Workflow Administrator Web Application UI.


  2. Access the corresponding cached object. If database invalidation works correctly, you will see
    the updated value.

    To test, the value of the data in the user JVM must be accessed. It should be the new updated
    value. Alternatively, you can examine the keys in the cache through the Advanced Diagnostics test.
    The key that corresponds to the data that is getting updated in step 1 above, must not be
    present in the cache after the update occurs.


    Note: Because the processing of events is asynchronous, you must
    wait at least one or two minutes after updating the data to see the effect in the middle-tier data.



For database invalidation to work correctly, all the different underlying pieces must work as
expected. Some of these pieces belong to the infrastructure and some are supplied by the user. All
the seed data must be in place, the background services must be running, and the runtime
must behave as expected. Diagnostic tests are provided for checking the configuration. The
Cache DB Invalidation test, under the Basic diagnostics tab, can be run
to verify that the general infrastructure configuration is in place.


The CacheComponent DB Event Invalidation test, under the Advanced diagnostics tab, can be run for
a specific component cache for which the database invalidation functionality is being tested. The
poplist lists only the component caches that have corresponding workflow defined. If your
component cache does not appear, check the component cache definition to make sure that the business
event is defined.


If all the diagnostic tests pass but the functionality still does not work, check the runtime
behavior by:

  • Bouncing the workflow JVM.
  • Verifying the workflow event is getting raised.
  • Verifying the workflow event is processed correctly.
  • Verifying the Java object cache log file location.

Bouncing the Workflow JVM

After applying the appropriate patch, the workflow JVM that is running the Java Deferred Agent
Listener, needs to be bounced.


Note: This is not the Apache Jserv process.


To bounce the workflow JVM:



  1. Login to SSA and select the System Administrator responsibility.



  2. Select Workflow (under Oracle Applications Manager (OAM).



  3. Select the Agent Listeners icon and locate the row where the
    Name column is Workflow Java Deferred Agent Listener.


  4. Select the Workflow Agent Listener Service under the
    Container column.



  5. Verify that the radio button for the Workflow Agent Listener Service row under the
    Select column is selected.


  6. Select Restart from the second dropdown list and then select
    Go.


  7. Select OK. The State column changes
    to Restarting.


  8. After a short delay, select Reload. The
    State column changes to Activated.



Verifying the Workflow Event is Getting Raised

To verify that the workflow event is getting raised:


  1. Issue the following query:


    select to_char(enq_time, 'yyyy-mm-dd hh24:mi:ss')
    ,to_char(deq_time,'yyyy-mm-dd hh24:mi:ss')
    ,msg_state,user_data from applsys.aq$wf_java_deferred where enq_time > to_date
    ('2004-11-1 11:19:00','yyyy-mm-dd hh24:mi:ss') order by enq_time desc;


    Notes:

    • The to_date(..) value should not be more than a few
      seconds greater than the time 't'.



    • This query should return at least one row where the string representation of
      user_data value contains text of the form
      ('BES_EVENT_NAME', 100, 'oracle.apps.fnd.menu.entry.insert') or
      ('BES_EVENT_NAME', 100, 'oracle.apps.fnd.menu.entry.update').



    • For profile update it would be
      ('BES_EVENT_NAME', 100, 'oracle.apps.fnd.profile.value.update').



    • The third value, oracle.apps.fnd.profile.value.update,
      is the 'event name'. It should also have text of the form
      AQ$_JMS_USERPROPERTY('BES_EVENT_KEY', 100,
      '10001:0:0:FND_SSO_LOCAL_LOGIN_MASK',...)
      where the third value should correspond to the data
      that got updated/ created.



    • The value '10001:0:0:FND_SSO_LOCAL_LOGIN_MASK' is the
      'event key'.




  2. The value of the msg_state column begins as Ready and then
    it changes to Processed.

    Note: Attempt to raise an
    event through the Workflow Administrator Web Application UI by selecting
    Events, searching for the desired event, and then using the icon under
    the Test column in the Search result.



Verifying Workflow Event Processing

Event processing can be confirmed by examining the log files. This requires changing the log
level of the workflow JVM that is running the Java Deferred Agent Listener, which processes the
event.


To change the log level:


  1. Login to Oracle Applications Manager Dashboard -> Site map -> workflow -> Service component.

  2. Locate the row where the Name column is
    Workflow Java Deferred Agent Listener.

  3. Select the checkbox under the Select column, which is located
    next to the row mentioned in the previous step.

  4. Select Edit.

  5. Select Next to go to a second page. Select Procedure from the
    Log Level dropdown list.


    Note: No changes are required if the
    Log Level value is Procedure or Statement.

  6. Select Finish.

  7. Restart the Workflow Agent Listener service.


To examine the runtime logs:



  1. Cause a database invalidation event by performing an action to update the data. See performing database invalidations test.

  2. Login to Oracle Applications Manager Dashboard -> Site map -> workflow -> Service component.

  3. Locate the row where the Name column is
    Workflow Java Deferred Agent Listener.

  4. Select View Log.

    The log file contains the following
    series of messages:


    • Business Event received in the cache handler:<event name> with the workflow
      context:<context value>.
    • Business Event=<event name>key=<event key>corresponds to the
      app=<Application Short Name>and component key=<Cache Component Key>and loader
      class=<loader class name>.
    • Just about to call stringToKey with key=<event key>.
    • Obtained the keys <keys>.
    • Invoking
      CacheManager.invalidate for component=,Cache Component Key>
      app=<Application Short Name> and key=<list of keys>.

      Note: This message should appear at least once.


Interesting related information on the metalinkLooks like there have been more metalink notes released for diagnosing issues in the recent past: e.g. Investigating NoClassDefFoundError in eBusiness 11i when users login (Metalink Note 455366.1) and Diagnosing database invalidation issues with Java Cache for eBusiness Suite (Metalink Note 455194.1).


I got tagged in the <a href="http:/

Susan Duncan - Mon, 2008-01-14 09:01
I got tagged in the Oracle Blogsphere tag game by Shay Shmeltzer so here goes my entry of 8 things you didn't know about me.

1. In 1973 I was sent from Reading, UK to live on a cotton farm and attend high school in Arkansas, USA for a year by AFS Intercultural Scholarships. At the end of the year I was inducted as an Arkansas Traveler. Even now I drop into an Arkansas drawl the minute I reach the Delta - love it!

2. This started my love affair with Blues. It grew and developed after I met my husband, Scott, through his research for the original writers of songs recorded by such great guitarists as Rory Gallagher. In about 1986 during a blues festival holiday in Memphis (TN) we met some people who have become our great friends: David and Liz Berntson who, earlier in the year, had founded the Tulsa Blues Society. Also first met Paul Jones who was in Memphis to cover the festival for BBC Radio. As a result of these meetings we arrived home to find Paul had talked about our ideas on air and we started the British Blues Connection and the magazine Blueprint.

3. During over 10 years of the British Blues Connection and Blueprint, we became the first overseas Blues organization to be affiliated to the Blues Foundation and were Keeping The Blues Alive award winners in 1990. In the late 1990s we passed the UK blues gauntlet over to Blues In Britain

4. I love music, singing and dancing. From working the amateur chorus lines in productions like Lady Be Good in my 20s (when I was younger, thinner and more flexible!) to singing and dancing with blues men or my fab musical family or anyone who will let me. One of my special blues moments is dancing on stage with Willie Dixon when he presented us with our KBA Award in 1990. But it's not just about Blues, I love music - from Karaoke to Kraftwerk, Blues to Bartok and all the Kings (Elvis, Freddie, Albert, James, Frank, Bob ....)

5. I love to travel. I'm not sure I'll ever make the Traveler's Century Club (think I'm at about 35 currently) but I like to take every travel opportunity (whether work or leisure related!) Last year I added South Korea and China to my list and this year, as well as Europe and the USA, we will be in Rio to celebrate the wedding of our good friends: Blues man Alamo Leal and Mariza Lopez

6. My first personal computer was an Mac SE30 Bought this in 1989 when Blueprint became a magazine that could no longer be pasted and photocopied on my office copier but had to become more sophisticated as its readership grew. I learned how to use Adobe Pagemaker and spent many long, long nights waiting for the tiny screen to refresh as I moved across its 32 pages adding articles (Scott was the editor) and leaving space to paste in the photos. This was also the time of my introduction to 'programming'. I used spreadsheets and macros to maintain the subscription list and create mailing labels. At the time I thought I had designed a database!

7. Oracle is my second career. In my 20s I was a Financial Controller for a SME US company in the UK and started up subsidiaries in France and Germany for them. In my young, thrusting days I was even a finalist in the UK 'Young Career Woman of the Year' (can't remember which year - didn't get far). Later I took a Computer Science degree (for fun) and decided to try life at Oracle - the rest is history!

8. I have two favourite types of footwear! In the summer it's hard to imagine not being in flip-flops. I have many, many pairs - including High Havaianas that can make that awkward transition from shorts to cocktail dress ;-) In the winter I move into cowboy boots - the most comfortable footwear ever. But be sure to get a good brand. For me that has to be the Ariat.

So, if you see a flip-flop carrying, cowboy boot wearing, laptop hauling Oracle Product Manager demoing with blues-inspired examples - be sure to say "hi y'all"

I hate chain letters but who am I to deny you the opportunity to join the fun? So I tag Sue Harper, Kuassi Mensah, Doug Clarke, Eric Rajkovic, Brian Duff (sorry)

Oracle Blog Tag is dead (or should be pretty soon)

Peter Khos - Sun, 2008-01-13 20:02
So, the recent Blog Tag should be almost over by now and the debate over whether one should or should not participate is over. It's interesting to see how a simple thing like this can become such a sticky point for a number of folks. Jake K obviously didn't expect such a reaction to starting the blog tag.For me, it's an exercise in team building. I find that folks tend to work and get along Peter Khttp://www.blogger.com/profile/14068944101291927006noreply@blogger.com3

I've been tagged 3 times; 8 things about me

Pawel Barut - Sat, 2008-01-12 10:17
Few busy days without any blog reading and after I've gone through my feeds it occurred that I've been tagged 3 times:
  1. By Eddie Awad
  2. By H.Tonguç YILMAZ
  3. By Jorrit Nijssen (Jornica)
Thanks You for tagging.
Now I feel that I really need to write something about me:
  1. I was born and grow up in Krosno in south-east Poland (see satellite picture),
  2. I 15th when Communism fall down in Poland. At this moment Poland is member of Schengen Agreement, and I can travel around Europe without passport. Lot of changes in last 19 years,
  3. I'm Thawte Web of Trust Notary,
  4. In 1993 I took 2nd place in Nation Contest in Programming for College Students. Unfortunately I was 6 month too old to take part in international final :(
  5. In 1990 I've sold my first program; small DB written in Clipper. I did not think that this program will be used for so many years. In 1999 I had to do some changes to support year 2000,
  6. My first program was written in Basic and was run on PSP-80 (page in Polish)
  7. I'm married and we have 2 daughters (6 and 2 years old),
  8. My favourite TV show is Top Gear with Jeremy Clarkson , Richard Hammond and James May.
I will not invite anyone directly as I do not want to accused of spam. All my readers that have blogs are welcome to post 8 things about themselves.

Cheers,
Paweł
Categories: Development

Tag flood

Christian Bilien - Fri, 2008-01-11 10:08
  Amid the tag furry, I was tagged some days ago by Jeff Moss so I’ll have to give some pieces of information about myself presumably of low interest to most. I had not put any personal information on my blog, so here are 8 of them which I’ll keep short anyway: I come from […]
Categories: DBA Blogs

Smart Space: What is it?

Oracle EPM Smart Space - Fri, 2008-01-11 09:26
Smart Space is a radical departure from the traditional BI/EPM application. For years the BI/EPM market has been focused on providing more and more features. These features are added to backend services bringing us to the ‘system’ we have today. However most of these features are simply added to existing user interfaces. Over time these interfaces, though packed with features, have become difficult to use, underperforming and nearly impossible to customize. It seems that the market has shifted the focus away from analytic consumers toward the power users which is narrowing the reach of BI/EPM solutions.

With Smart Space, we have taken a completely new approach. It is simple and elegant. We leverage the power of the entire Windows client (including the browser) to deliver a rich end user experience leveraging the powerful back end EPM processes in place today. Very few are taking this approach today and it clearly differentiates Oracle from any other BI/EPM vendor.

So, let’s look at Smart Space in a little more detail…

Smart Space creates a BI/EPM environment within the Windows desktop. This is done by installing a small, lightweight engine that is tightly integrated with Windows. The installation uses a technology called ClickOnce which is simple with automatic update capabilities. Let’s face it, customers expect any client software to be easy to install and self maintaining.

Smart Space is then “Always On”, taking advantage of the power of the desktop with its ability to multitask. Because Smart Space is “Always On”, the user connects to the BI/EPM system one time and never has to connect again. This combination of a single login and being “Always On” is a perfect example of a simple enhancement that will make BI/EPM software much more useable and responsive.

Instead of creating one large application with hundreds of features, Smart Space breaks down an application into its functional pieces. These subsets of functionality are then presented to the user in the form of gadgets. The users are then free to choose the functionality they need and organize their gadgets according to their workflow.

Smart Space also enhances the analytical experience by introducing simple collaboration into the BI/EPM environment. The collaboration capabilities of Smart Space allow for “in context” discussions about the BI/EPM content that is both secure and auditable.

Smart Space will change the way people use BI/BPM software. Instead of using BI/BPM only when necessary, Smart Space allows a wide variety of knowledge workers to easily integrate this valuable BI/BPM information into their everyday desktops.
Categories: Development

The blog tagging thing

Yasin Baskan - Fri, 2008-01-11 06:50
During the last few days lots of Oracle bloggers have been busy tagging each other and posting eight unknown things about themselves. I was also tagged by some friends and was asked to post eight things about myself. I have never forwarded any chain e-mails or messages to anyone and in parallel to that I have not written anything about myself after this either.

What I think about this blog tagging thing is very similar to what Howard Rogers thought about it. He shut his site down for some time and you can read what he thinks when you go to his blog. My thoughts on this are here in the comments to an Eddie Awad post. Howard has also posted a comment there to explain further.

So I've been tagged...

Peter Khos - Thu, 2008-01-10 23:49
Apparently the blog tagging thing is still going strong. Doug Burns tagged me early this week. Thanks Doug, now I got two problems: a) figure out 8 things that people don't generally know about me and b) figure 8 other bloggers to tag. You can see Howard Rogers' comments to this blog tagging at the above mentioned Doug Burns' blog entry. I don't agree with Howard's comments but he has every Peter Khttp://www.blogger.com/profile/14068944101291927006noreply@blogger.com3

Tagged!

Jornica - Thu, 2008-01-10 16:58

 Gareth Roberts tagged me. Thanks for the invitation. And here are 8 things you did not know about me.

  1. My nickname Jornica is derived from Jorrit Nijssen. However five characters is often not enough for an username. By adding some extra random chosen characters ca it is long enough...
  2. I maintain another non Oracle related blog as well: Etc.
  3. Keywords of my favorite holidays: sea, sun and hills. Did I mention volcanoes?
  4. My roots are in the southern part of the Netherlands; I like music from artists like De Janse Bagge Bend, Gé Reinders and Rowwen Hèze.
  5. I like to watch fire engine movies on You Tube with my son.
  6. My family believes I'm a good cook.
  7. My favorite Linux distribution is homemade Linux From Scratch. It's about building your own Linux system from source code.
  8. I use Lifehacker as a source for new software: Windows tools and utilities.

And now, who's next (sorry 3 out of 8).

Gadget/Widgets, What are They and Why Do I Need Them?

Oracle EPM Smart Space - Thu, 2008-01-10 14:18

I hear these terms a lot now a days when talking about software, and just a year or so ago I would of thought a widget was a generic term for a product and a gadget was some new electronic device. Not anymore, these terms have quickly taken on new meaning and have a place in the world of delivering information. The bad thing about these terms is that everyone uses them a little different and there are already variations on the terms. So I am going to give you my take on these terms as I see if and how they apply to Business Intelligence (BI) & Enterprise Performance Management (EPM).

First let’s try and make things simple and assume that the terms Widget and Gadget are synonyms and understand that I usually use the term Gadget. So in this post when you see the word ‘gadget’ you can replace it with ‘widget’ in your head if you so desire. My simple explanation for why there are two terms is because more than one company decided to use these ‘things’ and they have decided to differentiate. Short explanation Apple used the term ‘Widgets’ so Microsoft decided to use the term ‘Gadgets’. So that brings us to the key players in the space, I am sure there are more but I see four key players on the consumer side of things.

These companies all have gadgets and the frameworks that run them but many of them have different variations. These variations fall into three general categories. Desktop, web, and mobile with each of the above companies playing in one or all of the three categories. Even with all of these variations I think I can sum up in general what the purpose of these things are:

Gadgets (or Widgets) are mini applications that expose key content (bits of data) or features generally from a larger (full) application and they deliver these features or data in a simple and visually pleasing manner.

Examples:
Data (Weather) – The larger application is your weather person or weather.com, these people and sites have lots of great data points but all I really care about is current conditions and tomorrows conditions. I really don’t have a desire to understand how isobars or barometric pressure impacts the weather. Thus a gadget.


Feature (Play Music) – The larger applications are iTunes, WMP, Zune, Songbird, Music Match and many others, these are cool full applications packed with rich features but I just want to play a song or playlist most of the time. Thus the gadget.

You can apply this concept to almost any feature you use most often or data you look at on a regular basis. The variations of desktop, web or mobile do not really matter the definition holds in any case.

Now that we know what gadgets are lets think about if we need this new application class in our life. Here I think the answer is simple to arrive at. Just ask yourself if you have ever opened a program for a single feature or piece of information? If yes then explore the possibility that others are doing it. I doubt that very many people can say no to this question. I used to do it every morning before going on my runs. I would go to weather.com and look up the forecast for my zip code and filter through all the other features to get the temp so I could decide to how to dress for the run. Now I just glance at the gadget and I can tell if I need a hat or not.

So now we know what they are and we think that they have at least some utility but can we apply these concepts to BI and EPM? This is the very question among others we had to answer when we were creating Smart Space. We came to the conclusion that BI and EPM companies where building products and adding features based on the needs of their most active users. This makes for really good, feature rich applications that some user may find offer too much. So we starting playing with BI and EPM concepts and applying them to gadgets and it worked. Here is an example:

Reporting – Over the years we have found that many users look at the same reports over and over again. Maybe it is the monthly closing process and there is a ‘book’ of reports the accounting department reviews, or a sales representative is looking at pipeline data every day. This is the feature. The larger application would be the BI tool used to present this data or reports like Oracle Answers, Financial Reporting, or Publisher. So why not let the user pick the reports or report pieces that they feel are most useful for their tasks and have them always open and ready for them. Thus a gadget.

Smart Space Smart Book Gadget:

Because the concept was so easily applied we decided to make gadgets one of the many key features in Smart Space. The gadgets in Smart Space are complemented by a bunch of other great features that make the gadgets easy to use and lend to the overall user experience.

With Smart Space gadgets we decided to not use an existing gadget framework or engine for a number of reasons. Above I used the word ‘consumer’ when I talking about existing gadget frameworks or engines and this is because to date they have been focused on the mass market and have not applied the concept to businesses or business applications. For example they have lots of gadgets for weather, stock, fantasy football, cpu meters, and even countdown to the OC. The point is that these are great, I use them, my kids have used them, but they have not crossed over to business application and the needs of business. These special needs are what differentiates Smart Space gadgets from consumer gadgets. Some of the key needs are as follows.

Gadgets are just one part of the overall user experience and there are many other features needed to enhance or complement the gadgets. For example Smart Space has a top notch Windows shell integration that allows user to easily add BI and EPM content to their gadgets. This shell integration presents application content in an enterprise repository as if it were a flash drive. Consumer frameworks do not offer these features.

Deployment and control came up as a major issue and we spoke with customers. IT organizations managing a rollout of BI application do not want their users to just go and download gadgets. Also IT wants control over who develops the gadgets that the users can install. Administrators also told us that they need this framework to be able to install on restricted user desktops. With the consumer frameworks the control and deployment differences were show stoppers. Smart Space allows administrators to publish gadgets to a ‘gadget store’ for user to select from and the users can download and install the client and new gadgets with no administrative rights.

So in summary, whatever you call it, gadgets or widgets they are a key part of computing for the consumer space and this trend will continue to move into the business space. I challenge everyone to share thoughts and ideas on how you would apply these concepts to a business application.

Categories: Development

I have been tagged

Fadi Hasweh - Thu, 2008-01-10 14:17
Gareth Roberts tagged me in the current round of OraBlog tag, you can check the rules.

Below are the 8 things you might not know about me:

1- Athens, Greece, Masters: I am currently doing my masters in managing business innovation and technology thurogh a scholarship here in Athens, Greece.
2- Having to change your job is a good thing: I started my oracle career after I had to change my previous job (well my old manager claims that my work was done there and the project i was working on was over, actually it turns out to be a good thing after that I changed my career path from Microsoft to Oracle)
3- Travel: I like to travel a lot and I am welling to take any chance to visit any new country/places.
4- Documentary: I am a T.V documentary addict; I can watch any type of documentary but prefer political ones.
5- Jogging: I jog 3-4 KM every other day I like jogging a lot.
6- Single: well still I am currently single. (Marry to oracle apps I guess ;-).
7- Reading: currently I am trying to get used to reading I have this book called (the management bible by John Wiley and sons) it’s a good book I guess every manager should read it, although I am not a manager yet but be prepared always. You never now what will happen next.
8- Sky is the limit and think big: Sky is the limit is my personal message at MSN messenger, and think big will be my next personal message at MSN.

My turn in tagging, I will tag.
OCP Advisor
Syed Jaffar Hussain
Lutz hartmann
Mark Rittman
Grant Ronald
Senthil Rajendran
Vikram Das
Famy Rasheed

have a nice tagging

fadi

procedure for Calculating Database Growth and scheduling in DBMS JOBS....

Ayyappa Yelburgi - Thu, 2008-01-10 04:18
1. Create a Table By the Name db_growth...with following details... Name Null? Type ----------------------------------------- -------- ---------------------------- DAY DATE DATABASE_SIZE_MB NUMBER DAILY_GROWTH_MBayyudbahttp://www.blogger.com/profile/00046200352601718598noreply@blogger.com13

Agile PLM 9.2.2.1 – Part III – Application Node Installation

Aviad Elbaz - Wed, 2008-01-09 08:48
This is the 3rd (and last..) post about Oracle Agile 9.2.2.1 installation.
In this post we will see the Agile application node installation step by step including all Agile application required components.

Previous related posts:
- Agile PLM 9.2.2.1 – Part I
- Agile PLM 9.2.2.1 – Part II – Database Node Installation


The Agile Application node installation composed from the following steps:
- Complete all application installation pre requisites
- Oracle Application Server 10.1.2.0.2 Installation
- Oracle Applications Server Patch
- Agile Application Installation
- Agile Viewer Installation
- Deploy Agile application on Oracle Application Server
- Verify Installation
- Configure IIS as a Proxy Server for Agile PLM
- Configure File Manager with IIS
- Verify File Manager installation


Prerequisites

1) Copy Platform directory from Disk2 to Disk1 to the setup.exe level
2) Make sure Microsoft IIS (Internet Information Services) is installed on this box.

*** It is important to install MS IIS before proceeding with the Oracle AS 10.1.2.0.2 installation, otherwise you might get into port conflict between IIS and Oracle AS 10.1.2.0.2.


Oracle Application Server 10.1.2.0.2 Installation

1) Run installer - setup.exe (from Disk1 directory)


2) Oracle Home destination:
a. Name: oracleas1
b. Path: d:\OraHome_1


3) Language: Choose the appropriate languages.


4) Check the Administrative privileges


5) At Select Configuration Options window, leave the upper 2 options checked only


6) Port configuration: Automatic


7) Fill in the Instance name and ias_admin password:


8) Install


9) Exit


10) Shutdown Oracle AS:
a. Open a cmd window
b. cd oraHome_1\bin
c. emctl stop iasconsole
d. opmnctl stopall


Oracle Applications Server Patch Installation

1) Open a cmd window
a. set ORACLE_HOME=d:\OraHome_1
b. cd [Installation Dir]\Windows\patches\oas101202\OPatch
c. opatch apply d:\ [Installation Dir]\Windows\patches\oas101202\OPatch\3992805


2) Type "Y" (for : Is this system ready …?)



Agile Application Installation

1) From Disk1: cd [Installation Dir]\Windows
2) Execute setup.exe


3) Accept the license agreement
4) Enter license & username


5) Select Applications Server + File Manager + Web Proxies


6) Location to install Agile application: D:\agile\Agile9221


7) Select Oracle Application Server 10g (10.1.2.0.2)


8) Select Standalone Installation


9) Enter Oracle Application Server Home directory: d:\OraHome_1


10) Click on Use Existing


11) Choose: No, use a Database for authentication


12) Hostname: agileapp.[domain]


13) Web Server information: agileapp.[domain]:80


14) Agile viewer information: agileapp.[domain]:5099


15) Database details:
a. Agile Database Host Name: agiledb
b. Agile Database Port: 1521
c. Agile Database SID: agile9
d. Agile Database User: agile


16) Virtual path: Agile


17) At File Manager User Authentication window select: Use Internal user account


18) File Manager Virtual Path: Filemgr


19) Agile File Manager window: agileapp.[domain]:80


20) Agile File Manager Storage Location: e:\agile\agile9221\files


21) Select to create product icons in an new Program Group called: Agile


22) Install…


23) Restart the system


Agile Viewer Installation

1) From Agile Viewer installation directory execute: setup_win.exe


2) Accept the license agreement
3) Enter User name and License key
4) Check the Agile Viewer only


5) Select New Install


6) Location: d:\Agile\Agile9221


7) Select Regular Agile Viewer


8) Enter hostname & port: agileapp.[domain]:5099


9) Done



Deploy Agile application on Oracle Application Server

1) cd OraHome_1\opmn\bin
a. Stop all Oracle AS processes - opmnctl stopall
b. Start all Oracle AS processes - opmnctl startall
c. cd d:\agile\agile9221\agileDomain\bin
d. Execute command: DeployAgile


2) Verify deployment
a. cd \OraHome1\dcm\bin
b. dmctl listapplications



Verify Installation

1) Run in browser the following url: http://agileapp:7777/Agile/PLMServlet
2) Connect with admin user


Configure IIS as a Proxy Server for Agile PLM

1) Navigate to: Control Panel -> Administrative tools -> Internet Information Services (IIS) Manager


2) Right click on “Default Web Site” (under Web Sites) -> properties
3) Select the “Home Directory” tab
4) In the “Execute permissions” list, select “scripts and executables”


5) Select the “ISPAI filter” tab -> add
a. Filter Name: oproxy
b. Executable: D:\Agile\Agile9221\AgileProxies\oracle_proxy.dll


6) Right click on Default Web Site-> new -> Virtual directory


7) Alias: oproxy


8) Path: d:\agile\agile9221\AgileProxies


9) Check the read and execute options


10) Finish.
11) Navigate to “Web service extension” -> select: “all unknown ISAPI extensions and Click “Allow”


12) Navigate to: Control Panel -> Administrative tools -> Services
13) Restart the “IIS Admin Service”
14) Run in browser: http://agileapp/Agile/PLMServlet (without port 7777)
15) Logon with admin user to verify IIS configuration.


Configure File Manager with IIS

1) Edit d:\agile\agile9221\Tomcat\conf\server.xml
2) Look for the port after the following text:
!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --

3) Edit file jk2.properties -> channelSocket.port=8009 (the previous port)
4) Navigate to: Control Panel -> Administrative tools -> IIS Manager
5) Go to ISPAI Filter tab -> add
a. name: Jakarta IIS Connector
b. Executable: D:\Agile\Agile9221\AgileProxies\isapi_redirect.dll
6) Right click on default web site-> new -> Virtual directory
a. Alias : Jakarta
b. Path: d:\agile\agile9221\agileproxies
7) Check the read and executable options
8) Restart IIS Admin Service again.


Verify File Manager installation

1) Startup tomcat server by: d:\agile\agile9221\tomcat\bin\catalina start
2) Open the following url in browser to check Java installation on client: http://agileapp/JavaClient/start.html


3) In order to use the Agile java client we should install Java JRE 1.5.x
4) Open the following url again: http://agileapp/JavaClient/start.html
5) Click on Launch
6) Login with admin user.
7) Navigate to: Server setting -> locations
Verify all locations (especially under the File Manager tab)


Now when the Agile application node installed, the Agile system are ready for use.
If you have an initial dump file to export, you can do it now with agile9imp.bat script.

For more information:
Installing Agile PLM for OAS

You are welcome to leave a comment for any issue or additional information.

Aviad

Categories: APPS Blogs

Introduction to Simple Oracle Auditing

Ayyappa Yelburgi - Wed, 2008-01-09 06:20
IntroductionThis article will introduce the reader to the basics of auditing an Oracle database. Oracle's RDBMS is a functionally rich product and there are a number of auditing alternatives available to the reader. Because auditing Oracle is such a huge subject, doing all of it justice would take an entire book, so this paper will cover the basics of why, when and how to conduct an audit. It ayyudbahttp://www.blogger.com/profile/00046200352601718598noreply@blogger.com8

Introduction to Simple Oracle Auditing

Ayyu's Blog - Wed, 2008-01-09 06:20
Categories: DBA Blogs

Pages

Subscribe to Oracle FAQ aggregator