·¢²©ÎÄ
»¶Ó­ÄãµÄµ½À´£¬×£Ä㹤×÷˳Àû£¬ÉíÌ彡¿µ£¡£¡£¡

amlu.blog.chinaunix.net

love yizhi   
¸öÈË×ÊÁÏ
  • ²©¿Í·ÃÎÊ£º122241
  • ²©ÎÄÊýÁ¿£º112
  • ²©¿Í»ý·Ö£º4230
  • ²©¿ÍµÈ¼¶£ºÉÏУ
  • ×¢²áʱ¼ä£º2007-04-21 15:22:33
¶©ÔÄÎҵIJ©¿Í
  • ¶©ÔÄ
  • ¶©Ôĵ½Ïʹû
  • ¶©Ôĵ½×¥Ïº
  • ¶©Ôĵ½Google
×ÖÌå´óС£º´ó ÖРС²©ÎÄ
Èȵã¿éµÄ¶¨Òå (2008-04-23 14:26)


Èȵã¿éµÄ¶¨Òå

        Êý¾Ý¿âµÄÈȵã¿é£¬´Ó¼òµ¥Á˽²£¬¾ÍÊǼ«¶ÌµÄʱ¼äÄÚ¶ÔÉÙÁ¿Êý¾Ý¿é½øÐÐÁ˹ýÓÚÆµ·±µÄ·ÃÎÊ¡£¶¨Òå¿´ÆðÀ´×ÜÊǺܼòµ¥µÄ£¬µ«Êµ¼ÊÔÚÊý¾Ý¿âÖУ¬ÎÒÃÇҪȥ¹Û²ì»òÕßÈ·¶¨Èȵã¿éµÄÎÊÌ⣬ȴ²»ÊÇÄÇô¼òµ¥ÁË¡£ÒªÉî¿ÌµØÀí½âÊý¾Ý¿âÊÇÔõôͨ¹ýһЩÊý¾ÝÌØÕ÷À´±íʾÈȵã¿éµÄ£¬ÎÒÃÇÐèÒªÁ˽âһЩÊý¾Ý¿âÔÚÕâ·½Ãæ´¦Àí»úÖÆµÄÌØÐÔ¡£

