Saturday, November 17, 2007

Oracle E-Business Suite Security-- PART1: Removing Credentials from a Cloned EBS Production Database

Removing Credentials from a Cloned EBS Production Database:

When cloning a production database instance of the Oracle E-Business Suite (EBS), all production account credentials should be cleared in the cloned copy of the database. This will prevent retrieval of credentials that could be used to compromise of the integrity of the production database.

The following sequence of steps will remove production account credentials from the cloned copy of the production database and reestablish new credentials in the cloned copy. The new accounts in the cloned copy will all have the password "clone".
  1. Step 1 - Clear all credentials

  2. Step 2 - Re-establish basic accounts (for runtime: SYS,SYSTEM,APPLSYSPUB,APPLSYS,APPS + GUEST,SYSADMIN)

  3. Step 3 - Prepare scripts for setting additional passwords

  4. Step 4 - Assign new passwords to all database users not managed with EBS

  5. Step 5 - Assign new passwords to all database users managed with EBS

  6. Optional addition steps

Steps 1 - 4 are run on the database server running as oracle, using sqlplus connected as SYS or APPS; step 5 is run as applmgr on an application tier and uses the FNDCPASS command line utility.

This means that steps 1-4 can be performed the first time the cloned database is started, i.e. before it is made accessible to the network via the database TNS listener.

Step 5 is not time critical and can be performed when access to the cloned system for patch purposes is required.

All application tier processes must be stopped during this procedure.

Step 1 - Clear All Credentials

To clear all credentials in a cloned copy of a production database you must establish an shell environment with sufficient Oracle settings to run sqlplus via the BEQ driver.
The full environment could be established by your cloning process, the minimal environment is shown below

oracle$ export ORACLE_SID=
oracle$ export ORACLE_HOME=
oracle$ export PATH=$ORACLE_HOME/bin
oracle$ unset TWO_TASK

oracle$ sqlplus '/ as sysdba'

To clear all credentials in the cloned copy of a production database, run the following 3 SQL statements:

REM --- step1.sql
spool step1.lst

REM Start the database clone for the first time
startup restrict

REM Clear all production credentials from the cloned database

update SYS.user$ set
password = translate(password,'0123456789ABCDEF','0000000000000000')
where type#=1 and length(password) = 16
/
update APPLSYS.FND_ORACLE_USERID set
ENCRYPTED_ORACLE_PASSWORD='INVALID'
/

update APPLSYS.FND_USER set
ENCRYPTED_FOUNDATION_PASSWORD='INVALID',
ENCRYPTED_USER_PASSWORD='INVALID'
/
commit;

REM Shutdown the database
shutdown
exit

Now the cloned copy of the database is free from production credentials. The database was shut down in order for the unusual way of clearing the database user (schema) passwords to take effect.

Start the cloned copy of the database in preparation for steps 2, 3 and 4:

oracle$ echo startup | sqlplus '/ as sysdba' 

Step 2 - Re-establish Bootstrap Credentials

The database at the moment has no credentials, so you log on as SYS with operation system authentication.
This will allow you to establish new credentials.

oracle$ sqlplus '/ as sysdba'

The script below has comments explaining what is done in step 2.

REM --- step2.sql
spool step2.lst

REM Set a new password for a few initial database users

alter user SYS identified by CLONE;
alter user SYSTEM identified by CLONE;
alter user APPLSYSPUB identified by CLONE;
alter user APPLSYS identified by CLONE;
alter user APPS identified by CLONE;

REM Provide boot-strap info for FNDCPASS...
update APPLSYS.FND_ORACLE_USERID set
ENCRYPTED_ORACLE_PASSWORD='CLONE'
where ORACLE_USERNAME = 'APPLSYSPUB'
/

update APPLSYS.FND_ORACLE_USERID set
ENCRYPTED_ORACLE_PASSWORD='ZG' ||
'B27F16B88242CE980EF07605EF528F9391899B09552FD89FD' ||
'FF43E4DDFCE3972322A41FBB4DDC26DDA46A446582307D412'
where ORACLE_USERNAME = 'APPLSYS'
/

update APPLSYS.FND_ORACLE_USERID set
ENCRYPTED_ORACLE_PASSWORD='ZG' ||
'6CC0BB082FF7E0078859960E852F8D123C487C024C825C0F9' ||
'B1D0863422026EA41A6B2B5702E2299B4AC19E6C1C23333F0'
where ORACLE_USERNAME = 'APPS'
/
commit;

REM We run as SYS, now connect as APPS to run some plsql
connect APPS/CLONE

REM Every EBS database needs a GUEST user
select APPS.fnd_web_sec.change_guest_password( 'CLONE', 'CLONE' ) "RES"
from dual;
commit;

REM Set GUEST credential in site level profile option
set serveroutput on
declare
dummy boolean;
begin
dummy := APPS.FND_PROFILE.SAVE('GUEST_USER_PWD', 'GUEST/CLONE', 'SITE');
if not dummy then
dbms_output.put_line( 'Error setting GUEST_USER_PWD profile' );
end if;
end;
/
commit;

REM One more time for luck (avoid session caching of profiles)
connect APPS/CLONE

REM Set SYSADMIN password
select APPS.fnd_web_sec.change_password('SYSADMIN','CLONE') "RES"
from dual;
commit;
exit


The expected output from step 2 is as follows:

User altered.
User altered.
User altered.
User altered.
User altered.
1 row updated.
1 row updated.
1 row updated.
Commit complete.
Connected.
RES
------
Y Commit complete. PL/SQL procedure successfully completed. Commit complete. Connected. RES ------ Y Commit complete.
It is important to verify that no errors are reported and that the 2 returned RES values are both Y (for success).


Now the database should be able to run EBS as we have a set of bootstrap runtime users. (You will need to run AutoConfig to let the application know of the new passwords and other changes required for the cloned environment to actually run the application tier services. Don't run AutoConfig yet, we'll do that in Step 5.)

Step 3 - Prepare Scripts for Setting Additional Passwords

I this step we prepare to assign passwords to the other database users that were disabled in step 1. We use dynamically generated scripts to do this as the set of database users may be different between instances of EBS.

oracle$ sqlplus '/ as sysdba' 

The comments in script below explains what is done in step 3.

REM --- step3.sql

REM Prepare SQL and SHELL scripts to set more passwords later
spool step3.lst

REM Generate a sql script to set password for db users not managed with EBS

