Thought sure my original doc on Buffer Busy Waits was out there on the internet but can't find it. In the original doc I talk about the meaning of P3 starting in 8.1.6. P3 has 3 positions XXX and each position represented something. The main distinction was 2XX verse 1XX. The 2XX values are users modifying a block, where as the 1XX values are users reading a block (a read into a new block modifies it thus the buffer busy wait potential)
The following comes from Steve's site http://www.ixora.com.au/q+a/0104/27230622.htm
but I believe the original doc was from me (since I'm the one that had the codes changed for P3 in 8.1.6 )
There is a subtle distinction between reason codes 1012 and 1016, but the tuning advice for both is to avoid contention for exclusive locks on the buffers. Reason code 0 means that a process had to wait for a buffer that was busy being read into cache by another process.
Incidentally, these reason codes have changed in 8i. The new reason codes are 3-digit numbers. So far as I can tell, the first digit is 1 for consistent gets, and 2 for current mode gets. The second digit is 2 when requesting an exclusive lock, and 3 when requesting a shared lock on the buffer. The third digit is normally 0, but can be 1 if the buffer is needed for a (consistent read) rollback. If anyone reading this has source code access, I would appreciate some confirmation of this. Anyway, the two reason codes that you need to know about for 8i are 130 (block being read into cache by another process) and 220 (waiting for exclusive access to the block).
Nicely laid out in a table from http://cyzhang1983.itpub.net/post/40572/495934
Buffer Busy Waits ID's and Meanings