Êý¾Ý»º³åÇøµÄ½á¹¹

        ÎÒÃǶ¼ÖªµÀ£¬µ±²éѯ¿ªÊ¼µÄʱºò£¬½ø³ÌÊ×ÏÈÈ¥Êý¾Ý»º³åÇøÖвéÕÒÊÇ·ñ´æÔÚ²éѯËùÐèÒªµÄÊý¾Ý¿é£¬Èç¹ûûÓУ¬¾ÍÈ¥´ÅÅÌÉϰÑÊý¾Ý¿é¶Áµ½ÄÚ´æÖÐÀ´¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬Éæ¼°µ½Êý¾Ý»º³åÇøÖÐLRUÁ´µÄ¹ÜÀí£¨8i¿ªÊ¼ÒÔ½Ó´¥µã¼ÆÊýΪ±ê×¼ºâÁ¿bufferÀäÈÈ´Ó¶ø¾ö¶¨bufferÊÇÔÚLRUµÄÀä¶Ë»¹ÊÇÈȶˣ©£¬¹ØÓÚÕⲿ·ÖÄÚÈÝ£¬´Óoracle concepts ÖоÍÄܵõ½Ï꾡µÄÎĵµ£¬ÎÒ²»×¼±¸È¥ÂÛÊöÕⲿ·ÖÄÚÈÝ£¬ÕâÒ²²»ÊDZ¾ÎĵÄÖØµã¡£ÏÖÔÚÎÒÃǵÄÖØµãÊÇ£¬µ½µ×½ø³ÌÊÇÈçºÎµØÈ¥¿ìËÙ¶¨Î»µ½×Ô¼ºËùÏëÒªµÄblockµÄ£¬»òÕßÈçºÎ¿ìËÙÈ·¶¨ÏëÒªµÄblock²»ÔÚÄÚ´æÖжøÈ¥½øÐÐÎïÀí¶ÁµÄ¡£

        ÎÒÃÇ×ÐϸÏëÒ»Ïë£¬Ëæ×ÅÓ²¼þµÄ·¢Õ¹£¬ÄÚ´æÔ½À´Ô½´ó£¬cache bufferÒ²Ô½À´Ô½´ó£¬ÎÒÃÇÈçºÎ²ÅÄÜÔÚ´óÁ¿µÄÄÚ´æÖÐѸËÙ¶¨Î»µ½×Ô¼ºÏëÒªµÄblock£¿×ܲ»ÄÜÈ¥ËùÓÐbufferÖбéÀú°É£¡ÔÚ´ËÊý¾Ý¿âÒý³öÁËhashµÄ¸ÅÄoracleÖпìËÙ¶¨Î»ÐÅÏ¢×ÜÊÇͨ¹ýhashËã·¨µÄ£¬±ÈÈç¿ìËÙ¶¨Î»sqlÊÇ·ñÔÚshared pool sizeÖдæÔÚ¾ÍÊÇͨ¹ýhash valueÀ´¶¨Î»µÄ£¬Ò²¾ÍÊÇ˵shared pool sizeÖжÔÏóÒ²ÊÇͨ¹ýhash tableÀ´¹ÜÀíµÄ£©£¬Á˽âÒ»µãÊý¾Ý½á¹¹µÄ»ù±¾ÖªÊ¶¾ÍÖªµÀ£¬hash µÄÒ»´óÖØÒª¹¦ÄܾÍÊÇ¿ìËٵزéÕÒ¡£¾Ù¸ö×î¼òµ¥µÄÀý×Ó£¬¼ÙÉèÎÒÃÇÓÐÒ»¸öhash table ¾ÍÊÇÒ»¸ö¶þάÊý×éa[200][100],ÏÖÔÚÓÐ1000¸öÎÞÐòÊý×Ö£¬ÎÒÃÇÒª´ÓÕâ1000¸öÊý×ÖÀïÃæ²éÕÒij¸öÖµÊÇ·ñ´æÔÚ£¬»òÕß˵µ±ÎÒÃǽÓÊÕµ½Ä³¸öÊý×ÖµÄʱºò±ØÐëÅжÏÊÇ·ñÒѾ­´æÔÚ£¬µ±È»£¬ÎÒÃÇ¿ÉÒÔ±éÀúÕâ1000¸öÊý×Ö£¬µ«ÕâÑùµÄЧÂʾͺܵ͡£µ«ÏÖÔÚÎÒÃÇ¿¼ÂÇÕâÑùÒ»ÖÖ·½·¨£¬ÄǾÍÊǰÑ1000¸öÊý×Ö³ýÒÔ200£¬¸ù¾ÝÆäÓàÊý£¬·ÅÔÚa[200][100]ÀïÃæ(¼ÙÉèÏàͬÓàÊýµÄ×î´óÊýÁ¿²»³¬¹ý100)£¬ÓàÊý¾ÍÊÇÊý×éµÄϱꡣÕâÑù£¬Æ½¾ùÀ´ËµÒ»¸öÊý×éa[i]ÀïÃæ¿ÉÄÜÓÐ5¸ö×óÓÒµÄÊý×Ö¡£µ±ÎÒÃÇҪȥÅбðÒ»¸öÊý×ÖÊÇ·ñ´æÔÚµÄʱºò£¬¶ÔÕâ¸öÊý×Ö³ýÒÔ200(Õâ¾ÍÊÇÒ»¸ö×î¼òµ¥µÄhashËã·¨)£¬¸ù¾ÝÓàÊýi×÷ΪϱêÈ¥Êý×éa[i]ÖвéÕÒ£¬´óÔ¼½øÐÐ5´Î²éÕÒ¾ÍÄÜÅбðÊÇ·ñÒѾ­´æÔÚ£¬ÕâÑùͨ¹ý¿ª±ÙÄÚ´æ¿Õ¼äa[200][100]À´»»È¡ÁËʱ¼ä(µ±È»hash Ëã·¨µÄѡȡºÍhash tableµÄ´óСÊÇÒ»¸öºÜ¹Ø¼üµÄÎÊÌâ)¡£

        Ã÷°×ÁË»ù±¾µÄhashÔ­ÀíÖ®ºó£¬ÎÒÃÇÔÙÀ´¿´oracleµÄblockµÄ¹ÜÀí¡£Êý¾Ý¿âΪÕâЩblockÒ²¿ª±ÙÁËhash table£¬¼ÙÉèÊÇa,ÔòÔÚһάÉϵÄÊýÁ¿ÊÇÓɲÎÊý_db_block_hash_buckets À´¾ö¶¨µÄ£¬Ò²¾ÍÊÇ´æÔÚhash table a[_db_block_hash_buckets ],´Óoracle8i¿ªÊ¼£¬_db_block_hash_buckets =db_block_buffers*2¡£¶øÒ»¸öblock±»·Åµ½ÄĸöbucketsÀïÃæ£¬ÔòÊÇÓÉblockµÄÎļþ±àºÅ¡¢¿éºÅ(x$bh.dbarfl¡¢x$bh.dbablk¶ÔÓ¦ÁËblockµÄÎļþÊôÓÚ±í¿Õ¼äÖеÄÏà¹Ø±àºÅºÍblockÔÚÎļþÖеıàºÅ£¬x$bhÊÇËùÓÐcache bufferµÄheaderÐÅÏ¢£¬Í¨¹ý±í¸ñµÄÐÎʽ¿ÉÒÔ²éѯ)×öhash Ëã·¨¾ö¶¨·Åµ½ÄĸöbucketµÄ£¬¶øbucketÀïÃæ¾Í´æ·ÅÁËÕâЩbuffersµÄµØÖ·¡£ÕâÑùµ±ÎÒÃÇÒª·ÃÎÊÊý¾ÝµÄʱºò£¬¿ÉÒÔ»ñµÃsegmentµÄextent(¿ÉÒÔͨ¹ýdba_extents²éµ½¿´£¬ÏêϸµÄÐÅÏ¢À´Ô´ÕâÀï²»×ö̽ÌÖ)£¬×ÔȻ֪µÀÒª·ÃÎʵÄÎļþ±àºÅºÍblock±àºÅ£¬¸ù¾ÝÎļþºÍblock±àºÅ¿ÉÒÔͨ¹ýhashËã·¨¼ÆËã³öhash bucket,È»ºó¾Í¿ÉÒÔÈ¥hash bucketÀïÃæÈ¥ÕÒblock¶ÔÓ¦µÄbuffer¡£

        ³ý´ËÖ®Í⣬ΪÁËά»¤¶ÔÕâЩblockµÄ·ÃÎʺ͸ü¸Ä£¬oracle»¹ÌṩÁËÒ»ÖÖlatchÀ´±£»¤ÕâЩblock¡£ÒòΪҪ±ÜÃⲻͬµÄ½ø³ÌËæÒâµØ¾¶Ö±²¢·¢Ð޸ĺͷÃÎÊÕâЩblock£¬ÕâÑùºÜ¿ÉÄÜ»áÆÆ»µblockµÄ½á¹¹µÄ¡£latchÊÇÊý¾Ý¿âÄÚ²¿ÌṩµÄÒ»ÖÖά»¤ÄÚ²¿½á¹¹µÄÒ»Öֵͼ¶Ëø£¬latchµÄÉú´æÖÜÆÚ¼«¶Ì(΢ÃëÒÔϼ¶±ð)£¬½ø³Ì¼Ólatchºó¿ìËٵĽøÐÐij¸ö·ÃÎÊ»òÕßÐ޸͝×÷È»ºóÊÍ·Ålatch(¹ØÓÚlatch²»ÔÙ¹ý¶àµÄ²ûÊö£¬ÄÇ¿ÉÄÜÓÖÊÇÐèÒªÁíһƪÎÄÕ²ÅÄܲûÊöÇå³þ)¡£ÕâÖÖlatchÊýÁ¿ÊÇͨ¹ý²ÎÊý_db_block_hash_latches À´¶¨ÒåµÄ£¬Ò»¸ölatch¶ÔÓ¦µÄ±£»¤Á˶à¸öbuckets¡£´Ó8i¿ªÊ¼£¬Õâ¸ö²ÎÊýµÄdefault¹æÔòΪ:

µ±cache buffers ÉÙÓÚ2052 buffers

_db_block_hash_latches  =  power(2,trunc(log(2, db_block_buffers - 4) - 1))

µ±cache buffers¶àÓÚ131075 buffers

_db_block_hash_latches  =  power(2,trunc(log(2, db_block_buffers - 4) - 6))

µ±cache buffersλÓÚ2052Óë131075 buffersÖ®¼ä

_db_block_hash_latches  =  1024

        ͨ¹ýÕâ¸ö¹æÔòÎÒÃÇ¿ÉÒÔ¿´³ö£¬Ò»¸ölatch´óÔ¼¿ÉÒÔά»¤128¸ö×óÓÒµÄbuffers¡£ÓÉÓÚlatchʹµÃ¶ÔblockµÄ²Ù×÷µÄ´®Ðл¯(9iÖÐÓиĽø£¬¶ÁÓë¶Á¿ÉÒÔ²¢ÐУ¬µ«¶ÁÓëд¡¢Ð´ÓëдÒÀȻҪ´®ÐÐ)£¬ºÜÏÔÈ»ÎÒÃÇ¿ÉÒÔÏëµ½Ò»¸öµÀÀí£¬Èç¹û´óÁ¿½ø³Ì¶ÔÏàͬµÄblock½ø³Ì½øÐвÙ×÷£¬±ØÈ»ÔÚÕâЩlatchÉÏÔì³É¾ºÕù£¬Ò²¾ÍÊÇ˵±ØÈ»ÐγÉlatchµÄµÈ´ý¡£ÕâÔÚºê¹ÛÉϾͱíÏÖΪϵͳ¼¶µÄµÈ´ý¡£Ã÷°×ÁËÕâЩԭÀí£¬ÎªÎÒÃÇÏÂÃæµÄÔÚÊý¾Ý¿âÖеÄÕï¶Ïµì¶¨ÁË»ù´¡¡£

ÈçºÎÈ·¶¨Èȵã¶ÔÏó

            Èç¹ûÎÒÃǾ­³£¹Ø×¢statspack±¨¸æ£¬»á·¢ÏÖÓÐʱºò³öÏÖcache buffer chainsµÄµÈ´ý¡£Õâ¸öcache buffer chains¾ÍÊÇ_db_block_hash_latchesËù¶¨ÒåµÄlatchµÄ×ܳƣ¬Í¨¹ý²éѯv$latchÒ²¿ÉµÃµ½£º