select 'alter user "'|| USERNAME ||'" identified by CLONE; '
from SYS.DBA_USERS
where USERNAME not in (select ORACLE_USERNAME from APPLSYS.FND_ORACLE_USERID)
and USERNAME not in ('SYS','SYSTEM');

REM Generate a shell script to set password for all base product schemas

select 'FNDCPASS apps/clone 0 Y system/clone ALLORACLE clone' from dual;

REM Generate a shell script to set password for non-EBS db users managed with EBS

select 'FNDCPASS apps/clone 0 Y system/clone ORACLE "' ||
replace(ORACLE_USERNAME,'$','\$') || '" clone'
from APPLSYS.FND_ORACLE_USERID
where READ_ONLY_FLAG = 'X'
and ORACLE_USERNAME in (select USERNAME from SYS.DBA_USERS);

REM Generate a shell script to set password for APPS/APPLSYS/APPM_mrc db users

select 'FNDCPASS apps/clone 0 Y system/clone SYSTEM APPLSYS clone' from dual;

REM Generate scripts for steps 4 & 5
spool off

HOST grep '^alter user ' step3.lst > dbusers4.sql
HOST grep '^FNDCPASS ' step3.lst > dbusers5.sh

exit

The script above calls grep to extract 2 sets of lines from the step3.lst spool file.

If you are running sqlplus on Windows, the shell redirection will fail when attempted from within sqlplus. You can perform this separation step by going to a command prompt (using the HOST command from sqlplus). If you have your MKS environment set, then you can use the grep syntax or alternatively you can use the below syntax from a cmd.exe prompt.

# alternative commands for extracting sql and shell commands from step3.lst
C:\ORACLE\Clone> findstr "^alter user " step3.lst > dbusers4.sql
C:\ORACLE\Clone> findstr "^FNDCPASS " step3.lst > dbusers5.cmd

Step 4 - Assign New Passwords to All Schemas Not Managed with EBS

This step runs the SQL script - dbusers4.sql - generated in step 3.

Sample content of dbusers4.sql listed below for illustration purposes only, you must run the one you generated on your system.


NOTE: dbusers4.sql example only!
alter user "OLAPSYS" identified by CLONE;
...
alter user "MDSYS" identified by CLONE;
alter user "ORDPLUGINS" identified by CLONE;
alter user "ORDSYS" identified by CLONE;
alter user "DBSNMP" identified by CLONE;
alter user "OUTLN" identified by CLONE;
alter user "AD_MONITOR" identified by CLONE;
alter user "EM_MONITOR" identified by CLONE;

Prior to running your script, you should review the contents for "obvious errors", this is good advice for any auto-generated scripts.


oracle$ sqlplus "/ as sysdba"


Now run the dbusers4.sql file

SQL> spool step4.lst
SQL> start dbusers4.sql
SQL> exit


The output should be a list of "User altered." lines - no error messages (ORA-nnnnn) should appear.

The database is currently running, shut it down and restart it.
To ensure that the application tier code can access the database for the 5th step you must also ensure that the database TNS-listener service is running.

oracle$ echo shutdown | sqlplus "/ as sysdba"
oracle$ echo startup | sqlplus "/ as sysdba"
oracle$ lsnrctl start

Step 5 - Assign New Passwords to All Schemas Managed with EBS

This step uses the FNDCPASS command to set the passwords for all the managed schemas and all the base product schemas. FNDCPASS must be run from an application tier node.

You need to copy the dbusers5.sh script from the working directory used by oracle in step 3.
As with any generated scripts that you run on your system, you should review the contents of the file before running it. Note for Windows users: In the unlikely event that any of the usernames contain the dollar sign "$" it has been escaped by prefixing it by a backslash "\"; on windows the backslash should be removed.

To run FNDCPASS you also need a number of environment variables set, at a minimum ensure that

  • FNDCPASS is on the shell's search PATH.

  • ORACLE_HOME points to the tools ORACLE_HOME

  • the TWO_TASK variable is set to a value that can be resolved via the $TNS_ADMIN/tnsnames.ora file to access the cloned copy of the database.

# Verify that the Oracle client environment is set to correct database
applmgr$ sqlplus apps/clone
sqlplus> select SYSDATE,NAME from v\$DATABASE;
SYSDATE NAME
--------- ---------
25-JUL-07 PRD12

applmgr$ mkdir ~/s5 ; cd ~/s5 # create new directory to hold output files
applmgr$ sh dbusers5.sh # Run the FNDCPASS shell script

Sample content of a dbusers5.sh file is listed below for illustration purposes only, run the one you generated on your system.

NOTE: dbusers5.sh example only!
   FNDCPASS apps/clone 0 Y system/clone ALLORACLE clone
FNDCPASS apps/clone 0 Y system/clone ORACLE "OWAPUB" clone
FNDCPASS apps/clone 0 Y system/clone ORACLE "ODM" clone
FNDCPASS apps/clone 0 Y system/clone ORACLE "CTXSYS" clone
FNDCPASS apps/clone 0 Y system/clone SYSTEM APPLSYS clone

Each run of FNDCPASS will generate output on the terminal and create a logfile in the current working directory, you should review these log files (example L2763902.log) for errors.

NOTE: If your version of FNDCPASS does not support the ALLORACLE mode, see Q5 in the Discussion section below.


To verify that you have assigned passwords to all the database users, run the following query and ensure that it does not return any rows.

SQL> select USERNAME,PASSWORD from DBA_USERS where PASSWORD='0000000000000000';


This concludes the clearing of account credentials from a cloned database - and the re-establishment of credentials such that the cloned database can be used for runtime and patch testing.

Additional Steps

What remains to be done is to set new passwords for additional applications users (fnd_users) or the creation of new test users, depending on what you need the cloned system for.
Changing passwords for applications users can be done using the Define User form (logged on as SYSADMIN/CLONE) or by calling FNDCPASS with the below syntax from an applmgr applications shell environment.

applmgr$ FNDCPASS apps/clone 0 Y system/clone USER  

Running AutoConfig

Before you can actually run the cloned EBS system, a number of other configuration items such as system profile options must most likely be changed for the cloned environment. Items to change typically include

  • IP addresses, hostnames and port numbers

  • Profiles containing hostnames and port numbers

    • Web interface URLs

    • Hostnames of external services (mail, print, SSO)

The cloning notes - listed in the References section below - will provide you with information on how to run AutoConfig.

AutoConfig must be run on all tiers of the cloned system to propagate password changes and other changed settings into config files.

