oracle11 share pool,关于shared pool的深入探讨(三)

基本命令:

ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level LL';

其中LL代表Level级别,对于9.2.0及以后版本,不同Level含义如下:

Level =1 ,转储Library cache统计信息

Level =2 ,转储hash table概要

Level =4 ,转储Library cache对象,只包含基本信息

Level =8 ,转储Library cache对象,包含详细信息(包括child references,pin waiters等)

Level =16,增加heap sizes信息

Level =32,增加heap信息

Library cache由一个hash表组成,而hash表是一个由hash buckets组成的数组.

每个hash bucket都是包含library cache handle的一个双向链表。

Library Cache Handle指向Library Cache Object和一个引用列表.

library cache对象进一步分为:依赖表、子表和授权表等

我们看一下library cache的结构:

通过

ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level 4'

获得以下输出(这部分信息来自Oracle8i,Trace文件可以从www.eygle.com上找到)点击这里下载: hsbi_ora_4614.trc

第一部分(等价于Level 1):

LIBRARY CACHE STATISTICS:

gets hit ratio pins hit ratio reloads invalids namespace

---------- --------- ---------- --------- ---------- ---------- ---------

619658171 0.9999160 2193292112 0.9999511 9404 380 CRSR

79698558 0.9998832 424614847 0.9999108 13589 0 TABL/PRCD/TYPE

163399 0.9979926 163402 0.9978948 16 0 BODY/TYBD

0 0.0000000 0 0.0000000 0 0 TRGR

34 0.0294118 35 0.0571429 0 0 INDX

18948 0.9968862 24488 0.9953855 0 0 CLST

0 0.0000000 0 0.0000000 0 0 OBJE

0 0.0000000 0 0.0000000 0 0 PIPE

0 0.0000000 0 0.0000000 0 0 LOB

0 0.0000000 0 0.0000000 0 0 DIR

0 0.0000000 0 0.0000000 0 0 QUEU

0 0.0000000 0 0.0000000 0 0 OBJG

0 0.0000000 0 0.0000000 0 0 PROP

0 0.0000000 0 0.0000000 0 0 JVSC

0 0.0000000 0 0.0000000 0 0 JVRE

0 0.0000000 0 0.0000000 0 0 ROBJ

0 0.0000000 0 0.0000000 0 0 REIP

0 0.0000000 0 0.0000000 0 0 CPOB

115071 0.9992179 115071 0.9930999 704 0 EVNT

0 0.0000000 0 0.0000000 0 0 SUMM

0 0.0000000 0 0.0000000 0 0 DIMN

0 0.0000000 0 0.0000000 0 0 CTX

0 0.0000000 0 0.0000000 0 0 OUTL

0 0.0000000 0 0.0000000 0 0 RULS

0 0.0000000 0 0.0000000 0 0 RMGR

0 0.0000000 0 0.0000000 0 0 UNUSED

0 0.0000000 0 0.0000000 0 0 PPLN

0 0.0000000 0 0.0000000 0 0 PCLS

0 0.0000000 0 0.0000000 0 0 SUBS

0 0.0000000 0 0.0000000 0 0 LOCS

0 0.0000000 0 0.0000000 0 0 RMOB

0 0.0000000 0 0.0000000 0 0 RSMD

699654181 0.9999117 2618209955 0.9999440 23713 380 CUMULATIVE

这部分信息也就是v$librarycache中显示的.

第二部分(等价于Level 2中的输出):

LIBRARY CACHE HASH TABLE: size=509 count=354

BUCKET 0:

BUCKET 1:

BUCKET 2: *

BUCKET 3:

BUCKET 4:

BUCKET 5: *

BUCKET 6: *

BUCKET 7:

BUCKET 8: **

BUCKET 9: ***

BUCKET 10: *

BUCKET 11: *

BUCKET 12: ***

BUCKET 13: *

BUCKET 14: *

BUCKET 15:

BUCKET 16: *

BUCKET 17:

BUCKET 18: *

BUCKET 19:

BUCKET 20:

BUCKET 21: *

BUCKET 22:

BUCKET 23:

BUCKET 24: *

BUCKET 25:

BUCKET 26:

BUCKET 27: ***

BUCKET 28:

BUCKET 29: **

BUCKET 30:

BUCKET 31:

BUCKET 32: ***

BUCKET 33: *

BUCKET 34:

BUCKET 35:

BUCKET 36: **

BUCKET 37:

BUCKET 38: **

BUCKET 39: *

BUCKET 40: *