select">sys@OCN>select  latch#,name,gets,misses,sleeps from v$latch where name   like 'cache buffer%';

    LATCH# NAME                                 GETS     MISSES     SLEEPS
---------- ------------------------------ ---------- ---------- ----------
        93 cache buffers lru chain          54360446      21025        238
        98 cache buffers chains           6760354603    1680007      27085
        99 cache buffer handles               554532          6                   0

  ÔÚÕâ¸ö²éѯ½á¹ûÀïÎÒÃÇ¿ÉÒÔ¿´µ½¼Ç¼ÁËÊý¾Ý¿âÆô¶¯ÒÔÀ´µÄËùÓÐcahce buffer chainsµÄlatchµÄ×´¿ö£¬gets±íʾ×ܹ²ÓÐÕâô¶à´ÎÇëÇó£¬misses±íʾÇëÇóʧ°ÜµÄ´ÎÊý(¼ÓËø²»³É¹¦)£¬¶øsleeps ±íʾÇëÇóʧ°ÜÐÝÃߵĴÎÊý£¬Í¨¹ýsleepsÎÒÃÇ¿ÉÒÔ´óÌåÖªµÀÊý¾Ý¿âÖÐlatchµÄ¾ºÕùÊÇ·ñÑÏÖØ£¬ÕâÒ²¼ä½ÓµÄ±íÕ÷ÁËÈȵã¿éµÄÎÊÌâÊÇ·ñÑÏÖØ¡£ÓÉÓÚv$latchÊÇÒ»¸ö¾ÛºÏÐÅÏ¢£¬ÎÒÃDz¢²»ÄÜ»ñµÃÄÄЩ¿é¿ÉÄÜ´æÔÚÆµ·±·ÃÎÊ¡£ÄÇÎÒÃÇÒªÀ´¿´ÁíÒ»¸öviewÐÅÏ¢£¬ÄǾÍÊÇv$latch_children,v$latch_children.addr¼Ç¼µÄ¾ÍÊÇÕâ¸ölatchµÄµØÖ·¡£

select">sys@OCN>select addr,LATCH#,CHILD#,gets,misses,sleeps from v$latch_children
  2  where name = 'cache buffers chains'  and rownum < 21;

ADDR         LATCH#     CHILD#       GETS     MISSES     SLEEPS
-------- ---------- ---------- ---------- ---------- ----------
91B23B74         98       1024   10365583       3957         33
91B23374         98       1023    5458174        964         25
91B22B74         98       1022    4855668        868         15
91B22374         98       1021    5767706        923         22
91B21B74         98       1020    5607116        934         31
91B21374         98       1019    9389325       1111         25
91B20B74         98       1018    5060207        994         31
91B20374         98       1017   18204581       1145         18
91B1FB74         98       1016    7157081        920         23
91B1F374         98       1015    4660774        922         22
91B1EB74         98       1014    6954644        976         32
91B1E374         98       1013    4881891        970         19
91B1DB74         98       1012    5371135        971         28
91B1D374         98       1011    5154497        990         26
91B1CB74         98       1010    5013796        936         18
91B1C374         98       1009    5667446        939         25
91B1BB74         98       1008    4673421        883         14
91B1B374         98       1007    4589646        986         17
91B1AB74         98       1006   10380781       1020         20
91B1A374         98       1005    5142009       1110         19

20 rows selected.

µ½´ËÎÒÃÇ¿ÉÒÔ¸ù¾Ýv$latch_child.addr¹ØÁªµ½¶ÔÓ¦µÄx$bh.hladdr(ÕâÊÇbuffer headerÖмǼµÄµ±Ç°bufferËù´¦µÄlatchµØÖ·)£¬Í¨¹ýx$bh¿ÉÒÔ»ñµÃ¿éµÄÎļþ±àºÅºÍblock±àºÅ¡£

select">sys@OCN>select dbarfil,dbablk 
    from x$bh
   where hladdr in
    (select addr
    from (select addr
        from v$latch_children
        order by sleeps desc) 
          where rownum < 11);

   DBARFIL     DBABLK
---------- ----------
         4       6498
        40      14915
        15      65564
        28      34909
        40      17987
         1      24554
         8      21404
        39      29669
        28      46173
        28      48221

¡­¡­¡­¡­¡­¡­¡­¡­

      ÓÉ´ËÎÒÃǾʹòͨÁËcache buffers chainsºÍ¾ßÌåblockÖ®¼äµÄ¹ØÏµ£¬ÄÇÔÙ¼ÌÐøÏÂÀ´£¬ÖªµÀÁËblock£¬ÎÒÃÇÐèÒªÖªµÀ¾¿¾¹ÊÇÄÄЩsegment¡£Õâ¸ö¿ÉÒÔͨ¹ýdba_extentsÀ´»ñµÃ¡£