Prior to running AutoConfig ensure that the AutoConfig CONTEXT file contains the new GUEST password and the new password for APPLSYSPUB.

Password for

A/C Variable

New Value

APPLSYSPUB

s_gwyuid_pass

CLONE

GUEST

s_guest_pass

CLONE





Oracle 10g wait events

NameWait ClassP1P2P3
alter rbs offlineAdministrative


alter system set dispatcherAdministrativewaited

AQ Deallocate WaitConfiguration


AQ Proxy Cleanup WaitIdle


ARCH random i/oSystem I/O


ARCH sequential i/oSystem I/O


ARCH wait for archivelog lockOther


ARCH wait for flow-controlNetwork


ARCH wait for net re-connectNetwork


ARCH wait for netserver detachNetwork


ARCH wait for netserver init 1Network


ARCH wait for netserver init 2Network


ARCH wait for netserver startNetwork


ARCH wait for pending I/OsSystem I/O


ARCH wait for process death 1Other


ARCH wait for process death 2Other


ARCH wait for process death 3Other


ARCH wait for process death 4Other


ARCH wait for process death 5Other


ARCH wait for process start 1Other


ARCH wait for process start 2Other


ARCH wait for process start 3Other


ARCH wait for process start 4Other


ARCH wait on ATTACHNetwork


ARCH wait on c/f tx acquire 1Other


ARCH wait on c/f tx acquire 2Other


ARCH wait on DETACHNetwork


ARCH wait on SENDREQNetwork


ASM background runningOther


ASM background startingOther


ASM background timerIdle


ASM db client existsOther


ASM mount : wait for heartbeatAdministrative


ASM PST query : wait for [PM][grp][0] grantCluster


Backup: sbtbackupAdministrative


Backup: sbtcloseAdministrative


Backup: sbtclose2Administrative


Backup: sbtcommandAdministrative


Backup: sbtendAdministrative


Backup: sbterrorAdministrative


Backup: sbtinfoAdministrative


Backup: sbtinfo2Administrative


Backup: sbtinitAdministrative


Backup: sbtinit2Administrative


Backup: sbtopenAdministrative


Backup: sbtpcbackupAdministrative


Backup: sbtpccancelAdministrative


Backup: sbtpccommitAdministrative


Backup: sbtpcendAdministrative


Backup: sbtpcquerybackupAdministrative


Backup: sbtpcqueryrestoreAdministrative


Backup: sbtpcrestoreAdministrative


Backup: sbtpcstartAdministrative


Backup: sbtpcstatusAdministrative


Backup: sbtpcvalidateAdministrative


Backup: sbtreadAdministrative


Backup: sbtread2Administrative


Backup: sbtremoveAdministrative


Backup: sbtremove2Administrative


Backup: sbtrestoreAdministrative


Backup: sbtwriteAdministrative


Backup: sbtwrite2Administrative


BFILE check if existsOther


BFILE check if openOther


BFILE closureOther


BFILE get lengthOther


BFILE get name objectOther


BFILE get path objectOther


BFILE internal seekOther


BFILE openOther


BFILE readUser I/O


block change tracking buffer spaceOther


buffer busyOthergroup#obj#block#
buffer busy waitsConcurrencyfile#block#class#
buffer deadlockOtherdbaclass*10+modeflag
buffer dirty disabledOthergroup#

buffer exterminateOtherfile#block#buf_ptr
buffer freelistbusyOthergroup#obj#block#
buffer invalidation waitOthergroup#obj#block#
buffer latchOtherlatch addrchain#
buffer pool resizeAdministrativebuffer pool idcurrent sizenew size
buffer read retryUser I/Ofile#block#
buffer rememberlist busyOthergroup#obj#block#
buffer resizeOther


buffer write waitOthergroup#obj#block#
buffer writeList fullOthergroup#obj#block#
CGS skgxn join retryOtherretry count

CGS wait for IPC msgOther


change tracking file parallel writeOtherblocksrequests
change tracking file synchronous readOtherblock#blocks
change tracking file synchronous writeOtherblock#blocks
check CPU wait timesOther


checkpoint advancedOthergroup#

checkpoint completedConfiguration


class slave waitOtherslave id

Cluster stablization waitOther


Cluster Suspension waitOther


contacting SCN server or SCN lock masterCluster


control file heartbeatOther


control file parallel writeSystem I/Ofilesblock#requests
control file sequential readSystem I/Ofile#block#blocks
control file single writeSystem I/Ofile#block#blocks
cr request retryOtherfile#block#
Data Guard broker: wait upon ORA-12850 errorOtherwaiting for retrying the query to mask ORA-12850 error

db file parallel readUser I/Ofilesblocksrequests
db file parallel writeSystem I/Orequestsinterrupttimeout
db file scattered readUser I/Ofile#block#blocks
db file sequential readUser I/Ofile#block#blocks
db file single writeUser I/Ofile#block#blocks
DBFG waiting for replyOther


DBMS_LDAP: LDAP operation Other


debugger commandOther


dedicated server timerNetworkwait event

DFS db file lockOtherfile#

DFS lock handleOthertype|modeid1id2
DIAG dummy waitOther


direct path readUser I/Ofile numberfirst dbablock cnt
direct path read tempUser I/Ofile numberfirst dbablock cnt
direct path writeUser I/Ofile numberfirst dbablock cnt
direct path write tempUser I/Ofile numberfirst dbablock cnt
dispatcher listen timerNetworksleep time

dispatcher shutdownOtherwaited

dispatcher timerIdlesleep time

DLM lock cancelOtherle

DLM lock cvt SOthergroupobj#block#
DLM lock cvt XOthergroupobj#block#
DLM lock escOthergroupobj#block#
DLM lock esc XOthergroupobj#block#
DLM lock openOthergroupobj#block#
DLM lock open SOthergroupobj#block#
DLM lock open XOthergroupobj#block#
DLM recovery lock convertOthergroupobj#block#
DLM recovery lock openOthergroupobj#block#
dma prepare busyOthergroupobj#block#
dupl. cluster keyOtherdba

