I recently worked on a PeopleTools 8.50 system in production for the first time and was able to make use of the new Oracle specific instrumentation in PeopleTools.
PeopleTools now uses the DBMS_APPLICATION_INFO package to set module and action session attributes. This data is then copied into the Active Session History (ASH).
- Within the PIA, the application server sets module and action to the name of the current component and page within the current components
- For Integration Broker messages they are set to service and queue name.
- For Application Engine processes the module is set to PSAE and the action is set to the program name.
The first two of these three changes are very welcome, but I think the instrumentation of Application Engine is inadequate. I have a better suggestion which can be implemented with a database trigger.
In Oracle Enterprise Manager, I can see the top SQL statements and group them by Module and Action, so I now can see which components are consuming the most time. I can also produce an AWR for a specific component or page within a component.
OEM Screenshot of a PeopleTools 8.50 system.
I can query the ASH data to profile which pages consume the most time on the database.MODULE ACTION ASH_SECS ---------------------- ---------------------- ---------- RECV_PO PO_PICK_ORDERS 240 XXX_REQ_INQUIRY xyzzy 170 XXX_REQ_WRKLST XXX_REQ_WORKLIST 170 VCHR_EXPRESS VCHR_LINE_RECV_WRK 170 XXX_FIN_WORKLIST XXX_FIN_WORKLIST 160 VCHR_EXPRESS VCHR_EXPRESS1 160 PURCHASE_ORDER_EXP PO_EXPRESS 140 XXX_HOME_PAGE XXX_HOME_PAGE 140 RECV_PO RECV_WPO 130 VCHR_EXPRESS xyzzy 120 XXX_PUR_WORKLIST XXX_PUR_WRKLST 120 CDM_RPT CDM_RPT_INDEX 100 … ---------- sum 2820
(Updated 19.11.2010) For some components the action is set to ‘xyzzy’. This seems to be a default value set when the component is opened, but before any of the pages are processed. Therefore, it refers to activity in the search dialogue, including processing of :
- look ups to obtain values for search criteria
- SQL issued during SearchSave PeopleCode to validate the search criteria.
- the query on the Component Search record
Now, I want to look at what happens in batch processes. In previous versions of PeopleTools, the module was set to the same value as the program name, and action was left blank. This is not particularly helpful. In 8.50 module is set to PSAE for Application Engine processes, and action is set to the name of the program.MODULE ACTION ASH_SECS ---------------------------- ------------------------- ---------- PSNVS.EXE 10220 PSAE AP_PSTPYMNT 3100 PSAE AP_MATCH 2690 sqrw.exe 1770 PSAE PO_RECVACCR 1390 PSQRYSRV.exe 880 PSAE FS_STREAMLN 870 PSPUBDSP.exe 850 PSBRKDSP.exe 740 PSPRCSRV.exe 690 PSSUBDSP.exe 620
This is certainly better than in previous versions. However, its weakness is that if I have multiple concurrent instances of the same process, although I could tell that the ASH data had come from different sessions, I would not be determine which came from which session. This situation could occur, for example, in Global Payroll if ‘streaming’ was configured, where the payroll calculation can be broken into many processes that run concurrently.
In another blog posting, Using Oracle Enterprise Manager (Grid Control) with PeopleSoft, I proposed a trigger that writes name of the PeopleSoft process name to module, and the Process Instance number into action. Furthermore, this trigger works for all processes scheduled by the Process Scheduler. I think that that trigger is still useful in PeopleTools 8.50.
Subscribe to: Posts (Atom)