select distinct a.owner,a.segment_name from
dba_extents a,
(select dbarfil,dbablk
from x$bh
where hladdr in
    (select addr
    from (select addr
        from v$latch_children
        order by sleeps desc)
        where rownum < 11)) b
where a.RELATIVE_FNO = b.dbarfil
and a.BLOCK_ID <= b.dbablk and a.block_id + a.blocks > b.dbablk;


OWNER                          SEGMENT_NAME                   SEGMENT_TYPE
------------------------------ ------------------------------         ------------------
ALIBABA                        BIZ_SEARCHER                               TABLE
ALIBABA                        CMNTY_USER_MESSAGE             TABLE
ALIBABA                        CMNTY_VISITOR_INFO_PK          INDEX
ALIBABA                        COMPANY_AMID_IND                   INDEX
ALIBABA                        COMPANY_DRAFT                         TABLE
ALIBABA                        FEEDBACK_POST                           TABLE
ALIBABA                        IM_BLACKLIST_PK                         INDEX
ALIBABA                        IM_GROUP                                        TABLE
ALIBABA                        IM_GROUP_LID_IND                      INDEX
ALIBABA                        MEMBER                                           TABLE
ALIBABA                        MEMBER_PK                                    INDEX
ALIBABA                        MLOG$_SAMPLE                            TABLE

¡­¡­¡­¡­¡­¡­¡­¡­

  ÎÒÃÇ»¹ÓÐÁíÍâÒ»ÖÖ·½Ê½

   select object_name
from dba_objects
where data_object_id in
(select obj
from x$bh
where hladdr in
    (select addr
    from (select addr
        from v$latch_children
        order by sleeps desc)
        where rownum < 11)) ;


OBJECT_NAME
------------------------------------
I_CCOL2
RESOURCE_PLAN$
DUAL
FGA_LOG$
AV_TRANSACTION
COMPANY_DRAFT
MEMBER
SAMPLE
SAMPLE_GROUP
VERTICAL_COMPONENT
MEMBER_PK
SAMPLE_GROUP_PK
IM_BLACKLIST_PK
IM_CONTACT
IM_GROUP
CMNTY_USER_MESSAGE
CMNTY_VISITOR_INFO_PK
IM_OFFLINEMSG_TID_IND
OFFER
OFFER_PK
OFFER_EMAIL_IND
OFFER_DRAFT
CMNTY_USER_MESSAGE_TD_BSM_IND
CMNTY_MESSAGE_NUM_PK
BIZ_EXPRESS_MEMBER_ID_IND

¡­¡­¡­¡­¡­¡­¡­¡­

 

 

        µ½ÕâÀïÎÒÃÇ»ù±¾ÄÜÕÒµ½Èȵã¿é¶Ô¶ÔÓ¦µÄ¶ÔÏó¡£µ«Êµ¼ÊÉÏ»¹ÓÐÁíÍâÒ»¸ö;¾¶À´»ñÈ¡ÕâЩÐÅÏ¢£¬ÄǾÍÊǺÍx$bh.tch Ïà¹ØµÄÒ»ÖÖ·½·¨¡£¶ÔÓÚ8i¿ªÊ¼oracleÌṩÁ˽Ӵ¥µã(touch count)À´×÷ΪblockÊÇÀäÈȵıêÖ¾£¬ÔÚÒ»¶¨Ìõ¼þÂú×ãµÄÇé¿öÏÂblock±»½ø³Ì·ÃÎÊÒ»´Îtouch count Ôö¼ÓÒ»£¬µ½Ä³¸ö±ê×¼Ö®ºó±»Òƶ¯µ½LRUÈȶË(¹ØÓÚtouch count ÔÚÕâÀï²»×öÏêϸ½éÉÜ£¬ÄÇÓÖ½«ÊÇÒ»´óƪÎÄÕÂ)¡£ÄÇÔÚ¶Ìʱ¼äÄÚ´ÓijÖÖÒâÒåÉϽ²£¬touch count ´óµÄblock¿ÉÄܰµÊ¾×ÅÔÚµ±Ç°Ä³¸öÖÜÆÚÄÚ±»·ÃÎÊ´ÎÊý±È½Ï¶à¡£

select distinct a.owner,a.segment_name,a.segment_type from
dba_extents a,
(select dbarfil,dbablk
from (select dbarfil,dbablk
    from x$bh order by tch desc) where rownum < 11) b
where a.RELATIVE_FNO = b.dbarfil
and a.BLOCK_ID <= b.dbablk and a.block_id + a.blocks > b.dbablk;

OWNER                          SEGMENT_NAME                   SEGMENT_TYPE
------------------------------ ------------------------------         ------------------
ALIBABA                        CMNTY_USER_MESSAGE              TABLE
ALIBABA                        MEMBER_PK                                      INDEX
ALIBABA                        OFFER_DRAFT_GMDFY_IND          INDEX

ͬÉÏÃæÒ»Ñù»¹ÓÐÕâ¸ö·½·¨

select object_name
from dba_objects
where data_object_id in
(select obj
from (select obj
    from x$bh order by tch desc) where rownum < 11) ;
OBJECT_NAME
---------------------------------------------------
DUAL
MEMBER_PK
SAMPLE_GROUP_PK
CMNTY_USER_MESSAGE_TD_BSM_IND
OFFER_DRAFT_MID_GMDFY_IND
OFFER_MID_GPOST_IND
OFFER_DRAFT_PK
MEMBER_GLLOGIN_IND
OFFER_MID_STAT_GEXPIRE_IND
SAMPLE_MID_STAT_IND

10 rows selected.

 

        µ½ÕâÀÎÒÃÇѰÕÒÈȵã¿éºÍÈȵã¶ÔÏóµÄ¹¤×÷ËãÊÇÍê³ÉÁË£¬µ«ÎÒÃÇ»¹²¢Ã»Óнâ¾öÎÊÌâ¡£

 

ÈȵãÎÊÌâµÄ½â¾ö

           Èȵã¿éºÍÈȵã¶ÔÏóÎÒÃǶ¼ÕÒµ½ÁË£¬µ«ÊÇÎÒÃǸÃÔõôÀ´½â¾öÕâ¸öÎÊÌâÄØ£¿Ò»°ãÀ´Ëµ£¬Èȵã¿é»áµ¼ÖÂcache buffers chains¾ºÕùµÈ´ý£¬µ«²¢²»ÊÇ˵cache buffer chainsÒ»¶¨ÊÇÒòΪÈȵã¿é¶øÆð£¬ÔÚÌØ±ðÇé¿öÏÂÓпÉÄÜÊÇÒòΪlatchÊýÁ¿µÄÎÊÌâµ¼Öµģ¬Ò²¾ÍÊÇÒ»¸ölatch¹ÜÀíµÄbuffersÊýÁ¿Ì«¶à¶øµ¼Ö¾ºÕù¼¤ÁÒ¡£µ«ÊÇlatchÊýÁ¿ÎÒÃÇÒ»°ãÊDz»»áÇáÒ×È¥ÉèÖõģ¬ÕâÊÇoracleµÄÒþ²Ø²ÎÊý¡£

          ʵ¼ÊÉÏ×îÓÐЧµÄ°ì·¨£¬ÊÇ´ÓÓÅ»¯sqlÈëÊÖ£¬²»Á¼µÄsqlÍùÍù´øÀ´´óÁ¿µÄ²»±ØÒªµÄ·ÃÎÊ£¬ÕâÊÇÔì³ÉÈȵã¿éµÄ¸ùÔ´¡£±ÈÈç±¾¸Ãͨ¹ýÈ«±íɨÃèµÄ²éѯȴ×ßÁËË÷ÒýµÄrange scan£¬ÕâÑù½«´øÀ´´óÁ¿µÄ¶Ô¿éµÄÖØ¸´·ÃÎÊ¡£´Ó¶øÐγÉÈȵãÎÊÌâ¡£ÔÙ»òÕß±ÈÈç²»µ±µØ×ßÁËnested loopsµÄ±íÁ¬½Ó£¬Ò²¿ÉÄܶԷÇÇý¶¯±íÔì³É´óÁ¿µÄÖØ¸´·ÃÎÊ¡£ÄÇôÔÚÕâ¸öʱºò£¬ÎÒÃǵÄÄ¿±ê¾ÍÊÇÕÒ³öÕâЩsqlÀ´²¢³¢ÊÔÓÅ»¯¡£ÔÚstatspack±¨¸æÖУ¬¸ù¾Ý±¨¸æÖÐsqlÁÐ±í£¬ÎÒÃÇÈç¹ûÊÇͨ¹ýdba_extentsÈ·¶¨µÄÈȵã¶ÔÏó¶ø²»ÊÇͨ¹ýdba_objectsÈ·¶¨µÄ£¬Ôò¿ÉÒÔͨ¹ý²éÕÒ³öµÄÈȵãsegmentת»»Îª¶ÔÓ¦µÄ±í£¬¶ÔÓÚ·Ç·ÖÇøµÄË÷Òý£¬index_name¾ÍÊÇsegment_name,ͨ¹ýdba_indexesºÜÈÝÒ×µÄÕÒµ½¶ÔÓ¦µÄtable_name,¶ÔÓÚ·ÖÇø±íºÍ·ÖÇøË÷ÒýÒ²ÄÜͨ¹ýºÍdba_tab_partitionºÍdba_ind_partitionsÕÒµ½segmentºÍtableµÄ¶ÔÓ¦¹ØÏµ¡£Í¨¹ýÕâЩtableµ½statspack±¨¸æÖÐÈ¥ÕÒÏà¹ØµÄsql¡£