enq: AD - allocate AUOthername|modegroup and disk numberAU number
enq: AD - deallocate AUOthername|modegroup and disk numberAU number
enq: AF - task serializationOthername|modetask id0
enq: AG - contentionOthername|modeworkspace #generation
enq: AO - contentionOthername|modeworkspace #object #
enq: AS - contentionOthername|mode00
enq: AT - contentionOthername|mode00
enq: AW - AW generation lockOthername|modeoperationworkspace #
enq: AW - AW state lockOthername|modeoperationworkspace #
enq: AW - AW$ table lockOthername|modeoperationworkspace #
enq: AW - user access for AWOthername|modeoperationworkspace #
enq: BR - file shrinkOthername|modeoperationfile #
enq: BR - proxy-copyOthername|modeoperationfile #
enq: CF - contentionOthername|mode0operation
enq: CI - contentionOthername|modeopcodetype
enq: CL - compare labelsOthername|modeobject #0
enq: CL - drop labelOthername|modeobject #0
enq: CM - gateOthername|modedisk group #type
enq: CM - instanceOthername|modedisk group #type
enq: CT - change stream ownershipOthername|modeoperationoperation parm
enq: CT - CTWR process start/stopOthername|modeoperationoperation parm
enq: CT - global space managementOthername|modeoperationoperation parm
enq: CT - local space managementOthername|modeoperationoperation parm
enq: CT - readingOthername|modeoperationoperation parm
enq: CT - stateOthername|modeoperationoperation parm
enq: CT - state change gate 1Othername|modeoperationoperation parm
enq: CT - state change gate 2Othername|modeoperationoperation parm
enq: CU - contentionOthername|modehandlehandle
enq: DB - contentionAdministrativename|modeEnqMode0
enq: DD - contentionOthername|modedisk grouptype
enq: DF - contentionOthername|mode0file #
enq: DG - contentionOthername|modedisk grouptype
enq: DL - contentionOthername|modeobject #0
enq: DM - contentionOthername|modetypetype
enq: DN - contentionOthername|mode00
enq: DP - contentionOthername|mode00
enq: DR - contentionOthername|mode00
enq: DS - contentionOthername|mode00
enq: DT - contentionOthername|mode00
enq: DV - contentionOthername|modeobject #0
enq: DX - contentionOthername|modetransaction entry #0
enq: FA - access fileOthername|modedisk group numberfile number
enq: FB - contentionOthername|modetablespace #dba
enq: FC - open an ACD threadOthername|modedisk groupthread
enq: FC - recover an ACD threadOthername|modedisk groupthread
enq: FD - Flashback coordinatorOthername|modeInternalInternal
enq: FD - Flashback on/offOthername|modeInternalInternal
enq: FD - Marker generationOthername|modeInternalInternal
enq: FD - Tablespace flashback on/offOthername|modeInternalInternal
enq: FG - FG redo generation enq raceOthername|modedisk grouptype
enq: FG - LGWR redo generation enq raceOthername|modedisk grouptype
enq: FG - serialize ACD relocateOthername|modedisk grouptype
enq: FL - Flashback database logOthername|modeLog #zero
enq: FL - Flashback db commandOthername|modeLog #zero
enq: FM - contentionOthername|mode00
enq: FR - contentionOthername|modedisk groupunused
enq: FS - contentionOthername|mode0type
enq: FT - allow LGWR writesOthername|modedisk groupthread
enq: FT - disable LGWR writesOthername|modedisk groupthread
enq: FU - contentionOthername|mode00
enq: HD - contentionOthername|modedisk group0
enq: HP - contentionOthername|modetablespace #dba
enq: HQ - contentionOthername|modeobject #hash value
enq: HV - contentionOthername|modeobject #0
enq: HW - contentionConfigurationname|modetable space #block
enq: IA - contentionOthername|mode00
enq: ID - contentionOthername|mode00
enq: IL - contentionOthername|modeobject #0
enq: IM - contention for blrOthername|modepool #0
enq: IR - contentionOthername|mode00/1
enq: IR - contention2Othername|mode00/1
enq: IS - contentionOthername|mode0type
enq: IT - contentionOthername|modeobject #0
enq: JD - contentionOthername|mode00
enq: JI - contentionOthername|modeview object #0
enq: JQ - contentionOthername|mode00
enq: JS - contentionOthername|modeservice IDqueue type
enq: JS - coord post lockOthername|modeservice IDqueue type
enq: JS - coord rcv lockOthername|modeservice IDqueue type
enq: JS - global wdw lockOthername|modeservice IDqueue type
enq: JS - job chain evaluate lockOthername|modeservice IDqueue type
enq: JS - job recov lockOthername|modeservice IDqueue type
enq: JS - job run lock - synchronizeOthername|modeservice IDqueue type
enq: JS - q mem clnup lckOthername|modeservice IDqueue type
enq: JS - queue lockOthername|modeservice IDqueue type
enq: JS - running job cnt lockOthername|modeservice IDqueue type
enq: JS - running job cnt lock2Othername|modeservice IDqueue type
enq: JS - running job cnt lock3Othername|modeservice IDqueue type
enq: JS - slave enq get lock1Othername|modeservice IDqueue type
enq: JS - slave enq get lock2Othername|modeservice IDqueue type
enq: KK - contextOthername|mode0redo thread
enq: KM - contentionOthername|modetypetype
enq: KP - contentionOthername|mode00
enq: KT - contentionOthername|modeplan #0
enq: MD - contentionOthername|modemaster object #0
enq: MH - contentionOthername|mode00
enq: ML - contentionOthername|mode00
enq: MN - contentionOthername|modesession ID0
enq: MR - contentionOthername|mode0 or file #type
enq: MS - contentionOthername|modemaster object #0
enq: MW - contentionOthername|modeSchedule Id0
enq: OC - contentionOthername|mode12
enq: OL - contentionOthername|modehash value0
enq: OQ - xsoq*histrecbOthername|moderesource id0
enq: OQ - xsoqhiAllocOthername|moderesource id0
enq: OQ - xsoqhiCloseOthername|moderesource id0
enq: OQ - xsoqhiFlushOthername|moderesource id0
enq: OQ - xsoqhistrecbOthername|moderesource id0
enq: PD - contentionOthername|modeproperty namekey hash
enq: PE - contentionOthername|modeparno0
enq: PF - contentionOthername|mode00
enq: PG - contentionOthername|mode00
enq: PH - contentionOthername|mode00
enq: PI - contentionOthername|modeoperationserial #
enq: PL - contentionOthername|mode00
enq: PR - contentionOthername|mode00
enq: PS - contentionOthername|modeinstanceslave ID
enq: PT - contentionOthername|modedisk group #type
enq: PV - syncshutOthername|mode00
enq: PV - syncstartOthername|mode00
enq: PW - flush prewarm buffersApplicationname|mode00
enq: PW - perwarm status in dbw0Othername|mode00
enq: RB - contentionOthername|modedisk group0
enq: RF - atomicityOthername|modelock operationlock value
enq: RF - new AIOthername|modelock operationlock value
enq: RF - synch: per-SGA Broker metadataOthername|modelock operationlock value
enq: RF - synchronization: aifo masterOthername|modelock operationlock value
enq: RF - synchronization: chiefOthername|modelock operationlock value
enq: RF - synchronization: critical aiOthername|modelock operationlock value
enq: RF - synchronization: HC masterOthername|modelock operationlock value
enq: RN - contentionOthername|modethread numberlog number
enq: RO - contentionApplicationname|mode10
enq: RO - fast object reuseApplicationname|mode10
enq: RP - contentionOthername|modefile #1 or block
enq: RS - file deleteOthername|moderecord typerecord id
enq: RS - persist alert levelOthername|moderecord typerecord id
enq: RS - prevent aging list updateOthername|moderecord typerecord id
enq: RS - prevent file deleteOthername|moderecord typerecord id
enq: RS - read alert levelOthername|moderecord typerecord id
enq: RS - record reuseOthername|moderecord typerecord id
enq: RS - write alert levelOthername|moderecord typerecord id
enq: RT - contentionOthername|moderedo threadtype
enq: SB - contentionOthername|mode00
enq: SF - contentionOthername|mode00
enq: SH - contentionOthername|mode00
enq: SI - contentionOthername|modeobject #0
enq: SK - contentionOthername|modetablespace #dba
enq: SQ - contentionConfigurationname|modeobject #0
enq: SR - contentionOthername|modeoperationsequence # / apply #
enq: SS - contentionOthername|modetablespace #dba
enq: ST - contentionConfigurationname|mode00
enq: SU - contentionOthername|modetable space #0
enq: SW - contentionOthername|mode00
enq: TA - contentionOthername|modeoperationundo segment # / other
enq: TB - SQL Tuning Base Cache LoadOthername|mode12
enq: TB - SQL Tuning Base Cache UpdateOthername|mode12
enq: TC - contentionOthername|modecheckpoint ID0
enq: TC - contention2Othername|modecheckpoint ID0
enq: TD - KTF dump entriesOthername|mode00
enq: TE - KTF broadcastOthername|mode00
enq: TF - contentionOthername|modetablespace #relative file #
enq: TL - contentionOthername|mode00
enq: TM - contentionApplicationname|modeobject #table/partition
enq: TO - contentionOthername|modeobject #1
enq: TQ - DDL contentionOthername|modeQT_OBJ#0
enq: TQ - INI contentionOthername|modeQT_OBJ#0
enq: TQ - TM contentionOthername|modeQT_OBJ#0
enq: TS - contentionOthername|modetablespace IDdba
enq: TT - contentionOthername|modetablespace IDoperation
enq: TW - contentionAdministrativename|mode0operation
enq: TX - allocate ITL entryConfigurationname|modeusn<<16>sequence
enq: TX - contentionOthername|modeusn<<16>sequence
enq: TX - index contentionConcurrencyname|modeusn<<16>sequence
enq: TX - row lock contentionApplicationname|modeusn<<16>sequence
enq: UL - contentionApplicationname|modeid0
enq: US - contentionOthername|modeundo segment #0
enq: WA - contentionOthername|mode00
enq: WF - contentionOthername|mode00
enq: WL - contentionOthername|modelog # / thread id #sequence #
enq: WP - contentionOthername|mode00
enq: XH - contentionOthername|mode00
enq: XR - database force loggingOthername|modeoperation0
enq: XR - quiesce databaseOthername|modeoperation0
enq: XY - contentionOthername|modeid1id2
extent map load/unlockOthergroupfileextent
flashback buf free by RVWROther


