{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff37\deff37\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1042{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica{\*\falt Arial};} {\f5\fmodern\fcharset0\fprq1{\*\panose 02070409020205020404}Courier{\*\falt Courier New};}{\f36\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f37\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;} {\f53\froman\fcharset238\fprq2 Times New Roman CE;}{\f54\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f56\froman\fcharset161\fprq2 Times New Roman Greek;}{\f57\froman\fcharset162\fprq2 Times New Roman Tur;} {\f58\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f59\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f60\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f61\froman\fcharset163\fprq2 Times New Roman (Vietnamese);} {\f63\fswiss\fcharset238\fprq2 Arial CE;}{\f64\fswiss\fcharset204\fprq2 Arial Cyr;}{\f66\fswiss\fcharset161\fprq2 Arial Greek;}{\f67\fswiss\fcharset162\fprq2 Arial Tur;}{\f68\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} {\f69\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f70\fswiss\fcharset186\fprq2 Arial Baltic;}{\f71\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f73\fmodern\fcharset238\fprq1 Courier New CE;}{\f74\fmodern\fcharset204\fprq1 Courier New Cyr;} {\f76\fmodern\fcharset161\fprq1 Courier New Greek;}{\f77\fmodern\fcharset162\fprq1 Courier New Tur;}{\f78\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f79\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);} {\f80\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f81\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f93\fswiss\fcharset238\fprq2 Helvetica CE{\*\falt Arial};}{\f94\fswiss\fcharset204\fprq2 Helvetica Cyr{\*\falt Arial};} {\f96\fswiss\fcharset161\fprq2 Helvetica Greek{\*\falt Arial};}{\f97\fswiss\fcharset162\fprq2 Helvetica Tur{\*\falt Arial};}{\f98\fbidi \fswiss\fcharset177\fprq2 Helvetica (Hebrew){\*\falt Arial};} {\f99\fbidi \fswiss\fcharset178\fprq2 Helvetica (Arabic){\*\falt Arial};}{\f100\fswiss\fcharset186\fprq2 Helvetica Baltic{\*\falt Arial};}{\f101\fswiss\fcharset163\fprq2 Helvetica (Vietnamese){\*\falt Arial};}{\f413\fswiss\fcharset238\fprq2 Tahoma CE;} {\f414\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f416\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f417\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f418\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f419\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);} {\f420\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f421\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f422\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f423\froman\fcharset238\fprq2 Garamond CE;}{\f424\froman\fcharset204\fprq2 Garamond Cyr;} {\f426\froman\fcharset161\fprq2 Garamond Greek;}{\f427\froman\fcharset162\fprq2 Garamond Tur;}{\f430\froman\fcharset186\fprq2 Garamond Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128; \red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\qr \li0\ri0\sb40\sa40\widctlpar \tqc\tx4320\tqr\tx8640\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af4\afs16\alang1025 \ltrch\fcs0 \f4\fs16\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext15 header;}{ \s16\ql \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af5\afs20\alang1025 \ltrch\fcs0 \f5\fs20\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext16 Computer Code;}{ \s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext17 Body Copy;}{ \s18\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs24\alang1025 \ltrch\fcs0 \b\scaps\f37\fs24\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon19 \snext17 Head 2;}{ \s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext17 Head 1;}{ \s20\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af37\afs24\alang1025 \ltrch\fcs0 \i\scaps\f37\fs24\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon18 \snext17 Head 3;}{ \s21\qr \li0\ri0\sb40\sa600\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af37\afs24\alang1025 \ltrch\fcs0 \i\f37\fs24\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext0 Author;}{ \s22\qc \li0\ri0\sb40\sa320\keep\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs36\alang1025 \ltrch\fcs0 \b\shad\scaps\f37\fs36\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext21 Paper Title;}{ \s23\ql \fi-360\li360\ri0\sb40\sa36\widctlpar\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec }\faauto\ls2047\ilvl11\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon17 \snext23 Bullet;}{\s24\qc \li0\ri0\sa144\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af37\afs20\alang1025 \ltrch\fcs0 \i\f37\fs20\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon17 \snext17 Figure tag;}{\s25\qr \li0\ri0\sb40\sa40\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs16\alang1025 \ltrch\fcs0 \f1\fs16\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext25 footer;}{\s26\ql \fi-360\li360\ri0\sb40\sa36\widctlpar\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec }\faauto\ls2047\ilvl11\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon23 \snext26 Numbered Lists;}{\s27\ql \fi-360\li720\ri0\sb40\sa36\widctlpar\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec } \faauto\ls2047\ilvl11\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon23 \snext27 Bullet2;}{\s28\ql \fi-360\li1080\ri0\sb40\sa36\widctlpar \tx1080\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec }\faauto\ls2047\ilvl11\adjustright\rin0\lin1080\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon23 \snext28 Bullet3;} {\s29\ql \fi-360\li720\ri0\sb40\sa36\widctlpar\tx360\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec }\faauto\ls2047\ilvl11\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon26 \snext29 Numbered Lists2;}{\s30\ql \fi-360\li1080\ri0\sb40\sa36\widctlpar\tx720\wrapdefault{\*\pn \pnlvlbody\ilvl11\ls2047\pnrnot0\pndec } \faauto\ls2047\ilvl11\adjustright\rin0\lin1080\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon26 \snext30 Numbered Lists3;}{ \s31\ql \li0\ri0\sb72\sa36\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af37\afs22\alang1025 \ltrch\fcs0 \i\scaps\f37\fs22\cf1\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon32 \snext31 Head 4;}{ \s32\ql \li0\ri0\sb40\sa120\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext32 Body Text;}{ \s33\ql \fi-360\li360\ri0\widctlpar\jclisttab\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls12\pnrnot0\pndec }\faauto\ls12\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af37\afs20\alang1025 \ltrch\fcs0 \f37\fs20\lang2057\langfe1042\cgrid\langnp2057\langfenp1042 \sbasedon0 \snext33 \sautoupd List Bullet;}{\s34\ql \li475\ri0\widctlpar\tx720\wrapdefault\faauto\adjustright\rin0\lin475\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang2057\langfe1042\cgrid\langnp2057\langfenp1042 \sbasedon35 \snext34 SQL text;}{\s35\ql \li0\ri0\sb40\sa40\widctlpar\tx480\tx960\tx1440\tx1920\tx2400\tx2880\tx3360\tx3840\tx4320\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af2\afs20\alang1025 \ltrch\fcs0 \f2\fs20\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \snext35 macro;}{\s36\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af36\afs22\alang1025 \ltrch\fcs0 \f36\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 \sbasedon0 \snext36 Document Map;}{\s37\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs56\alang1025 \ltrch\fcs0 \f1\fs56\lang2057\langfe1042\cgrid\langnp2057\langfenp1042 \sbasedon0 \snext37 comp;}{\*\cs38 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\listtable{\list\listtemplateid-538412700 \listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1492\jclisttab\tx1492\lin1492 }{\listname ;}\listid-132} {\list\listtemplateid770055356\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1209\jclisttab\tx1209\lin1209 }{\listname ;}\listid-131}{\list\listtemplateid152048264\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li926 \jclisttab\tx926\lin926 }{\listname ;}\listid-130}{\list\listtemplateid-1851627434\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li643\jclisttab\tx643\lin643 }{\listname ;}\listid-129}{\list\listtemplateid-1209399118\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1492\jclisttab\tx1492\lin1492 }{\listname ;}\listid-128}{\list\listtemplateid1805291258\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li1209\jclisttab\tx1209\lin1209 }{\listname ;}\listid-127}{\list\listtemplateid-1327880756\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 \levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li926\jclisttab\tx926\lin926 }{\listname ;}\listid-126}{\list\listtemplateid1345454964\listsimple{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li643\jclisttab\tx643\lin643 }{\listname ;}\listid-125}{\list\listtemplateid226811114\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-120}{\list\listtemplateid25692880\listsimple{\listlevel\levelnfc23\levelnfcn23 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid-119}{\list\listtemplateid-1\listsimple{\listlevel\levelnfc0\levelnfcn0 \leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listname ;}\listid-2}{\list\listtemplateid1550731270\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 \levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\lin360 }{\listname ;}\listid249237428}{\list\listtemplateid-1807846700\listsimple{\listlevel\levelnfc23 \levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s33\fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid261762355}{\list\listtemplateid134807553\listsimple {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listname ;}\listid316618691} {\list\listtemplateid-617975422\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelold\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listname ;}\listid389695011} {\list\listtemplateid1515197904\listsimple{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'02\'00);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1080\lin1080 } {\listname ;}\listid419760085}{\list\listtemplateid1737144758\listsimple{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\lin720 }{\listname ;}\listid775098963}{\list\listtemplateid-617975422\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelold\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers \'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listname ;}\listid1413744368}}{\*\listoverridetable{\listoverride\listid-119\listoverridecount0\ls1}{\listoverride\listid-119\listoverridecount0\ls2}{\listoverride\listid-119\listoverridecount0\ls3} {\listoverride\listid-119\listoverridecount0\ls4}{\listoverride\listid-119\listoverridecount0\ls5}{\listoverride\listid-119\listoverridecount0\ls6}{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat{\listlevel\levelnfc23\levelnfcn23 \leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\cf6\fbias0 \fi-360\li360\lin360 }}\ls7}{\listoverride\listid249237428\listoverridecount0\ls8}{\listoverride\listid775098963 \listoverridecount0\ls9}{\listoverride\listid419760085\listoverridecount0\ls10}{\listoverride\listid-119\listoverridecount0\ls11}{\listoverride\listid261762355\listoverridecount0\ls12}{\listoverride\listid389695011\listoverridecount0\ls13} {\listoverride\listid316618691\listoverridecount0\ls14}{\listoverride\listid-125\listoverridecount0\ls15}{\listoverride\listid-126\listoverridecount0\ls16}{\listoverride\listid-127\listoverridecount0\ls17}{\listoverride\listid-128\listoverridecount0\ls18} {\listoverride\listid-120\listoverridecount0\ls19}{\listoverride\listid-129\listoverridecount0\ls20}{\listoverride\listid-130\listoverridecount0\ls21}{\listoverride\listid-131\listoverridecount0\ls22}{\listoverride\listid-132\listoverridecount0\ls23} {\listoverride\listid1413744368\listoverridecount0\ls24}}{\*\rsidtbl \rsid545699\rsid7349851}{\*\generator Microsoft Word 11.0.8106;}{\info{\title Hit Ratios (JL Comp)}{\author Jonathan Lewis}{\keywords Buffer Cache Hit Ratio Oracle performance tuning} {\doccomm A warning of the dangers looking at any simple ratio as a direct indicator of Oracle performance.}{\operator Jonathan Lewis}{\creatim\yr2000\mo6\dy30\hr16\min40}{\revtim\yr2007\mo8\dy19\hr14\min17}{\version161}{\edmins290}{\nofpages4} {\nofwords2003}{\nofchars9847}{\*\company }{\nofcharsws11798}{\vern24611}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}} \paperw12240\paperh15840\margl1080\margr1080\margt1440\margb1440\gutter0\ltrsect \widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb \nospaceforul\lytprtmet\hyphcaps0\formshade\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\rsidroot7349851 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 \chftnsep \par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 \chftnsepc \par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 \chftnsep \par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 \chftnsepc \par }}\ltrpar \sectd \ltrsect\psz1\sbknone\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\headerr \ltrpar \pard\plain \ltrpar\s15\qr \li0\ri0\sb40\sa40\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af4\afs16\alang1025 \ltrch\fcs0 \f4\fs16\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af4 \ltrch\fcs0 \insrsid545699 DBA \par }}{\footerr \ltrpar \pard\plain \ltrpar\s25\qr \li0\ri0\sb40\sa40\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af1\afs16\alang1025 \ltrch\fcs0 \f1\fs16\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 { \rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid545699 Paper #532 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s22\qc \li0\ri0\sb40\sa320\keep\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs36\alang1025 \ltrch\fcs0 \b\shad\scaps\f37\fs36\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 The database gets better, but the metrics look worse. \par }\pard\plain \ltrpar\s21\qc \li0\ri0\sb40\sa600\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af37\afs24\alang1025 \ltrch\fcs0 \i\f37\fs24\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 Jonathan Lewis, JL Computer Consultancy ({\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname country-region}}UK{\*\xmlclose}{\*\xmlclose}) \par }\pard\plain \ltrpar\s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 Traditional metrics \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Once upon a time, when Oracle databases were very small, computer memory was very expensive, and discs were very slow, a wise old bird invented the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 as a method of measuring one aspect of the performance of an Oracle da tabase system. There were a number of minor variations in the formula, but the basic calculation was simply:}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 \par {\pntext\pard\plain\ltrpar \s23 \rtlch\fcs1 \af3\afs22 \ltrch\fcs0 \f3\fs22\cf6 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s23\ql \fi-360\li360\ri0\sb40\sa36\widctlpar\tx360\wrapdefault{\*\pn \pnlvlbody\ilvl0\ls7\pnrnot0 \pncf6\pnf3\pnstart1\pnindent360\pnhang {\pntxtb \'b7}}\faauto\ls7\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 Cache hit ratio = 100 x (1 - ( disc-based block accesses / buffered block accesses) ) \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 The ideal was to get a figure close to 100 (percent), and the purpose of the calculation was simply to answer the question - do I really need to buy more memory? However, a frequently overlooked detail of the formula was that it assumed that the database had been designed to operate efficiently so that the effec ts of extra memory would simply allow the same amount of }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 logical }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 work to be done with fewer }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 physical}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 accesses to disk. \par Many, many years later this formula, or one of its many descendants, is still touted as an important measure. But over those years it has changed from a }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 purchase}{ \rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 metric to an }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 efficiency }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 metric. Instead of saying: "I know that the database design is efficient, let's see if more memory will help", DBAs the world over are more likely to be saying "if only I can increase the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 it will make the database more efficient". \par Unsurprisingly, though, one of the commonest complaints voiced on the Oracle-related Usenet news groups is "I've just upgraded to Oracle version X.X.X.X and my }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 has just dropped - what's gone wrong?" There are two main answers. First (which we will ignore for the purposes of this paper) is that when you upgrade, you usually need to adjust a few }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 init.ora}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 parameters and physical storage features to cater for changes in the optimiser's ability to find exc iting new access paths. Secondly, and more importantly for the purposes of this paper, Oracle Corp. keeps enhancing its buffer access mechanisms to decrease buffer }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 contention}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 . One side-effect of this continual enhancement is that the statistics traditionally used to calculate the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 may show dramatic changes in usage. \par This is a 'problem' that doesn't just apply to the }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 buffer cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 , of course. In today's high throughput, high concurrency systems even a database which has been planned and structured intelligently can suffer from problems of contention for latches (often the }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 cache buffers chains}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 latches and the }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 library cache }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 latches). It is fairly clear that in more recent versions of Oracle (particularly 9.2) various sections of low-leve l code have been re-engineered to reduce contention at a cost of added CPU. Remember - you can always get a faster CPU, but if you hit a latch you stop. Reducing the probability of hitting a latch by adding more latches, cascading latches, and generally burning more CPU may be a good trade-off to improve concurrency. The side-effect of this strategy is to throw doubt on the meaning of various of the latch-related 'performance ratios'. \par }\pard\plain \ltrpar\s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 A Test case \par }\pard\plain \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 The ideal, we are told, is to get the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 as close to 100% as possible. So take as an example the following table which shows two sets of (slightly cleaned) statistics - we use the values from }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 v$sysstat }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 (}{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 v$sesstat}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 ) for the most commonly used values: 'db block gets', 'consistent gets' and 'physical reads' as the basis for this simple example -and their resulting }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratios}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 : \par \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1636\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx1528\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1222\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx2750\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1432\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx4182\pard \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\lang2057\langfe1042\langnp2057\insrsid545699 Statistic\cell Example 1\cell Example 2\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow0\irowband0\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh \brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr \brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1636\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx1528\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr \brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1222\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx2750\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr \brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1432\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx4182\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl \brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt \brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1636\clshdrawnil \cellx1528\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb \brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1222\clshdrawnil \cellx2750\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1432\clshdrawnil \cellx4182\pard \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Db block gets\cell 100,000 \cell }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 100,000}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { \rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow1\irowband1\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr \brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb \brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1636\clshdrawnil \cellx1528\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1222\clshdrawnil \cellx2750\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1432\clshdrawnil \cellx4182\row \ltrrow}\pard \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Consistent gets\cell 2,000,000\cell }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 14,000,000}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow2\irowband2\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh \brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr \brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1636\clshdrawnil \cellx1528\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1222\clshdrawnil \cellx2750\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1432\clshdrawnil \cellx4182\row \ltrrow}\pard \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Physical reads\cell 141,000\cell }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 141,000}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow3\irowband3\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh \brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr \brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1636\clshdrawnil \cellx1528\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1222\clshdrawnil \cellx2750\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1432\clshdrawnil \cellx4182\row \ltrrow}\pard \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Cache hit ratio\cell 93.3%\cell }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 99%\cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow4\irowband4\lastrow \ltrrow \ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1636\clshdrawnil \cellx1528\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1222\clshdrawnil \cellx2750 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1432\clshdrawnil \cellx4182\row }\pard \ltrpar \ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \par According to the theory, the first set of figures comes from a database that could do with some improvement, but the second set of figures indicates a pretty efficient database system. However, try running the following two SQL statements on your test da tabase (version 8.1.7.4 or below). \par }\pard\plain \ltrpar\s16\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af5\afs20\alang1025 \ltrch\fcs0 \f5\fs20\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af5 \ltrch\fcs0 \insrsid545699 create table kill_cpu (n, primary key(n)) \par organization index \par as \par select rownum n \par from all_objects \par where rownum <= 23 \par ; \par }\pard \ltrpar\s16\ql \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af5 \ltrch\fcs0 \insrsid545699 \par }\pard \ltrpar\s16\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af5 \ltrch\fcs0 \insrsid545699 select count(*) X \par from kill_cpu \par connect by n > prior n \par start with n = 1 \par ; \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Running under Oracle 8.1.7.4, the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 select}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 statement will give the result 4,194,304, and record a similar number of }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 consistent gets}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 . The difference between the two sets of statistics tabulated above (hence the resulting }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratios}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 ) can be produced by r unning this rather extreme query just three times. (Expect the query to take between 2 and 5 minutes, depending on platform and CPU speed - as a very rough guide-line I assume that most systems will handle 10,000 buffer accesses per 100MHz of CPU per seco nd). \par More significantly though, if you run this query on 9.2.0.2 the number of }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 consistent gets }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 recorded drops to four million to five (yes, five, not five hundred thousand, or even five thousand). In other words, if you migrate your database system from 8. 1.7.4 (where I got the statistics for example 2) to 9.2.0.2 (where I got the statistics for example 1) your }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 could drop dramatically because Oracle has introduced a new (usually) improved method of handling }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 connect by}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 queries. \par Of course, I designed an extreme example to increase the visibility of the issue. But if you are running an HR system you may have a significant number of 'X is in the line management of Y' predicates in your code; or if you are running a manufacturing system you may have a significant number of 'parts explosion, bill of materials' queries, in which case you may see }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 exactly }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 this effect. \par Warning - there has been at least one note on Metalink under the Server forum reporting a problem with the Oracle 9 mechanism for }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 connect by }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 queries taking much longer than it used to under Oracle 8. However, the thread never reached a conclusion about what special set of circumstances made this anomaly appear. \par }\pard\plain \ltrpar\s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 New Technology \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 It isn't just in the area of }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 connect by}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 queries that Oracle ha s re-written the code. Over the years, as databases have grown larger and the memory used to support them has increased, Oracle Corp. has recognised that pure I/O costs are not necessarily the most important performance issue, and that the cost of protect ing }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 shared memory}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 can be very significant. \par This has led to major efforts to produce new strategies for reducing }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 latch contention}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 - in particular on the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache buffers chains}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 latches which are used to protect }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 hash buckets }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 whilst Oracle is searching for buffered data blocks. One of the main strategies for reducing this latch activity is to }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 pin}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 buffers, once they have been located or loaded, if they are likely to be used again by the same process in the very near future. Consequently some block accesses that used to be recorded under the statistic } {\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 consistent gets}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 will instead be recorded under }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 buffer is pinned count}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 because the blocks are being }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 revisited}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 in the same call, and Oracle has successfully anticipated the need. (In the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 kill_cpu }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 script above, the statistics for Oracle 8.1 will show approximately 2 million visits to pinned buffers - adding another 50% buffer accesses than you would traditionally account for when calculating the }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 buffer cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 ). \par Consider the following SQL statement - executed from SQL*Plus under version 8.1.7.4 - which I engineered to perform an }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 index full scan }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 across the primary key index of a 1,000 row table to return every row of the table: \par }\pard\plain \ltrpar\s16\ql \fi720\li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af5\afs20\alang1025 \ltrch\fcs0 \f5\fs20\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af5 \ltrch\fcs0 \cgrid0\insrsid545699 select small_vc \par }\pard \ltrpar\s16\ql \li720\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin720\itap0 {\rtlch\fcs1 \af5 \ltrch\fcs0 \cgrid0\insrsid545699 from pin_c \par where id > 0; \par }\pard \ltrpar\s16\ql \li0\ri0\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af5 \ltrch\fcs0 \insrsid545699 \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 If you check the session statistics (}{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\insrsid545699 v$sesstat}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 ) before and after running this query, you will find that the number of }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\insrsid545699 consistent gets }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 will be affected as you change the SQL*Plus arraysize (}{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\insrsid545699 set arraysize NNN}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 ). For example with an }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\insrsid545699 arraysize }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 of one you will record around 500 }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\insrsid545699 consistent gets }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 but with an arraysize of 500 you will probably see just a handful of }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\insrsid545699 consistent gets}{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 . Why the difference? The figures below summarise the critical statistics from my test case: \par \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth2679\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx2571\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1404\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx3975\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1642\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx5617\pard\plain \ltrpar\ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\lang2057\langfe1042\langnp2057\insrsid545699 Statistic\cell Arraysize 1\cell Arraysize 500\cell }\pard \ltrpar \ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \ab\af37 \ltrch\fcs0 \b\lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow0\irowband0\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt \brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth2679\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx2571 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1404\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx3975 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \clcfpat1\clcbpat8\clshdng10000\cltxlrtb\clftsWidth3\clwWidth1642\clcbpatraw8\clcfpatraw1\clshdngraw10000 \cellx5617\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2679\clshdrawnil \cellx2571\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1404\clshdrawnil \cellx3975 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1642\clshdrawnil \cellx5617\pard \ltrpar \ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Consistent gets\cell 504\cell }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 23}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow1\irowband1\ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh\brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2679\clshdrawnil \cellx2571\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1404\clshdrawnil \cellx3975 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1642\clshdrawnil \cellx5617\row \ltrrow}\pard \ltrpar \ql \li0\ri0\sb40\sa40\widctlpar\intbl\wrapdefault\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Buffer is pinned count\cell 498\cell }{\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 980}{ \rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \cell }\pard \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \trowd \irow2\irowband2\lastrow \ltrrow\ts11\trqc\trgaph108\trleft-108\trbrdrt\brdrs\brdrw15\brdrcf1 \trbrdrl\brdrs\brdrw15\brdrcf1 \trbrdrb\brdrs\brdrw15\brdrcf1 \trbrdrr\brdrs\brdrw15\brdrcf1 \trbrdrh \brdrs\brdrw15\brdrcf1 \trbrdrv\brdrs\brdrw15\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr \brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2679\clshdrawnil \cellx2571\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1404\clshdrawnil \cellx3975\clvertalt\clbrdrt\brdrs\brdrw15\brdrcf1 \clbrdrl\brdrs\brdrw15\brdrcf1 \clbrdrb\brdrs\brdrw15\brdrcf1 \clbrdrr\brdrs\brdrw15\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth1642\clshdrawnil \cellx5617\row }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 \par Note how }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 consistent gets }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 have 'migrated' to become }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 buffer is pinned}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 . When we set the arraysize to 500, Oracle gets to an index leaf block, and pins it, then goes tripping back and forth between the table and index without having to hit the }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 cache buffers chains}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 latch for the index block again until either (a) the leaf bloc k is exhausted and the next leaf has to be visited or (b) the array is full which means the call is complete and data has to be returned to the client. \par }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 Pinning }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 has been in use for many years, but the appearance of statistics related to }{ \rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 pinning }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 is relativel y recent; and these statistics are still not used in any variant of the formula for the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 . Since Oracle keeps finding new ways of trading }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 pins }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 for }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 consistent gets}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 , any metric which doesn't cater properly for both statistics is likely to degra de each time you upgrade your version of Oracle (even in the unlikely event that all optimiser options and execution paths remain unchanged across the upgrade). For example, Oracle 9 has introduced }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 table pre-fetching}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 , which is a cost-based feature that all ows Oracle to accumulate multiple rows entries from an index and sorting them before accessing any of the targeted table blocks - which could result in increased pinning of table blocks and a matching reduction in }{\rtlch\fcs1 \ab\ai\af37 \ltrch\fcs0 \b\i\lang2057\langfe1042\langnp2057\insrsid545699 consistent gets}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 . \par }\pard\plain \ltrpar\s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Dedicated caches \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Of course, we don't even need to look at a detail as esoteric as }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 pinning }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 to discover problems with the traditional approach to measuring the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 . Think of the macro-level feature of }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 buffer_pool_keep}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 and }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 buffer_pool_recycle }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 that appeared in Oracle 8 (replaced by }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 db_keep_cache_size }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 and }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 db_recycle_cache_size}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 in Oracle 9). \par If you look at }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 v$sysstat}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 for your underlying values to calculate the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 , what misleading figures are you likely to introduce? Think about what you are trying to measure with a }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 cache hit ratio }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 - and what the functions of the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 keep}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 and }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 recycle }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 pools are. \par The }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 keep }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 pool is where you expect to find data }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 every time}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 (after a brief warm-up period), the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 recycle }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 pool is the thing you use because you never expect to find data cached in memory, so that every visit to an object in the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 recycle }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 pool is }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 supposed }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 to require a disc read. Your } {\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 localised cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 for the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 recycle }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 pool should presumably be zero, and for the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 keep }{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 pool it should be 100%, or you are not making optimal use of the pools. \par The issue, of course, gets more subtle with Oracle 9 where you can define different block sizes for different tablespaces, and then set up a separate block cache for each o f the available block sizes. For example, what would the effects be of creating your }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 undo tablespace}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 at a non-standard size? Should you expect, or require, the }{\rtlch\fcs1 \ai\af37 \ltrch\fcs0 \i\lang2057\langfe1042\langnp2057\insrsid545699 undo cache hit ratio}{\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 (as we might choose to call the hit ratio on this cache) to behave differently from the rest of the database? (The answer is almost certainly yes, but will be application-dependent.) \par }\pard\plain \ltrpar\s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Conclusion \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 Oracle Corp. is constantly refining the internal mechanisms of data acquisition. There is often a time-lag, sometimes a very long time-l ag, between a new mechanism being implemented, the corresponding statistics being exposed and the working DBA finding out about it, understanding it, and being able to cater for it in their efficiency metrics. \par At the end of the day, if you rely on formulae that are based on well-known statistics to 'calculate' the effectiveness of your database, you are likely to end up joining the ranks of those who have cried: \par }\pard \ltrpar\s17\qc \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 "I upgraded the database and my favourite performance metric just got worse". \par }\pard\plain \ltrpar\s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Acknowledgements \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 This material in this white paper and the accompanying presentation was originally presented to the UKOUG annual conference in December 2001, and subsequently at OW Copenhagen 2002. \par }\pard\plain \ltrpar\s19\ql \li0\ri0\sb72\sa36\keep\keepn\widctlpar\wrapdefault\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af37\afs28\alang1025 \ltrch\fcs0 \b\scaps\f37\fs28\ulth\cf6\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \lang2057\langfe1042\langnp2057\insrsid545699 Further {\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname City}}Reading{\*\xmlclose}{\*\xmlclose} \par }\pard\plain \ltrpar\s17\ql \li0\ri0\sb40\sa40\widctlpar\wrapdefault\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af37\afs22\alang1025 \ltrch\fcs0 \f37\fs22\lang1033\langfe1042\cgrid\langnp1033\langfenp1042 {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 Connor McDonald: "Custom Hit Ratio". }{\field{\*\fldinst {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 HYPERLINK http://www.oracledba.co.uk }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \fs20\insrsid7349851 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000017000000140000007700770077002e006f007200610063006c0065006400620061002e0063006f002e0075006b000000e0c9ea79f9bace118c8200aa004ba90b3800000068007400740070003a002f002f007700770077002e006f007200610063006c00650064006200 61002e0063006f002e0075006b002f000000000000}}}{\fldrslt {\rtlch\fcs1 \af37 \ltrch\fcs0 \cs38\ul\cf2\insrsid545699 www.oracledba.co.uk}}}\sectd \ltrsect\psz1\sbknone\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 \par Jonathan Lewis: "Old Wives Tales". }{\field{\*\fldinst {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 HYPERLINK http://www.jlcomp.demon.co.uk }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \fs20\insrsid7349851 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000017000000170000007700770077002e006a006c0063006f006d0070002e00640065006d006f006e002e0063006f002e0075006b000000e0c9ea79f9bace118c8200aa004ba90b3e00000068007400740070003a002f002f007700770077002e006a006c0063006f006d00 70002e00640065006d006f006e002e0063006f002e0075006b002f000000000000}}}{\fldrslt {\rtlch\fcs1 \af37 \ltrch\fcs0 \cs38\ul\cf2\insrsid545699 www.jlcomp.demon.co.uk}}}\sectd \ltrsect \psz1\sbknone\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 \af37 \ltrch\fcs0 \insrsid545699 \par \par \par }}