BUCKET 41:

BUCKET 42:

BUCKET 43:

BUCKET 44:

BUCKET 45:

BUCKET 46: ****

BUCKET 47:

BUCKET 48:

BUCKET 49: *

BUCKET 50: *

BUCKET 51:

BUCKET 52: ***

BUCKET 53: **

BUCKET 54:

BUCKET 55: *

BUCKET 56:

BUCKET 57:

BUCKET 58:

BUCKET 59: *

BUCKET 60: **

BUCKET 61:

BUCKET 62: *

BUCKET 63:

BUCKET 64: *

BUCKET 65:

BUCKET 66:

BUCKET 67: *

BUCKET 68:

BUCKET 69: **

BUCKET 70:

BUCKET 71:

BUCKET 72: *

BUCKET 73:

BUCKET 74:

BUCKET 75: *

BUCKET 76: **

BUCKET 77:

BUCKET 78: ****

BUCKET 79:

BUCKET 80: *

BUCKET 81: *

BUCKET 82:

BUCKET 83: **

BUCKET 84: *

BUCKET 85:

BUCKET 86:

BUCKET 87:

BUCKET 88:

BUCKET 89: *

BUCKET 90: *

BUCKET 91:

BUCKET 92: *

BUCKET 93: *

BUCKET 94: *

BUCKET 95:

BUCKET 96: *

BUCKET 97:

BUCKET 98:

BUCKET 99: ***

BUCKET 100: *

BUCKET 101:

BUCKET 102: *

BUCKET 103:

BUCKET 104: *

BUCKET 105:

BUCKET 106:

BUCKET 107: ****

BUCKET 108:

BUCKET 109:

BUCKET 110:

BUCKET 111: *

BUCKET 112: **

BUCKET 113:

BUCKET 114:

BUCKET 115:

BUCKET 116: *

BUCKET 117:

BUCKET 118: *****

BUCKET 119:

BUCKET 120: *

BUCKET 121:

BUCKET 122:

BUCKET 123:

BUCKET 124:

BUCKET 125: *

BUCKET 126:

BUCKET 127:

BUCKET 128: *

BUCKET 129:

BUCKET 130: *

BUCKET 131: *

BUCKET 132:

BUCKET 133:

BUCKET 134:

BUCKET 135: *

BUCKET 136:

BUCKET 137:

BUCKET 138:

BUCKET 139: *

BUCKET 140: *

BUCKET 141: *

BUCKET 142:

BUCKET 143: *

BUCKET 144:

BUCKET 145: ***

BUCKET 146:

BUCKET 147: *

BUCKET 148:

BUCKET 149:

BUCKET 150: **

BUCKET 151:

BUCKET 152:

BUCKET 153: *

BUCKET 154:

BUCKET 155:

BUCKET 156:

BUCKET 157:

BUCKET 158:

BUCKET 159:

BUCKET 160:

BUCKET 161:

BUCKET 162:

BUCKET 163:

BUCKET 164: *

BUCKET 165: *

BUCKET 166:

BUCKET 167:

BUCKET 168:

BUCKET 169:

BUCKET 170: **

BUCKET 171:

BUCKET 172: *

BUCKET 173:

BUCKET 174:

BUCKET 175: *

BUCKET 176: *

BUCKET 177:

BUCKET 178:

BUCKET 179:

BUCKET 180:

BUCKET 181: *

BUCKET 182:

BUCKET 183:

BUCKET 184:

BUCKET 185: *

BUCKET 186:

BUCKET 187:

BUCKET 188: **

BUCKET 189:

BUCKET 190: *

BUCKET 191: *

BUCKET 192:

BUCKET 193:

BUCKET 194: *

BUCKET 195: **

BUCKET 196: *

BUCKET 197: **

BUCKET 198: ****

BUCKET 199: *

BUCKET 200: *

BUCKET 201: *

BUCKET 202: **

BUCKET 203:

BUCKET 204:

BUCKET 205: **

BUCKET 206:

BUCKET 207:

BUCKET 208: *

BUCKET 209: **

BUCKET 210:

BUCKET 211: *

BUCKET 212: *

BUCKET 213: *

BUCKET 214:

BUCKET 215:

BUCKET 216:

BUCKET 217: *

BUCKET 218: *

BUCKET 219:

BUCKET 220:

BUCKET 221: *

BUCKET 222:

BUCKET 223: *

BUCKET 224:

BUCKET 225:

BUCKET 226: *

BUCKET 227:

BUCKET 228: *