select sql_text
from stats$sqltext a,
(select distinct a.owner,a.segment_name,a.segment_type from
dba_extents a,
(select dbarfil,dbablk
from (select dbarfil,dbablk
    from x$bh order by tch desc) where rownum < 11) b
where a.RELATIVE_FNO = b.dbarfil
and a.BLOCK_ID <= b.dbablk and a.block_id + a.blocks > b.dbablk) b
where a.sql_text like '%'||b.segment_name||'%' and b.segment_type = 'TABLE'
order by  a.hash_value,a.address,a.piece;

SQL_TEXT
----------------------------------------------------------------
SELECT SEQ_SMS_TRANSACTION.nextval FROM DUAL
SELECT SEQ_BIZ_EXPRESS.nextval FROM DUAL
SELECT bizgroup.seq_grp_post.NextVal FROM DUAL
SELECT SEQ_SAMPLE.nextval FROM DUAL
SELECT bizgroup.seq_grp_user.NextVal FROM DUAL
SELECT SEQ_BIZ_SEARCHER.nextval FROM DUAL
SELECT SEQ_OFFER_DRAFT.nextval FROM DUAL
select seq_Company_Draft.NextVal from DUAL
SELECT SEQ_SAMPLE_GROUP.nextval FROM DUAL
SELECT SEQ_CMNTY_USER_MESSAGE.nextval FROM DUAL
SELECT SYSDATE FROM DUAL
select seq_News_Forum.NextVal from DUAL
SELECT SEQ_SMS_USER.nextval FROM DUAL
select seq_Biz_Member.NextVal from DUAL
select seq_Pymt_Managing.NextVal from DUAL
E= '+08:00' NLS_DUAL_CURRENCY = '$' NLS_TIME_FORMAT = 'HH.MI.SSX
SELECT SEQ_COMPANY_DRAFT.nextval FROM DUAL
SELECT 1 FROM DUAL
select seq_offer_draft.NextVal from DUAL
select seq_Biz_Express_Category.NextVal from DUAL

20 rows selected.

µ±È»ÕâÀïÊÇ´ÓstatspackËѼ¯µÄstats$sqltextÖÐÈ¥ÕÒµÄ(Äã¿ÉÒÔÔÚstatspackµÄÎı¾±¨¸æÖÐÈ¥ÕÒ)£¬Êµ¼ÊÉÏ£¬ÎÒÃÇ¿ÉÒÔÖ±½ÓÔÚµ±Ç°Êý¾Ý¿âÖеÄv$sqlarea»òÕßv$sqltextÀïÃæÈ¥ÕÒµ½ÕâЩsql£¬È»ºóÀ´³¢ÊÔÓÅ»¯¡£

select sql_text
from v$sqltext a,
(select distinct a.owner,a.segment_name,a.segment_type from
dba_extents a,
(select dbarfil,dbablk
from (select dbarfil,dbablk
    from x$bh order by tch desc) where rownum < 11) b
where a.RELATIVE_FNO = b.dbarfil
and a.BLOCK_ID <= b.dbablk and a.block_id + a.blocks > b.dbablk) b
where a.sql_text like '%'||b.segment_name||'%' and b.segment_type = 'TABLE'
order by  a.hash_value,a.address,a.piece;
SQL_TEXT
----------------------------------------------------------------
SELECT NULL FROM DUAL FOR UPDATE NOWAIT
SELECT SEQ_SMS_TRANSACTION.nextval FROM DUAL
SELECT SEQ_BIZ_EXPRESS.nextval FROM DUAL
SELECT SEQ_IM_GROUP.nextval FROM DUAL
SELECT SEQ_SAMPLE.nextval FROM DUAL
='DD-MON-RR HH.MI.SSXFF AM TZR' NLS_DUAL_CURRENCY='$' NLS_COMP='
SELECT SEQ_BIZ_SEARCHER.nextval FROM DUAL
SELECT SEQ_OFFER_DRAFT.nextval FROM DUAL
SELECT SEQ_SAMPLE_GROUP.nextval FROM DUAL
DD-MON-RR HH.MI.SSXFF AM TZR' NLS_DUAL_CURRENCY='$' NLS_COMP='BI
SELECT SEQ_CMNTY_USER_MESSAGE.nextval FROM DUAL
SELECT SYSDATE FROM DUAL
SELECT SEQ_SMS_USER.nextval FROM DUAL
IMESTAMP_TZ_FORMAT='DD-MON-RR HH.MI.SSXFF AM TZR' NLS_DUAL_CURRE
SELECT SEQ_COMPANY_DRAFT.nextval FROM DUAL
SELECT 1 FROM DUAL
SELECT USER FROM DUAL
SELECT DECODE('A','A','1','2') FROM DUAL

