OAM Generated Query To Deactive User Workflow [Includes (!(obwfinstanceid=<string>)) Filter] Taking Excessive Time To Execute In OID 10g (Doc ID 1080545.1)

Last updated on MARCH 08, 2017

Applies to:

Oracle Internet Directory - Version 10.1.2 to 10.1.4 [Release 10gR2 to 10gR3]
Information in this document applies to any platform.

Symptoms

Oracle Access Manager (OAM) integrated with Oracle Internet Directory (OID) 10g, i.e., 10.1.4.3.0, or 11g.

OID has been well tuned as per <Document 458703.1> and <Document 558040.1> in memory filters have been applied.

Experiencing performance / slowness problems with OAM generated searches to deactive user workflow.

Upon further examination of OID debugged logs, searches including a filter of (!(obwfinstanceid=<string>)) are excessively slow.

The problem can be reproduce from command line ldapsearch.  For example, the following search:

ldapsearch -h <oid host> -p <oid port> -D "cn=orcladmin" -w <password> -b "obcontainerId=workflowInstances,o=Oblix,dc=mycompany,dc=com" -s one
"(&(objectclass=OblixWorkflowInstance)(&(|(obwfstatus=2)(obwfstatus=3)(obwfstatus=4)(obwfstatus=5)(obwfstatus=6)(obwfstatus=7)(obwfstatus=10)(obwfstatus=9))(obtargetdn=*cn=myuserworkflowid@mydomain.com,cn=users,dc=mycompany,dc=com)(!(obwfinstanceid=0a32fa1620fe010000000CCF000003))))" dn


Results in the following OID debugged log (level 2097153) excerpt:

BEGIN
2010/02/22:15:00:10 * ServerWorker (REG):8
ConnID:276 * mesgID:2 * OpID:1 * OpName:search
ConnIP:<IP address> ConnDN: cn=orcladmin
orclinmemFilter:
Orig Filter=(&(objectclass=oblixworkflowinstance)(&(|(obwfstatus=2)(obwfstatus=3)(obwfstatus=4)(obwfstatus=5)(obwfstatus=6)(obwfstatus=7)(obwfstatus=10)(obwfstatus=9))(obtargetdn=*cn=n00005@,cn=users,dc=mycompany,)(!(obwfinstanceid=0a32fa1620fe010000000ccf000003))))
New filter=(&(|(obwfstatus=2)(obwfstatus=3)(obwfstatus=4)(obwfstatus=5)(obwfstatus=6)(obwfstatus=7)(obwfstatus=10)(obwfstatus=9))(obtargetdn=*cn=myuserworkflowid@mydomain.com,cn=users,dc=mycompany,dc=com)(!(obwfinstanceid=0a32fa1620fe010000000ccf000003)))
15:00:15 *
BASEDN = "obcontainerId=workflowInstances,o=Oblix,dc=mycompany,"
SCOPE = "1"
FILTER = "(&(objectclass=oblixworkflowinstance)(&(|(obwfstatus=2)(obwfstatus=3)(obwfstatus=4)(obwfstatus=5)(o"
#ATTRS = "1"

15:00:15 * EVENT "PRVGRP CLS" time : 15 micro sec
15:00:15 * EVENT "ACPGRP CLS" time : 11 micro sec
15:00:15 * EVENT "DB Fetch " time : 5635616 micro sec                  ---> ~5.6 secs
15:00:15 * EVENT "Ber flush " time : 45 micro sec
15:00:15 * TOTAL "Operation" time : 5637990 micro sec
15:00:15 * INFO : gsleswrASndResult2 RESULT = 0 nentries=0
END


The same query without !(obwfinstanceid=<string>) filter runs without delays.

<workflow_instance_id><workflow_instance_id>For the above search, adding (!(obwfinstanceid=0a32fa1620fe010000000CCF000003)) as an in memory filter in OID resolves the problem, but that is not an option because this query is internally generated by OAM for each deactivate user request, hence obwfinstanceid value is different for each request.

Changes

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms