Oracle LIO and Oracle PIO


  • An Oracle LIO (or logical read call) occurs any time the Oracle kernel requests access to an Oracle block in the database buffer cache. If the kernel cannot find a specified Oracle block in the database buffer cache, then the LIO motivates an Oracle PIO call. In accounting for LIO elapsed times, we do not include the time spent executing the PIO portion of the LIO call. The number of LIO calls for a session is the sum of the values in v$sesstat for the statistics named “db block gets” and “consistent gets.”


  • An Oracle PIO (or physical read call) occurs when the Oracle kernel executes an operating system (OS) read call for an Oracle database block. In accounting for PIO elapsed times, we include only the time that the Oracle kernel spends waiting for the execution of the OS read call. A PIO may or may not engage the service of an actual disk drive; if the OS can fulfill the read call from memory (e.g., disk controller cache or OS buffer cache), then the PIO will be satisfied without actually incurring the latency of a read from disk. For a single OS call that reads multiple blocks, each block counts as one PIO. In accounting for PIO elapsed times, we do not include the time spent executing the LIO that motivated the PIO. The most common type of PIO is counted in the v$sesstat value for the statistic named “physical reads.”