« May 2007 | Main | August 2007 »

June 2007 Archives

June 11, 2007

Workflow performance case study: Dont Repeat History, Learn from it

shlok for xxont_custom_atp 25012007.gif:

A Sanskrit Shlok underlying the importance of careful planning

Preface

They say: "Those who do not know history are condemned to repeat it."

But why repeat history if you dont have to?

Many questions come to light on this topic of discussion:
  • Is there a better way of designing conditional implementation in workflow?
  • What are the merits/demerits of repeated checking of a particular condition as opposed to executing something when the actual condition happens? What are the performance implications?
  • Are there workflow APIs available which simulate event based subscription model?
  • What are the performance advantages of using the basic Workflow APIs that simulate this event based subscription model?
This case study discusses the performance benefits of keeping unnecessary looping execution in workflow design a a bare minimum and if possible, eliminate it. If there are several short timed loops in the workflow design, that get executed very often, the bad news is that the System spends valuable resources spinning the wheels in vain.

The intended audience is workflow designers, support personnel and Oracle Apps DBA alike. This case study can potentially help users to design their workflow more optimally and succintly, which would have a minimal impact on the execution. The I/O profile and time taken for Workflow Background Process bears out all this information. As far as possible, trends have been depicted from the customer's Production system.

Summary of Learnings

  • It pays to know the published Workflow APIs. The Workflow Developer Guide is a good place to start. Spend time reading the fine manual. More information can never hurt.
  • It pays to spend time and effort in evaluating re-design of loops in workflow design early, especially since once initiated, a specific version of workflow runtime data does not automatically get updated after a newer version of workflow design is uploaded (through WFLOAD)
  • Poor design involving WAIT and poll activities in a loop can cause infinitely running Workflow Background Process (FNDWFBG)
  • Short-timeout activities in loops should be replaced with OE_STANDARD_WF.STANDARD_BLOCK or WF_STANDARD.BLOCK APIs and WF_ENGINE.COMPLETEACTIVITY APIs
  • Simple design changes can bring HUGE performance benefits, especially when a lot of volume is involved

June 16, 2007

A Bird eye's view of the process tree in linux

Mastering the linux command is always rewarding. In this article, we look at the utility of seeing process graphs in linux, which might be quite useful in troubleshooting an debugging issues.

On Linux, the pstree -p <PID> gives the entire parent/child relationship tree in a very concise view. In this example, we see how to find out the PIDs of the java servlet processes running under the apache httpd process:

In 11i Oracle Apps environment, $SCRIPTS/adapcctl.sh status gives you the PIDs of the core and pls/sql apache processes. Simply do a pstree -p <PID> to see the entire tree graph:

pstree.GIF:

On Sun OS, the same can be achieved by ptree command
(usual location /usr/proc/bin). This command may be available depending
on if the proc library has been compiled into the OS or not.

June 17, 2007

For the want of XML parsing, iPayment was lost; for the want of not being able to take payment, business was lost..

"For the want of a nail, the shoe was lost;
 for the want of a shoe the horse was lost;
and for the want of a horse the rider was lost,
being overtaken and slain by the enemy,
 all for the want of care about a horseshoe nail." -


  --  Benjamin Franklin

Preface - Oracle iPayment

 
Oracle iPayment is a complete payment and receipt processing solution that enables efficient, reliable and secure financial transactions. It is the central payment engine for Oracle E-Business Suite that lowers costs and improves control by integrating out-of-the-box with major processors and financial institutions.Oracle Payments offers end-to-end electronic payment processing that includes validation, aggregation, formatting and secure transmission of payments to financial institutions.

Impact of iPayment not working

If a small or enterprise wide business has implemented the Order-to-Cash business flow and has a moderate to high order volume, it may not be surprising to have a backlog of 500,000 USD  worth of orders in a short period of downtime.

The impact of iPayment (online and batch transactions) not working would result in customer service representatives being unable to take Credit card orders. This can be highly probable since most of the credit card customers are large corporations or State/Federal Govt. clients.

Needless to say, iPayment not working is not good news for CFOs and results in large revenue losses.

Simple things can spoil the party...

In Oracle Applications 11i (11.5.9/11.5.10), Oracle iPayment module relies on XML parsing function. Oracle ATG (Applications technology group) team provides such an XML parser.

An XML parser basically extracts information from a XML document. An illustration can be seen below:

xml parser image.gif:

