Note (Sure)- Note Mods- Note RefsErrorORA 600TARTAR-InfoBugBug MatrixRFIDiaryEventsParametersLocksLatchesViewsPkg/ProcStatisticsWait EventsFunctionBugDB UserPort NamesProd/CompDoc Part GetExplodeMailFaxMarkTagTag-ReferencesCheck-ReferencesShow RemarksEditEdit (Full Header)Copy (Full Header)AttachmentsShow Doc StatsShow ML Copy
Article-ID: <>Alias: VIEW:X$KCBLDRHISTCirculation: Folder: Topic: Title: VIEW: X$KCBLDRHIST - Direct Read HISTory - (9.0)Document-Type: REFERENCEImpact: LOWSkill-Level: NOVICEServer-Version: 09.00Updated-Date: 05-OCT-2001 05:27:02References: Shared-Refs: Authors: MEPRESTO.USAttachments: NONEContent-Type: TEXT/PLAINProducts: 5/RDBMS (9.0); View: X$KCBLDRHIST [K]ernel [C]ache [B]uffer [L]oad management [d]irect [r]ead [hist]ory Column Type Description -------- ---- -------- ADDR RAW(4|8) address of this row/entry in the array or SGA INDX NUMBER index number of this row in the fixed table array INST_ID NUMBER oracle instance number DRTHRUPT NUMBER throughput of direct reads TOTLSLTS NUMBER Total number of slots as seen by CKPT INCREASE NUMBER Increase bit KCBLHV_STAY 0 Do not increase number of slots KCBLHV_INCR 1 Increase number of slots KCBLHV_SYNC 2 Syncronize mode REALSLTS NUMBER Total number of slots as seen by the PQ slavesNotes from source: One copy of the history vector is allocated per instance. Each entry corresponds to a different time snapshot. Every 3 seconds, the next entry is updated. Each entry contains the following information: - Throughput of direct reads during the last 3 seconds expressed in blocks per second. - Total number of slots (1). The background process every 3 seconds adds up the number of slots in all active sessions. This is possible since every session maintains statistics about its number of slots. - Total number of slots (2). Each slave running adaptive direct reads adds regularly its number of slots to the history vector. The reason for having two different variables representing the same logical entity is because either of those two variables alone is not accurate enough. For example, if just before the end of the 3 second interval, a new slave started then (1) will not be accurate. On the other hand, if a slave just missed the chance to add its number of slots in the last entry, then (2) is wrong. So before any decision is taken, we make sure that (1) is identical to (2). - Increase bit. This bit indicates the decision taken by the background process for the next 3 seconds interval based on the previous history entries. Check the note in kcblclc for more information about the increase bit.KCBLHSZ 1000 Size of History Vector in number of rows KCBLHSLTRT 25 Minimum percentage increase in number of slotsMinimum percentage increase in throughput expressed in percentageincrease in the number of slots. For example, if we have a 40% increasein the number of slots, then the minimum increase inthroughput needs to be 40% * 25% = 10%. So this numbercorrelates the increase in number of slots with the throughput.The minimum increase in throughput is used by the background processas will be seen later. The latter compares the current increase inthroughput with the minimum increase to determine whether to increasethe number of slots in the system or not. KCBLHTHPTRT 25Maximum IO Wait to Cumulative time ratio where slave is CPU boundexpressed in percentage. If that IO wait to cumulative time ratiois greater than this number, then the slave is considered IO boundand would increase number of slots if background process indicatesto do so. Otherwise, the slave is considered CPU bound andconsequently ignores all decisions taken by the background process. KCBLHCPUBDRT 10NOTE ON PERSISTENT AND NONPERSISTENT STATE FOR ADAPTIVE READS:The state for adaptive direct reads is composed of a persistent andnonpersistent state. Persistent state means that kcbl state ismaintained across uses of a load descriptor. In other words, thestate is maintained across kcbldrini calls. The reason for that isthat sometimes kcbldrini is called multiple times for the same tableor index... We don't want to restart the adaptation from scratcheverytime kcbldrini is called. Instead we would like to maintain somestate so that in case kcbldrini is called again on that same object,no redundant adaptation is needed.