flashback free VI logOther


flashback log switchOther


Flow Control EventOther


foreground creation: startOther


foreground creation: waitOther


free buffer waitsConfigurationfile#block#set-id#
free global transaction table entryOthertries

free process state objectOther


gc assumeClusterle

gc block recovery requestClusterfile#block#class#
gc buffer busyClusterfile#block#id#
gc claimCluster


gc cr block 2-wayCluster


gc cr block 3-wayCluster


gc cr block busyCluster


gc cr block congestedCluster


gc cr block unknownCluster


gc cr cancelClusterle

gc cr disk readCluster


gc cr disk requestClusterfile#block#class#
gc cr failureCluster


gc cr grant 2-wayCluster


gc cr grant busyCluster


gc cr grant congestedCluster


gc cr grant unknownCluster


gc cr multi block requestClusterfile#block#class#
gc cr requestClusterfile#block#class#
gc current block 2-wayCluster


gc current block 3-wayCluster


gc current block busyCluster


gc current block congestedCluster


gc current block unknownCluster


gc current cancelClusterle

gc current grant 2-wayCluster


gc current grant busyCluster


gc current grant congestedCluster


gc current grant unknownCluster


gc current multi block requestClusterfile#block#id#
gc current requestClusterfile#block#id#
gc current retryCluster


gc current splitCluster


gc domain validationCluster


gc freelistCluster


gc prepareCluster


gc quiesce waitCluster


gc recovery freeCluster


gc recovery quiesceCluster


gc remasterCluster


gcs ddet enter server modeOther


gcs domain validationOthercluincrcvinc
gcs drm freeze beginOther


gcs drm freeze in enter server modeOther


gcs enter server modeOther


gcs log flush syncOtherwaittimepollevent
gcs remastering wait for read latchOther


gcs remastering wait for write latchOther


gcs remote messageIdlewaittimepollevent
gcs resource directory to be unfrozenOther


gcs to be enabledOther


ges cached resource cleanupOtherwaittime

ges cancelOther


ges cgs registrationOther


ges enter server modeOther


ges generic eventOther


ges global resource directory to be frozenOther


ges inquiry responseOthertype|modeid1id2
ges lmd and pmon to attachOther


ges LMD suspend for testing eventOther


ges LMD to inherit communication channelsOther


ges LMD to shutdownOther


ges lmd/lmses to freeze in rcfg - mrcvrOther


ges lmd/lmses to unfreeze in rcfg - mrcvrOther


ges LMON for send queuesOther


ges LMON to get to FTDONE Other


ges LMON to join CGS groupOther


ges master to get established for SCN opOther