Lets say one wants to come to apply a higher patchset for another functional module  (say Fulfillment servers), it may be required to come first on a higher ATG patchset level. After a particular level, ATG upgraded its XML parser from 2.0.2.9 to 9.0.4 version.

The higher version of ATG patchset in 11.5.9 and 11.5.10 are compatible with the newer  $JAVA_TOP/xmlparserv2-904.zip java class archive. But at the same time, other Oracle Applications modules (e.g. IBY - iPayment Patchset O - as in "Oh") may only be compatible with the older version of the XML parser, which is delivered in $JAVA_TOP/xmlparserv2.zip java class archive.

This divergent direction by different Oracle modules and ATG module causes issues for dependent modules which have requirement for XML parsing.

Even if you dont apply a higher ATG patchset and run Autoconfig on the server where iPayment servlet has been configured, you can run the risk of making iPayment not work if the following setting is present in the $CONTEXT_FILE :

sandbox07:web_dev> grep xmlparser $CONTEXT_FILE
        <xmlparser_name oa_var="s_xmlparserv2_name">xmlparserv2-904.zip</xmlparser_name>

This will propagate this setting in all the *.properties files in $IAS_ORACLE_HOME/Apache/Jserv/etc and iPayment servlet will use this class archive, thereby making it not to work.

Seeing the error message...

This is what you would see on the screen during a test credit card authorization via the iPayment Administrator responsibility..

iPayment error.gif:

And this is what you would see in the debug iby.log:

160:EXCEPTION:[iby.exception.Log.debug.generic]:oracle.xml.parser.v2.XMLParseException:
Root element name must match the DOCTYPE name.

at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:205)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:277)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:253)
at oracle.apps.iby.net.XMLMessenger.deliverDoc(XMLMessenger.java:131)
at oracle.apps.iby.payment.proc.BatchCCPayment.pay(BatchCCPayment.java:433)
at oracle.apps.iby.payment.OraPmtRisk.oraPmtReqRisk(OraPmtRisk.java:250)
at oracle.apps.iby.ecapp.PmtECApp.oraPmtReq(PmtECApp.java:827)
at oracle.apps.iby.ecapp.PaymentServiceImpl.oraPmtReq(PaymentServiceImpl.java:628)
at oracle.apps.iby.ecservlet.AuthService.service(AuthService.java:339)
at oracle.apps.iby.ecservlet.ECServlet.doGet(ECServlet.java:157)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:499)
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)

Why doesn't it work...

To sum up the issue, here's why it does not work:

xmlparser2-904.zip is newer code for XML parsing which is released by the ATG team. The older version was xmlparserv2.zip.

There is a validation behaviour difference between xml parserv2.zip and xmlparserv2-904.zip. In the newer version, the code raised following exception:

EXCEPTION:[iby.exception.Log.debug.generic]:oracle.xml.parser.v2.XMLParseException: Root element name must match the DOCTYPE name.

Factually speaking, this is just another observation in the series of issues where things used to work with 2.0.2.9(old version of parser) but got flagged with error when moved to 9.0.4 version.

According to the XML 1.x specification, the element name specified in the <!DOCTYPE...> tag must match the root element of the instance document, not the DTD document

But at the same time, A DTD document may not even have a root element, since it is very possible to define multiple elements none of which ever can appear in the contents of another element.  Thus the requirement that the root element of the instance doc match the DTD root element cannot be a requirement of the XML spec and is in fact an unreasonable requirement and can be classified as a code defect.  Serveral bugs have been opened with XDK development on this issue (Bug 5080354 - XMLPARSER V2-904 VALIDATE ROOT ELEMENT ISSUE, Bug 5450336 - GENERATED XML PARSE ERROR WHITESPACE REQUIRED etc.)

Working your way around it..

Although the ATG team has not provided an official backport of this issue in xmlparserv2-904.zip,  a workaround exists: simply use the older version of XML parsing class archive, xmlparserv2.zip.

It is only required to make this change in jserv.properties and jserv_restrict.properties since iPayment servlet uses these configuration files.