BUCKET 229: **

BUCKET 230: *

BUCKET 231:

BUCKET 232: **

BUCKET 233:

BUCKET 234: *

BUCKET 235: *

BUCKET 236:

BUCKET 237:

BUCKET 238: *

BUCKET 239:

BUCKET 240: **

BUCKET 241: **

BUCKET 242: **

BUCKET 243: ***

BUCKET 244:

BUCKET 245: *

BUCKET 246:

BUCKET 247:

BUCKET 248: **

BUCKET 249:

BUCKET 250:

BUCKET 251: **

BUCKET 252:

BUCKET 253: *

BUCKET 254: *

BUCKET 255:

BUCKET 256:

BUCKET 257: **

BUCKET 258: *

BUCKET 259:

BUCKET 260:

BUCKET 261: *

BUCKET 262: **

BUCKET 263: ***

BUCKET 264:

BUCKET 265: *

BUCKET 266:

BUCKET 267: *

BUCKET 268: *

BUCKET 269:

BUCKET 270:

BUCKET 271: **

BUCKET 272: *

BUCKET 273:

BUCKET 274: *

BUCKET 275: *

BUCKET 276: **

BUCKET 277:

BUCKET 278:

BUCKET 279:

BUCKET 280:

BUCKET 281: **

BUCKET 282: *

BUCKET 283: *

BUCKET 284: *

BUCKET 285: *

BUCKET 286:

BUCKET 287: *

BUCKET 288:

BUCKET 289:

BUCKET 290: **

BUCKET 291:

BUCKET 292: *

BUCKET 293:

BUCKET 294: *

BUCKET 295:

BUCKET 296: *

BUCKET 297:

BUCKET 298:

BUCKET 299: **

BUCKET 300: *

BUCKET 301:

BUCKET 302: *

BUCKET 303: *

BUCKET 304: **

BUCKET 305: **

BUCKET 306:

BUCKET 307:

BUCKET 308: *

BUCKET 309:

BUCKET 310:

BUCKET 311: **

BUCKET 312: *

BUCKET 313:

BUCKET 314: *

BUCKET 315:

BUCKET 316:

BUCKET 317:

BUCKET 318:

BUCKET 319: ***

BUCKET 320: *

BUCKET 321: **

BUCKET 322: **

BUCKET 323:

BUCKET 324: *

BUCKET 325:

BUCKET 326: *

BUCKET 327: *

BUCKET 328: **

BUCKET 329:

BUCKET 330: *

BUCKET 331:

BUCKET 332:

BUCKET 333: *

BUCKET 334: *

BUCKET 335: ***

BUCKET 336: *

BUCKET 337: **

BUCKET 338: *

BUCKET 339: *

BUCKET 340:

BUCKET 341: *

BUCKET 342: *

BUCKET 343: **

BUCKET 344:

BUCKET 345:

BUCKET 346:

BUCKET 347: *

BUCKET 348:

BUCKET 349: ***

BUCKET 350: *

BUCKET 351:

BUCKET 352:

BUCKET 353:

BUCKET 354: *

BUCKET 355: **

BUCKET 356:

BUCKET 357:

BUCKET 358: **

BUCKET 359: *

BUCKET 360: *

BUCKET 361: **

BUCKET 362:

BUCKET 363:

BUCKET 364: *

BUCKET 365: *

BUCKET 366: **

BUCKET 367: *

BUCKET 368:

BUCKET 369: *

BUCKET 370:

BUCKET 371: ***

BUCKET 372:

BUCKET 373: *

BUCKET 374:

BUCKET 375:

BUCKET 376: *

BUCKET 377:

BUCKET 378:

BUCKET 379:

BUCKET 380:

BUCKET 381:

BUCKET 382:

BUCKET 383: **

BUCKET 384:

BUCKET 385:

BUCKET 386:

BUCKET 387: ***

BUCKET 388: *

BUCKET 389:

BUCKET 390:

BUCKET 391:

BUCKET 392:

BUCKET 393: *

BUCKET 394: *

BUCKET 395: *

BUCKET 396:

BUCKET 397:

BUCKET 398:

BUCKET 399:

BUCKET 400: **

BUCKET 401:

BUCKET 402:

BUCKET 403:

BUCKET 404:

BUCKET 405:

BUCKET 406:

BUCKET 407: *

BUCKET 408: *

BUCKET 409: *

BUCKET 410:

BUCKET 411: *

BUCKET 412:

BUCKET 413:

BUCKET 414:

BUCKET 415:

BUCKET 416: *

BUCKET 417:

BUCKET 418: *

BUCKET 419:

BUCKET 420: **

BUCKET 421: *

BUCKET 422:

BUCKET 423: **

BUCKET 424: ***

BUCKET 425:

BUCKET 426: *

BUCKET 427: *

BUCKET 428: **

BUCKET 429:

BUCKET 430:

BUCKET 431:

BUCKET 432:

BUCKET 433: *

BUCKET 434:

BUCKET 435: **

BUCKET 436: *

BUCKET 437: *

BUCKET 438:

BUCKET 439: *

BUCKET 440:

BUCKET 441:

BUCKET 442:

BUCKET 443: *

BUCKET 444:

BUCKET 445: *

BUCKET 446:

BUCKET 447: *

BUCKET 448:

BUCKET 449: *

BUCKET 450:

BUCKET 451:

BUCKET 452: *

BUCKET 453: *

BUCKET 454: *

BUCKET 455:

BUCKET 456:

BUCKET 457:

BUCKET 458: *

BUCKET 459: **

BUCKET 460:

BUCKET 461: **

BUCKET 462: *

BUCKET 463:

BUCKET 464: *

BUCKET 465: *

BUCKET 466:

BUCKET 467:

BUCKET 468:

BUCKET 469: *

BUCKET 470: *

BUCKET 471:

BUCKET 472: **

BUCKET 473: **

BUCKET 474:

BUCKET 475:

BUCKET 476:

BUCKET 477: *

BUCKET 478:

BUCKET 479: *

BUCKET 480: *

BUCKET 481: ***

BUCKET 482: **

BUCKET 483:

BUCKET 484:

BUCKET 485: **

BUCKET 486: **

BUCKET 487:

BUCKET 488: *

BUCKET 489: *

BUCKET 490:

BUCKET 491: **

BUCKET 492: *

BUCKET 493:

BUCKET 494:

BUCKET 495: *

BUCKET 496:

BUCKET 497:

BUCKET 498:

BUCKET 499:

BUCKET 500: ***

BUCKET 501:

BUCKET 502: *

BUCKET 503: *

BUCKET 504: *

BUCKET 505:

BUCKET 506: *

BUCKET 507:

BUCKET 508:

BUCKET 509:

BUCKET 510:

BUCKET 511:

在Oracle8i中,Oracle以一个很长的LIBRARY CACHE HASH TABLE来记录Library Cache的使用情况

"*"代表该Bucket中包含的对象的个数

在以上输出中我们看到Bucket 198中包含四个对象.

我们在第三部分中可以找到bucket 198:

BUCKET 198:

LIBRARY OBJECT HANDLE: handle=2c2b4ac4

name=

SELECT a.statement_id, a.timestamp, a.remarks, a.operation, a.options,

a.object_node, a.object_owner, a.object_name, a.object_instance,

a.object_type, a.optimizer, a.search_columns, a.id, a.parent_id,

a.position, a.cost, a.cardinality, a.bytes, a.other_tag,

a.partition_start, a.partition_stop, a.partition_id, a.other,

a.distribution

, ROWID

FROM plan_table a

hash=60dd47a1 timestamp=08-27-2004 10:19:28

namespace=CRSR flags=RON/TIM/PN0/LRG/[10010001]

kkkk-dddd-llll=0000-0001-0001 lock=0 pin=0 latch=0

lwt=2c2b4adc[2c2b4adc,2c2b4adc] ltm=2c2b4ae4[2c2b4ae4,2c2b4ae4]

pwt=2c2b4af4[2c2b4af4,2c2b4af4] ptm=2c2b4b4c[2c2b4b4c,2c2b4b4c]

ref=2c2b4acc[2c2b4acc,2c2b4acc]

LIBRARY OBJECT: object=2c0b1430

type=CRSR flags=EXS[0001] pflags= [00] status=VALD load=0

CHILDREN: size=16

child# table reference handle

------ -------- --------- --------

0 2c0b15ec 2c0b15b4 2c2c0d50

DATA BLOCKS:

data# heap pointer status pins change

----- -------- -------- ------ ---- ------

0 2c362290 2c0b14b4 I/-/A 0 NONE

LIBRARY OBJECT HANDLE: handle=2c3675d4

name=SYS.DBMS_STANDARD

hash=50748ddb timestamp=NULL

namespace=BODY/TYBD flags=TIM/SML/[02000000]

kkkk-dddd-llll=0000-0011-0011 lock=0 pin=0 latch=0