ges performance test completionOther


ges pmon to exitOther


ges process with outstanding i/oOtherpid

ges reconfiguration to startIdle


ges remote messageIdlewaittimeloopp3
ges resource cleanout during enqueue openOther


ges resource cleanout during enqueue open-cvtOther


ges resource directory to be unfrozenOther


ges reusing os pidOtherpidcount
ges user errorOthererror

ges wait for lmon to be readyOther


ges1 LMON to wake up LMD - mrcvrOther


ges2 LMON to wake up LMD - mrcvrOther


ges2 LMON to wake up lms - mrcvr 2Other


ges2 LMON to wake up lms - mrcvr 3Other


ges2 proc latch in rm latch get 1Other


ges2 proc latch in rm latch get 2Other


global cache busyOthergroupfile#block#
global enqueue expand waitOther


GV$: slave acquisition retry wait timeOther


HS message to agentIdle


i/o slave waitOthermsg ptr

imm opOthermsg ptr

inactive sessionOthersession#waited
inactive transaction branchOtherbranch#waited
index (re)build online cleanupAdministrativeobjectmodewait
index (re)build online mergeAdministrativeobjectmodewait
index (re)build online startAdministrativeobjectmodewait
index block splitOtherrootdbalevelchilddba
instance state changeOtherlayervaluewaited
io doneSystem I/Omsg ptr

IPC busy async requestOther


IPC send completion syncOthersend count

IPC wait for name service busyOther


IPC waiting for OSD resourcesOther


job scheduler coordinator slave waitOther


jobq slave waitIdle


JS coord start waitOther


JS external jobIdle


JS kgl get object waitOther


JS kill job waitOther


kcbzpsOther


kcrrrcpOther


kdic_do_mergeOther


kfcl: instance recoveryOthergroupobj#block#
kfk: async disk IOSystem I/Ocountintrtimeout
kgltwaitOther


kjbdomalc allocate recovery domain - retryOther


kjbdrmcvtq lmon drm quiesce: ping completionOther


kjbopen wait for recovery domain attachOther


KJC: Wait for msg sends to completeOthermsgdest|rcvrmtype
kjctcisnd: Queue/Send client messageOther


kjctssqmg: quick message send waitOther


kjudomatt wait for recovery domain attachOther


kjudomdet wait for recovery domain detachOther


kjxgrtestOther


kkdlgonOther


kkdlhponOther


kkdlsiponOther


kksfbc child completionOther


kksfbc researchOther


kkshgnc reloopOther


kksscl hash splitOther


knlqdeqOther


knlWaitForStartupOther


knpc_acwm_AwaitChangedWaterMarkOther


knpc_anq_AwaitNonemptyQueueOther


knpsmaiOther


ksbcicOther


ksbsrvOther


ksdxexeotherOther


ksdxexeotherwaitOther


ksfd: async disk IOSystem I/Ocountintrtimeout
ksfd: fib/fob latchOther


ksim generic wait eventOtherwherewait_count
ksqdedOther


ksv slave avail waitOther


ksxr poll remote instancesOther


ktfbtgexOthertsn

ktm: instance recoveryOtherundo segment#

ktsamblOther


kttm2dOther


Kupp process shutdownOthernalivesleeptimeloop
kupp process waitOther


kxfxseOtherkxfxse debug wait: stalling for slave 0

kxfxspOtherkxfxsp debug wait: stalling for slave 0

L1 validationOtherseghdrl1bmb
latch activityOtheraddressnumberprocess#
latch freeOtheraddressnumbertries
latch: cache buffer handlesOtheraddressnumbertries
latch: cache buffers chainsConcurrencyaddressnumbertries
latch: cache buffers lru chainOtheraddressnumbertries
latch: checkpoint queue latchOtheraddressnumbertries
latch: enqueue hash chainsOtheraddressnumbertries
latch: gcs resource hashOtheraddressnumbertries
latch: ges resource hash listOtheraddressnumbertries
latch: In memory undo latchConcurrencyaddressnumbertries
latch: KCL gc element parent latchOtheraddressnumbertries
latch: latch wait listOtheraddressnumbertries
latch: library cacheConcurrencyaddressnumbertries
latch: library cache lockConcurrencyaddressnumbertries
latch: library cache pinConcurrencyaddressnumbertries
latch: messagesOtheraddressnumbertries
latch: MQL Tracking LatchConcurrencyaddressnumbertries
latch: object queue header heapOtheraddressnumbertries
latch: object queue header operationOtheraddressnumbertries
latch: parallel query alloc bufferOtheraddressnumbertries
latch: redo allocationOtheraddressnumbertries
latch: redo copyConfigurationaddressnumbertries
latch: redo writingConfigurationaddressnumbertries
latch: row cache objectsOtheraddressnumbertries
latch: session allocationOtheraddressnumbertries
latch: shared poolConfigurationaddressnumbertries
latch: undo global dataOtheraddressnumbertries
latch: virtual circuit queuesOtheraddressnumbertries
LGWR random i/oSystem I/O


LGWR sequential i/oSystem I/O


LGWR simulation latency waitOther


LGWR wait for redo copyOthercopy latch #

LGWR wait on ATTACHNetwork


LGWR wait on DETACHNetwork


LGWR wait on full LNS bufferOther


LGWR wait on LNSNetwork


LGWR wait on SENDREQNetwork


LGWR-LNS wait on channelOther


library cache load lockConcurrencyobject addresslock address100*mask+namespace
library cache lockConcurrencyhandle addresslock address100*mode+namespace
library cache pinConcurrencyhandle addresspin address100*mode+namespace
library cache revalidationOther


listen endpoint statusOtherend-point#status
LNS simulation latency waitOther


LNS wait for LGWR redoOther


LNS wait on ATTACHNetwork


LNS wait on DETACHNetwork


LNS wait on LGWRNetwork


LNS wait on SENDREQNetwork


local write waitUser I/Ofile#block#
lock closeOthergrouplms#
lock deadlock retryOther


lock escalate retryOther


lock release pendingOthergroupfile#block#
lock remasteringCluster


log buffer spaceConfiguration


log file parallel writeSystem I/Ofilesblocksrequests
log file sequential readSystem I/Olog#block#blocks
log file single writeSystem I/Olog#block#blocks
log file switch (archiving needed)Configuration


log file switch (checkpoint incomplete)Configuration


log file switch (clearing log file)Configuration


log file switch completionConfiguration