sandbox07:web_dev> grep xmlparser $IAS_ORACLE_HOME/Apache/Jserv/etc/*.properties     
forms.properties:wrapper.classpath=/ORACLE/apps/dev/common/java/xmlparserv2-904.zip
jserv.properties:wrapper.classpath=/ORACLE/apps/dev/common/java/xmlparserv2.zip
jserv_restrict.properties:wrapper.classpath=/ORACLE/apps/dev/common/java/xmlparserv2.zip
jservSoap.properties:wrapper.classpath=/ORACLE/dev/9iAS/soap/webapps/soap/WEB-INF/lib/xmlparserv2-soap.jar
viewer4i.properties:wrapper.classpath=/ORACLE/apps/dev/common/java/xmlparserv2-904.zip
xmlsvcs.properties:wrapper.classpath=/ORACLE/apps/dev/common/java/xmlparserv2-904.zip
sandbox07:web_dev>


To be on the safe side, you can even make these modifications in the $CONTEXT_FILE so that these settings are preserved across AutoConfig sessions on the ipayment tier:

sandbox07:web_dev> grep xmlparser $CONTEXT_FILE

         <xmlparser_name oa_var="
s_xmlparserv2_name">xmlparserv2.zip</xmlparser_name>

         <xmlparser_soap oa_var="s_xmlparser_soap">/ORACLE/apps/dev/common/java/xmlparserv2-904.zip</xmlparser_soap>


         <jto_classpath oa_var="
s_jto_classpath" osd="unix">.:/ORACLE/apps/dev/common/java/jdbc111.zip:/ORACLE/apps/dev/common/java/xmlparserv2.zip:
/ORACLE/apps/dev/common/java:/ORACLE/apps/dev/common/java/apps.zip:
/usr/java/j2sdk1.4.2_07/classes:/usr/java/j2sdk1.4.2_07/lib:/usr/java/j2sdk1.4.2_07/lib/classes.zip:
/usr/java/j2sdk1.4.2_07/lib/classes.jar:/usr/java/j2sdk1.4.2_07/lib/rt.jar:/usr/java/j2sdk1.4.2_07/lib/i18n.jar:
/ORACLE/apps/dev/common/java/3rdparty/RFJavaInt.zip:</jto_classpath>

         <start_cmd oa_var="
s_jtffstart">/usr/java/j2sdk1.4.2_07/bin/jre -Xms64m -Xmx256m -classpath.:/ORACLE/apps/dev/common/java/XXARRF.jar:/ORACLE/apps/dev/common/java/jdbc111.zip:
/ORACLE/apps/dev/common/java/xmlparserv2.zip
:....
>> /ORACLE/apps/dev/common/admin/log/dev_sandbox07/jtffmctl.txt</start_cmd>

The potential way to resolution..

Given the prominence of this bug in terms of XML document handling as well as the difficulty for us of modifying product specific DTDs, perhaps the best thing to do might be for the parser team to provide a fix for the 9.0.4 XML parser logic.

In this case, the IBY - iPayment module can use the workaround suggested, and resolve the problem in 11.5.10. However, as a lot of customers in 11.5.9 and the xml parser can be upgraded to 904 per ATG suggestion and might result in the same kind of error. It is incumbent upon the ATG team to find an answer to this situation.

In the meanwhile, we can use the workaround and keep the business going.


June 30, 2007

Troubleshooting: How block corruption of Workflow tables can cause Self Service Login not to work

Preface


This troubleshooting case study talks about a scenario in which the Self service login was not working due to a weird block corruption scenario in one of the workflow tables.

The scenario was that the Self Service login page was not working for a few users in a cloned instance. Even though the forms URL was working e.g. http://dev.mycompany.com/dev60cgi/f60cgi, the self service URL http://dev.mycompany.com/OA_HTML/AppsLocalLogin.jsp was not working at all for a few users. Furthermore, the usual debugging techniques drew a blank.

The observation was baffling. While there could be many reasons for it, getting to the root cause was difficult and involved some guess work related to what 11i resources are called for when a user login is attemped. This articles outlines the troubleshooting approach.

Applies to:

Oracle Self-Service Web Applications - Version: 11.0 to 12.0.
Oracle Applications 11i, Workflow, Oracle RDBMS 9i/10g

Troubleshooting Details

The Problem:

In a cloned 11i Apps Instance, for a few users, even though the forms URL was working e.g. http://dev.mycompany.com/dev60cgi/f60cgi, the self service URL http://dev.mycompany.com/OA_HTML/AppsLocalLogin.jsp was not working. This was disconcerting since they needed to access some self service functions specifically.

The only visible message was:

"You have encountered an unexpected error. Please contact the System Administrator for assistance."

The Approach:

Firstly, the user's password was changed using FNDCPASS utility:
sandbox:dev> FNDCPASS apps/$apps_pass 0 Y system/$sys_pass USER GVERMA welcome1
Log filename : L2355077.log

Report
filename : O2355077.out

sandbox:dev> more L2355077.log
+---------------------------------------------------------------------------+
Application
Object Library: Version : 11.5.0 - Development

Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
module:

+---------------------------------------------------------------------------+

Current system time is 06-JUN-2007 11:21:16

+---------------------------------------------------------------------------+

+---------------------------------------------------------------------------+
Concurrent
request completed successfully
Current system time is 06-JUN-2007 11:21:16

+---------------------------------------------------------------------------+

However, resetting the user's application password did not work.

The DB alert log was checked. Nothing strange showed up there.

Debugging at Apache and Jserv level was turned on and apache error_log, access_log and jserv.log was monitored while replicating the issue, but that only yielded this in the access_log:
172.18.2.149 - - [06/Jun/2007:13:09:34 -0400] "GET 
/OA_HTML/AppsLocalLogout.jsp?returnUrl=%2FOA_HTML%2FAppsLocalLogin.jsp%3FcancelUrl%3D%
2FOA_HTML%2FAppsLocalLogin.jsp HTTP/1.1" 302 293
172.18.2.149 - - [06/Jun/2007:13:09:34 -0400] "GET
/OA_HTML/AppsLocalLogin.jsp?cancelUrl=/OA_HTML/AppsLocalLogin.jsp&langCode=US&username=GVERMA
HTTP/1.1" 200 6910
172.18.2.149 - - [06/Jun/2007:13:09:41 -0400] "POST /OA_HTML/fndvald.jsp HTTP/1.1" 302 260
172.18.2.149 - - [06/Jun/2007:13:09:42 -0400] "GET /OA_HTML/OA.jsp?OAFunc=OAHOMEPAGE HTTP/1.1" 200 1430
172.18.2.149 - - [06/Jun/2007:13:13:34-0400] "GET /OA_HTML/fndvald.jsp HTTP/1.1" 200 190
172.18.2.149 - - [06/Jun/2007:13:31:09 -0400] "GET /OA_HTML/AppsLocalLogin.jsp HTTP/1.1" 200 6647

It was as if the flow of control was being snapped totally after the login page, without any further activity at the OA Framework level at all.

Since forms URL was working and the full set of responsibilities was visible, one of the possible resources which was being accessed could have been the workflow tables for tying up responsbilities with workflow roles.

Based on this, a quick check to Workflow related tables revealed this error:

SQL> select count(1) from WF_LOCAL_USER_ROLES;

select count(1) from WF_LOCAL_USER_ROLES

*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 231, block # 235273)
ORA-01110:
data file 1254:
'/ORACLE/data/datafiles/dev/data11/aol_data17.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
So it seemed that either Production instance had part of APPLSYS.WF_LOCAL_USER_ROLES in NOLOGGING mode. The issue was rectified in Production by using

SQL> ALTER TABLE WF_LOCAL_USER_ROLES MODIFY PARTITION <partition_name> LOGGING;


One of the options was to re-import the APPLSYS.WF_LOCAL_USER_ROLES from Production, which would have involved a downtime.

A better analysis would be to find out the extent of damage done to the table. For this, the DBMS_REPAIR package would be useful. Reporting not only indicates what is wrong with a block, but also identifies the associated repair directive.

The entire list of options include:

block corruption list of options.gif:

There are two levels of block corruption: Hard and Soft. Soft corrupted blocks can be set to be ignored while reading the table's contents.

sandbox:dev> sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.7.0 - Production on Wed Jun 6 14:21:55 2007
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production

SQL> show user
USER is "SYS"


Create the necessary aixiliary tables for identifying corrupt blocks in the table in question:

SQL> exec DBMS_REPAIR.ADMIN_TABLES (
TABLE_NAME => 'REPAIR_TABLE',
TABLE_TYPE => dbms_repair.repair_table,
ACTION => dbms_repair.create_action,
TABLESPACE => 'USERS');

PL/SQL procedure successfully completed.

SQL> desc repair_table
Name Null? Type
--------------------------------------    -------- ------------
OBJECT_ID                                 NOT NULL NUMBER
TABLESPACE_ID                             NOT NULL NUMBER
RELATIVE_FILE_ID                          NOT NULL NUMBER
BLOCK_ID                                  NOT NULL NUMBER
CORRUPT_TYPE                              NOT NULL NUMBER
SCHEMA_NAME                               NOT NULL VARCHAR2(30)
OBJECT_NAME                               NOT NULL VARCHAR2(30)
BASEOBJECT_NAME                                    VARCHAR2(30)
PARTITION_NAME                                     VARCHAR2(30)
CORRUPT_DESCRIPTION                                VARCHAR2(2000)
REPAIR_DESCRIPTION                                 VARCHAR2(200)
MARKED_CORRUPT                            NOT NULL VARCHAR2(10)
CHECK_TIMESTAMP                           NOT NULL DATE
FIX_TIMESTAMP                                      DATE
REFORMAT_TIMESTAMP                                 DATE


Check the specified objects and populates the repair table with information about corruptions and repair directives.Validation consists of block checking all blocks in the object. 

SQL> var c number

SQL> exec dbms_repair.check_object(
schema_name=>'APPLSYS',
object_name=>'WF_LOCAL_USER_ROLES',
corrupt_count=>:c);

PL/SQL procedure successfully completed.


See the number of corrupted blocks:

SQL> select :c from dual;

:C
----------
1934


Check the level of corruption -- either Soft of Hard:

SQL> l
1 select distinct SCHEMA_NAME, OBJECT_NAME, CORRUPT_TYPE, PARTITION_NAME, repair_DESCRIPTION, MARKED_CORRUPT
2* from repair_table
SQL> /

SCHEMA_NAM OBJECT_NAME CORRUPT_TYPE PARTITION_NAME REPAIR_DESCRIPTION MARKED_COR
---------- ------------------------------ ------------ ------------------------------ ------------------------------ ----------
APPLSYS WF_LOCAL_USER_ROLES 6148 HZ_PARTY mark block software corrupt TRUE

SQL>


This procedure fixes the corrupt blocks in specified objects based on information in the repair table that was previously generated by the check_object procedure.

Prior to effecting any change to a block, the block is checked to ensure the block is still corrupt. Corrupt blocks are repaired by marking the block software corrupt. When a repair is effected, the associated row in the repair table is updated with a fix timestamp.

SQL> exec DBMS_REPAIR.FIX_CORRUPT_BLOCKS (
SCHEMA_NAME => 'APPLSYS',
OBJECT_NAME=> 'WF_LOCAL_USER_ROLES', 
OBJECT_TYPE => dbms_repair.table_object, 
REPAIR_TABLE_NAME => 'REPAIR_TABLE', 
FIX_COUNT=> :c);
PL/SQL procedure successfully completed.


Enable the skipping of corrupt blocks during index and table scans of the specified object. When the object is a table, skip applies to the table and its indexes.

SQL> exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS ( 
SCHEMA_NAME=>'applsys',
OBJECT_NAME => 'WF_LOCAL_USER_ROLES',
OBJECT_TYPE => dbms_repair.table_object,
FLAGS => dbms_repair.skip_flag);

PL/SQL procedure successfully completed.


The corrupt blocks get skipped now:

SQL> select count(1) from applsys.WF_LOCAL_USER_ROLES;

COUNT(1)
----------
465748


At this stage, the DB verify utility can also be used to see the corrupted blocks' information:

sandbox:dev> dbv file=/ORACLE/data/datafiles/dev/data11/aol_data17.dbf blocksize=8192
....
....

DBV-00200: Block, dba 969120643, already marked corrupted
DBV-00200: Block, dba 969120644, already marked corrupted
DBV-00200: Block, dba 969120645, already marked corrupted
DBV-00200: Block, dba 969120646, already marked corrupted
DBV-00200: Block, dba 969120647, already marked corrupted
DBV-00200: Block, dba 969120648, already marked corrupted

DBVERIFY - Verification complete

Total Pages Examined : 256000
Total Pages Processed (Data) : 79791
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 32514
Total Pages Failing (Index): 0
Total Pages Processed (Other): 137041
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 6654
Total Pages Marked Corrupt : 1934
Total Pages Influx : 0
Highest block SCN : 6045645666279 (1407.2626680807)

sandbox:dev> dbv file=/ORACLE/data/datafiles/dev/data11/aol_data17.dbf blocksize=8192 2>&1 | grep DBV-00200 | wc -l
1934
sandbox:dev>

The Effect:

As a result of this workaround, the affected users were able to login through the self service applications URL and also able to see their assigned responsbilities.

Additionally, the apache access log showed the following depicting that application logic was flowing as intended:

172.18.2.149 - - [06/Jun/2007:14:16:37 -0400] "POST /OA_HTML/fndvald.jsp HTTP/1.1" 302 260
172.18.2.149 - - [06/Jun/2007:14:16:40 -0400] "GET /OA_HTML/OA.jsp?OAFunc=OAHOMEPAGE HTTP/1.1" 200 21284
172.18.2.149 - - [06/Jun/2007:14:16:41 -0400] "GET /OA_HTML/cabo/styles/cache/oracle-desktop-custom-2_2_22-en-ie-6-windows.css HTTP/1.1" 200 33224
172.18.2.149 - - [06/Jun/2007:14:16:41 -0400] "GET /OA_HTML/cabo/oajsLibs/oafcore510CU3.js HTTP/1.1" 200 25771
172.18.2.149 - - [06/Jun/2007:14:16:41 -0400] "GET /OA_MEDIA/FNDHOMEBRAND_MED.gif HTTP/1.1" 200 4553
172.18.2.149 - - [06/Jun/2007:14:16:41 -0400] "GET /OA_HTML/cabo/images/warnl.gif HTTP/1.1" 200 977
172.18.2.149 - - [06/Jun/2007:14:16:42 -0400] "GET /OA_HTML/blank.html HTTP/1.1" 200 98
172.18.2.149 - - [06/Jun/2007:14:16:42 -0400] "GET /OA_HTML/blank.html HTTP/1.1" 200 98
172.18.2.149 - - [06/Jun/2007:14:16:42 -0400] "GET /OA_HTML/blank.html HTTP/1.1" 200 98
172.18.2.149 - - [06/Jun/2007:14:16:42 -0400] "GET /OA_HTML/cabo/images/cache/en/bCustomAppsNavLinkgPPb.gif H1.1" 200 538
172.18.2.149 - - [06/Jun/2007:14:16:42 -0400] "GET /OA_MEDIA/fwkhp_folder.gif HTTP/1.1" 200 639
172.18.2.149 - - [06/Jun/2007:14:16:42 -0400] "GET /OA_HTML/cabo/images/cache/en/bCustomLinkgPLN.gif HTTP/1.1" 200 528
172.18.2.149 - - [06/Jun/2007:14:30:11 -0400] "GET /OA_HTML/AppsLocalLogin.jsp HTTP/1.1" 200 6647
172.18.2.149 - - [06/Jun/2007:14:30:19 -0400] "GET /OA_HTML/OA.jsp?OAFunc=OAHOMEPAGE&akRegionApplicationId=0&navRespId=50958&navRespAppId=660&navSecGrpId=0&transactionid=666561749&oapc=3 HTTP/1.1" 200 23405
172.18.2.149 - - [06/Jun/2007:14:30:19 -0400] "GET /OA_MEDIA/fwkhp_sswafunc.gif HTTP/1.1" 200 659
172.18.2.149 - - [06/Jun/2007:14:31:45 -0400] "GET /OA_HTML/OALogout.jsp?menu=Y HTTP/1.1" 302 270
172.18.2.149 - - [06/Jun/2007:14:31:45 -0400] "GET /oa_servlets/oracle.apps.fnd.sso.AppsLogout HTTP/1.1" 302 308
172.18.2.149 - - [06/Jun/2007:14:31:45 -0400] "GET /OA_HTML/AppsLocalLogout.jsp?returnUrl=%2FOA_HTML%2FAppsLocalLogin.jsp%3FcancelUrl%3D%2FOA_HTML%2FAppsLocalLogin.jsp HTTP/1.1" 302 293
172.18.2.149 - - [06/Jun/2007:14:31:45 -0400] "GET /OA_HTML/AppsLocalLogin.jsp?cancelUrl=/OA_HTML/AppsLocalLogin.jsp&langCode=US&username=GVERMA HTTP/1.1" 200 6916

The Learning

  • The regular debugging mechanisms may not be helpful in troubleshooting the issue at hand and one may have to rely on some basic checks
  • Sometimes simple things like block corruption to basic workflow tables can cause critical user functions to not work
  • Oracle supplied packages like DBMS_REPAIR may be used to analyze and fix such block corruptions, especially when it is acceptable to skip soft corrupted blocks

About June 2007

This page contains all entries posted to Experiments from the Field..Based on True Stories in June 2007. They are listed from oldest to newest.

May 2007 is the previous archive.

August 2007 is the next archive.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type and Oracle