lwt=2c3675ec[2c3675ec,2c3675ec] ltm=2c3675f4[2c3675f4,2c3675f4]

pwt=2c367604[2c367604,2c367604] ptm=2c36765c[2c36765c,2c36765c]

ref=2c3675dc[2c3675dc,2c3675dc]

LIBRARY OBJECT: object=2c1528e8

flags=NEX[0002] pflags= [00] status=VALD load=0

DATA BLOCKS:

data# heap pointer status pins change

----- -------- -------- ------ ---- ------

0 2c367564 2c1529cc I/-/A 0 NONE

4 2c15297c 0 -/P/- 0 NONE

LIBRARY OBJECT HANDLE: handle=2c347dd8

name=select pos#,intcol#,col#,spare1 from icol$ where obj#=:1

hash=fa15ebe3 timestamp=07-28-2004 18:04:43

namespace=CRSR flags=RON/TIM/PN0/SML/[12010000]

kkkk-dddd-llll=0000-0001-0001 lock=0 pin=0 latch=0

lwt=2c347df0[2c347df0,2c347df0] ltm=2c347df8[2c347df8,2c347df8]

pwt=2c347e08[2c347e08,2c347e08] ptm=2c347e60[2c347e60,2c347e60]

ref=2c347de0[2c347de0,2c347de0]

LIBRARY OBJECT: object=2c1cd1a0

type=CRSR flags=EXS[0001] pflags= [00] status=VALD load=0

CHILDREN: size=16

child# table reference handle

------ -------- --------- --------

0 2c1cd35c 2c1cd324 2c281678

1 2c1cd35c 2c352c50 2c0eeb8c

2 2c1cd35c 2c352c6c 2c2bb05c

DATA BLOCKS:

data# heap pointer status pins change

----- -------- -------- ------ ---- ------

0 2c2e8c58 2c1cd224 I/-/A 0 NONE

LIBRARY OBJECT HANDLE: handle=2c3a6484

name=SYS.TS$

hash=bb42852e timestamp=04-24-2002 00:04:15

namespace=TABL/PRCD/TYPE flags=PKP/TIM/KEP/SML/[02900000]

kkkk-dddd-llll=0111-0111-0119 lock=0 pin=0 latch=0

lwt=2c3a649c[2c3a649c,2c3a649c] ltm=2c3a64a4[2c3a64a4,2c3a64a4]

pwt=2c3a64b4[2c3a64b4,2c3a64b4] ptm=2c3a650c[2c3a650c,2c3a650c]

ref=2c3a648c[2c0d4b14,2c09353c]

LIBRARY OBJECT: object=2c3a626c

type=TABL flags=EXS/LOC[0005] pflags= [00] status=VALD load=0

DATA BLOCKS:

data# heap pointer status pins change

----- -------- -------- ------ ---- ------

0 2c3a8ea4 2c3a63b0 I/P/A 0 NONE

3 2c3a5828 0 -/P/- 0 NONE

4 2c3a6300 2c3a5960 I/P/A 0 NONE

8 2c3a6360 2c3a4f00 I/P/A 0 NONE

我们看到这里包含了四个对象.

我们再来看看Oracle9i中的情况:

LIBRARY CACHE HASH TABLE: size=131072 count=217

Buckets with more than 20 objects:

NONE

Hash Chain Size Number of Buckets

--------------- -----------------

0 130855

1 217

2 0

3 0

4 0

5 0

6 0

7 0

8 0

9 0

10 0

11 0

12 0

13 0

14 0

15 0

16 0

17 0

18 0

19 0

20 0

>20 0

Oracle9i中通过新的方式记录Library Cache的使用状况.

按不同的Hash Chain Size代表Library Cache中包含不同对象的个数.

0表示Free的Bucket,>20表示包含超过20个对象的Bucket的个数.

从以上列表中我们看到,包含一个对象的Buckets有217个,包含0个对象的Buckets有130855个.

我们来验证一下:

[oracle@jumper udump]$ cat hsjf_ora_15800.trc |grep BUCKET|more

BUCKET 12:

BUCKET 12 total object count=1

BUCKET 385:

BUCKET 385 total object count=1

BUCKET 865:

BUCKET 865 total object count=1

...

[oracle@jumper udump]$ cat hsjf_ora_15800.trc |grep BUCKET|wc -l

434

[oracle@jumper udump]$

434/2 = 217,证实了我们的猜想.

通过HASH TABLE算法的改进,Oracle Library Cache管理的效率大大提高.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值