log file syncCommitbuffer#

log switch/archiveConfigurationthread#

log write(even)Othergroup#

log write(odd)Othergroup#

master exitOtheralive slaves

master waitOther


MMON (Lite) shutdownOtherprocess#waited
MMON slave messagesOther


MRP wait on archivelog archivalOther


MRP wait on archivelog arrivalOther


MRP wait on archivelog delayOther


MRP wait on process deathOther


MRP wait on process restartOther


MRP wait on process startOther


MRP wait on startup clearOther


MRP wait on state changeOther


MRP wait on state n_aOther


MRP wait on state resetOther


multiple dbwriter suspend/resume for file offlineAdministrative


name-service call waitOtherwaittime

no free buffersOthergroup#obj#block#
no free locksOther


null eventOther


OLAP Aggregate Client DeqOthersleeptime/senderidpasses
OLAP Aggregate Client EnqOthersleeptime/senderidpasses
OLAP Aggregate Master DeqOthersleeptime/senderidpasses
OLAP Aggregate Master EnqOthersleeptime/senderidpasses
OLAP Null PQ ReasonOthersleeptime/senderidpasses
OLAP Parallel Temp GrewOthersleeptime/senderidpasses
OLAP Parallel Temp Grow RequestOthersleeptime/senderidpasses
OLAP Parallel Temp Grow WaitOthersleeptime/senderidpasses
OLAP Parallel Type DeqOthersleeptime/senderidpasses
opishdOther


parallel recovery coordinator waits for cleanup of slavesIdle


pending global transaction(s)Otherscans

pi renounce write completeClusterfile#block#
pipe getIdlehandle addressbuffer lengthtimeout
pipe putConcurrencyhandle addressrecord lengthtimeout
PL/SQL lock timerIdleduration

pmon timerIdleduration

process shutdownOthertypeprocess#waited
process startupOthertypeprocess#waited
PX create serverOthernserverssleeptimeenqueue
PX Deq Credit: free bufferOthersleeptime/senderidpassesqref
PX Deq Credit: need bufferIdlesleeptime/senderidpassesqref
PX Deq Credit: send blkdOthersleeptime/senderidpassesqref
PX Deq: Execute ReplyIdlesleeptime/senderidpasses
PX Deq: Execution MsgIdlesleeptime/senderidpasses
PX Deq: Index Merge CloseIdlesleeptime/senderidpasses
PX Deq: Index Merge ExecuteIdlesleeptime/senderidpasses
PX Deq: Index Merge ReplyIdlesleeptime/senderidpasses
PX Deq: Join ACKIdlesleeptime/senderidpasses
PX Deq: kdcph_maiIdlekdcph_mai

PX Deq: kdcphc_ackIdlekdcphc_ack

PX Deq: Msg FragmentIdlesleeptime/senderidpasses
PX Deq: OLAP Update CloseOthersleeptime/senderidpasses
PX Deq: OLAP Update ExecuteOthersleeptime/senderidpasses
PX Deq: OLAP Update ReplyOthersleeptime/senderidpasses
PX Deq: Par Recov Change VectorIdlesleeptime/senderidpasses
PX Deq: Par Recov ExecuteIdlesleeptime/senderidpasses
PX Deq: Par Recov ReplyIdlesleeptime/senderidpasses
PX Deq: Parse ReplyIdlesleeptime/senderidpasses
PX Deq: reap creditOther


PX Deq: Signal ACKOthersleeptime/senderidpasses
PX Deq: Table Q CloseOthersleeptime/senderidpasses
PX Deq: Table Q Get KeysOthersleeptime/senderidpasses
PX Deq: Table Q NormalIdlesleeptime/senderidpasses
PX Deq: Table Q qrefOthersleeptime/senderidpasses
PX Deq: Table Q SampleIdlesleeptime/senderidpasses
PX Deq: Test for msgOthersleeptime/senderidpasses
PX Deq: Txn Recovery ReplyIdlesleeptime/senderidpasses
PX Deq: Txn Recovery StartIdlesleeptime/senderidpasses
PX Deque waitIdlesleeptime/senderidpasses
PX Idle WaitIdlesleeptime/senderidpasses
PX Nsq: PQ descriptor queryOther


PX Nsq: PQ load info queryOther


PX qref latchOtherfunctionsleeptimeqref
PX Send WaitOther


PX server shutdownOthernalivesleeptimeloop
PX signal serverOtherserialerrornbusy
PX slave connectionOther


PX slave releaseOther


qerex_gdmlOther


queue messagesIdlequeue idprocess#wait time
Queue Monitor IPC waitIdle


Queue Monitor Shutdown WaitIdle


Queue Monitor Slave WaitIdle


Queue Monitor Task WaitOther


Queue Monitor WaitIdle


queue slave messagesOther


rdbms ipc messageIdletimeout

rdbms ipc message blockOther


rdbms ipc replyOtherfrom_processtimeout
read by other sessionUser I/Ofile#block#class#
recovery area: computing applied logsOther


recovery area: computing backed up filesOther


recovery area: computing dropped filesOther


recovery area: computing identical filesOther


recovery area: computing obsolete filesOther


recovery readSystem I/O


refresh controlfile commandAdministrative


reliable messageOtherchannel contextchannel handlebroadcast message
Replication Dequeue Othersleeptime/senderidpasses
resmgr:become activeSchedulerlocation

resmgr:cpu quantumSchedulerlocation

resmgr:internal state changeConcurrencylocation

resmgr:internal state cleanupConcurrencylocation

resmgr:sessions to exitConcurrencylocation

retry contact SCN lock masterCluster


rfc_open_retryOtherDMON waiting to retry configuration file open

rfi_drcx_site_delOtherDRCX waiting for site to delete metadata

rfi_insv_shutOtherwait for INSV to shutdown

rfi_insv_startOtherwait for INSV to start

rfi_nsv_deldefOtherNSVx to defer delete response message post to DMON

rfi_nsv_md_closeOtherNSVx metadata file close wait

rfi_nsv_md_writeOtherNSVx metadata file write wait

rfi_nsv_postdefOtherNSVx to defer message post to DMON

rfi_nsv_shutOtherwait for NSVx to shutdown

rfi_nsv_startOtherwait for NSVx to start

rfi_recon1Otherletting site register with its local listener before connect ret

rfi_recon2Otherretrying connection for sending to remote DRCX

rfm_dmon_last_gaspOtherDMON waiting on the last gasp event