18 rows selected.

    ³ýÁËÓÅ»¯sqlÍ⣬µ±È»¶ÔÓÚÈȵãµÄ±í»òÕßË÷ÒýÀ´Ëµ£¬Èç¹ûСµÄ»°£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇcacheÔÚÄÚ´æÖУ¬ÕâÑù¿ÉÄܽµµÍÎïÀí¶ÁÌá¸ßsqlÔËÐÐËÙ¶È(Õâ²¢²»»á¼õÉÙcache buffer chainsµÄ·ÃÎÊ´ÎÊý)£¬¶ÔÓÚÐòÁУ¬ÎÒÃÇ¿ÉÒÔ¶ÔÐòÁжàÉèÖÃһЩcache¡£Èç¹ûÊDz¢ÐзþÎñÆ÷»·¾³ÖеÄË÷Òý¶ÔÏ󣬲¢ÇÒÕâ¸öË÷ÒýÊÇϵÁеÝÔöÀàÐÍ£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇ·´ÏòË÷Òý(¹ØÓÚ·´ÏòË÷ÒýÕâÀï¾Í²»¹ý¶àµØ×ö½éÉÜÁË)¡£

Èȵã¿éµÄÆäËûÏà¹ØÖ¢×´

        ÔÚÊý¾Ý¿âÖл¹¿ÉÄÜ´æÔÚһЩÆäËû·½ÃæµÄÈȵã¿éÖ¢×´£¬Í¨¹ýv$waitstatµÄµÈ´ý¿ÉÒÔ¿´³öһЩ¶ËÄß,v$waitstatÊǸù¾ÝÊý¾Ý»º³åÇøÖи÷ÖÖblockµÄÀàÐÍ(x$bh.class)¶ø·ÖÀàͳ¼ÆµÄµÈ´ý×´¿ö¡£

select">sys@OCN>select * from v$waitstat;

CLASS                   COUNT       TIME
------------------ ---------- ----------
data block            1726977     452542
sort block                  0          0
save undo block             0          0
segment header             40         11
save undo header            0          0
free list                   0          0
extent map                  0          0
1st level bmb             611        112
2nd level bmb              42         13
3rd level bmb               0          0
bitmap block                0          0
bitmap index block          0          0
file header block          13         92
unused                      0          0
system undo header        111         28
system undo block           7          0
undo header              2765        187
undo block                633        156

±ÈÈçÔÚASSM±í¿Õ¼ä³öÏÖ֮ǰ£¬ÓÉÓÚfreelistµÄ´æÔÚ£¬Èç¹û±í¾­³£±»²¢·¢µÄ½ø³ÌDML£¬Ôò¿ÉÄÜ´æÔÚ´óÁ¿µÄdata blockµÄµÈ´ý£¬»òÕßÓÐfree listµÄµÈ´ý¡£ÄÇôÕâ¸öʱºòÎÒÃÇ·¢ÏÖÕâÑùµÄsegmentÖ®ºóÐèÒª¿¼ÂÇÔö¼ÓfreelistÊýÁ¿¡£ÔÙ±ÈÈç¾­³£·¢Éú³¤Ê±¼äµÄDMLµÄ±í±»Æµ·±µØ·ÃÎÊ£¬ÕâÑù½«»áÔì³É¹ý¶àµÄ¶Ô»Ø¹ö¶ÎÖпéµÄ·ÃÎÊ£¬Õâʱ¿ÉÄÜundo  block µÄµÈ´ý»á±È½Ï¶à¡£ÄÇôÎÒÃÇ¿ÉÄÜÐèÒª¿ØÖÆDMLµÄʱ¼ä³¤¶È»òÕßÏë°ì·¨´ÓÓ¦ÓóÌÐòÈëÊÖÀ´½â¾öÎÊÌâ¡£Èç¹ûÊÇundo headerµÄµÈ´ý±È½Ï¶à£¬Ã»Ê¹ÓÃundo tablespace ֮ǰ£¬¿ÉÄÜÐèÒª¿¼ÂÇÔö¼Ó»Ø¹ö¶ÎµÄÊýÁ¿¡£

×ܽá

      ±¾ÎÄ´ÓÈȵã¿éµÄÔ­ÀíÈëÊÖ£¬ÏêϸµØÓÉoracleµÄÄÚ²¿½á¹¹ÌØÕ÷¿ªÊ¼½éÉÜÁËÈȵã¿éµÄ²úÉúºÍ±íÏÖÌØÕ÷¡£½ø¶ø²ûÊöÁËÕï¶ÏÈȵã¶ÔÏóºÍÕÒ³öÔì³ÉÈȵã¶ÔÏóµÄsqlµÄ·½·¨¡£²¢´Ó½â¾öÈȵãÎÊÌâ·½ÃæÌṩÁ˽â¾ö·½Ïò¡£

Ç×£¬Äú»¹Ã»ÓеǼ,Çë[µÇ¼]»ò[×¢²á]ºóÔÙ½øÐÐÆÀÂÛ