rfm_dmon_pdeferOtherDMON phase deferral wait

rfm_dmon_shutOtherwait for DMON to shutdown

rfm_dmon_timeout_opOtherDMON waiting to timeout an operation

rfm_pmon_dso_stallOtherPMON delete state object stall

rfrdb_dbopOtherwaiting for database to be opened

rfrdb_recon1Otherreconnecting back to new primary site during standby viability c

rfrdb_recon2Otherwaiting for standby database to be mounted

rfrdb_try235Otherwaiting for retrying the query to mask ORA-235 error

rfrla_lapp1Otherwaiting for logical apply engine to initialize

rfrla_lapp2Otherchecking for logical apply engine run-down progress

rfrla_lapp3Otherwaiting for new primary to initialize tables

rfrla_lapp4Otherwaiting for v$logstdby_stats view to be initialized

rfrla_lapp5Otherwaiting to reconnect to primary that is in BUILD_UP

rfrm_dbclOtherRSM notifier: waiting for sql latch on db close

rfrm_dbopOtherRSM notifier: waiting for sql latch on db open

rfrm_nonzero_sub_countOtherwait for subscriber count to become nonzero

rfrm_rsm_shutOtherwait for RSMx processes to shutdown

rfrm_rsm_so_attachOtherwait for RSMx to attach to state object

rfrm_rsm_startOtherwait for RSMx processes to start

rfrm_stallOtherRSM stall due to event RSM_STALL

rfrm_zero_sub_countOtherwait for subscriber count to become zero

rfrpa_mrpdnOtherwaiting for MRP0 to stop while bringing physical apply engine of

rfrpa_mrpupOtherwaiting for MRP0 to start while bringing physical apply engine o

rfrxpt_pdlOtherwaiting for retrying potential dataloss calculation before switc

rfrxptarcurlogOtherwaiting for logical apply engine to finish initialization

RFS announceOther


RFS attachOther


RFS closeOther


RFS createOther


RFS detachOther


RFS dispatchOther


RFS pingOther


RFS random i/oSystem I/O


RFS registerOther


RFS sequential i/oSystem I/O


RFS writeSystem I/O


rollback operations activeOtheroperation count

rollback operations block fullOthermax operations

row cache lockConcurrencycache idmoderequest
row cache readConcurrencycache idaddresstimes
RVWR wait for flashback copyOthercopy latch #

scginq AST callOther


secondary eventOtherevent #wait time
select waitOther


simulated log write delayOther


single-task messageIdle


slave exitOthernalivesleeptimeloop
slave shutdown waitOther


slave TJ process waitOther


smon timerIdlesleep timefailed
sort segment requestConfiguration


SQL*Net break/reset to clientApplicationdriver idbreak?
SQL*Net break/reset to dblinkApplicationdriver idbreak?
SQL*Net message from clientIdledriver id#bytes
SQL*Net message from dblinkIdledriver id#bytes
SQL*Net message to clientNetworkdriver id#bytes
SQL*Net message to dblinkNetworkdriver id#bytes
SQL*Net more data from clientNetworkdriver id#bytes
SQL*Net more data from dblinkNetworkdriver id#bytes
SQL*Net more data to clientNetworkdriver id#bytes
SQL*Net more data to dblinkNetworkdriver id#bytes
statement suspended, wait error to be clearedIdle


STREAMS apply coord waiting for slave messageIdle


STREAMS apply slave idle waitIdle


STREAMS apply slave waiting for coord messageApplication


STREAMS capture process filter callback wait for rulesetIdle


STREAMS capture process waiting for archive logOther


STREAMS fetch slave waiting for txnsIdle


Streams: Wait for inter instance ackOther


Streams: Wating for DDL to applyApplicationsleep time

switch logfile commandAdministrative


switch undo - offlineAdministrative


SWRF RWM Auto Capture EventOther


SWRF Wait on FlushingOther


Sync ASM rebalanceOther


test long opsOther


timer in sksawatOther


trace continueOtherdelay time

trace unfreezeOther


trace writer flushOther


trace writer I/OOther


transactionOtherundo seg#|slot#wrap#count
txn to completeOther


unbound txOther


undo segment extensionConfigurationsegment#

undo segment recoveryOthersegment#tx flags
undo segment tx slotConfigurationsegment#

unspecified wait eventOther


virtual circuit statusIdlecircuit#status
wait active processesOther


wait for a paralle reco to abortOther


wait for a undo recordOther


wait for activate messageIdle


wait for another txn - rollback to savepointOther


wait for another txn - txn abortOther


wait for another txn - undo rcv abortOther


wait for assert messages to be sentOther


wait for changeOther


Wait for Dictionary Build to lock all tablesOther


wait for EMON to dieOther


wait for EMON to process ntfnsConfiguration


wait for EMON to spawnOther


wait for FMON to come upOther


wait for Logical Standby Apply shutdownOther


wait for master scnOtherwaittimestartscnackscn
wait for membership synchronizationOther


wait for message ackOther


wait for MTTR advisory state objectOther


wait for possible quiesce finishAdministrative


wait for record updateOther


wait for resize request completionOther


wait for rr lock releaseOther


wait for scn ackOtherpending_ndscnwrpscnbas
wait for SGA component shrinkOthercomponent idcurrent sizetarget size
wait for sga_target resizeOther


Wait for shrink lockOtherobject_idlock_mode
Wait for shrink lock2Otherobject_idlock_mode
wait for split-brain resolutionOther


wait for stopper event to be increasedOther


wait for sync ackOthercluincpending_nd
Wait for Table LockApplication


wait for tmc2 to completeOther


wait for transactionIdle


Wait for TT enqueueOthertsn

wait for unread message on broadcast channelIdlechannel contextchannel handle
wait for unread message on multiple broadcast channelsIdlechannel contextchannel handle count
wait for verification ackOthercluincpending_insts
wait for votesOther


wait list latch activityOtheraddressnumberprocess#
wait list latch freeOtheraddressnumbertries
Wait on stby instance closeOther


waiting for low memory condition to be resolvedIdle


waiting for subscribers to catch upIdle


waiting to get CAS latchOther


waiting to get RM CAS latchOther


wakeup blocked enqueuersOther


wakeup event for builderIdle


wakeup event for preparerIdle


wakeup event for readerIdle


wakeup time managerIdle


write complete waitsConfigurationfile#block#
writes stopped by instance recovery or database suspensionOtherby thread#our thread#