数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
关于shared pool的深入探讨(三)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

link:

http://www.eygle.com/internal/shared_pool-3.htm    

 

 

基本命令:

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中的情况:

参考文件: hsjf_ora_15800.trc


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管理的效率大大提高.




相关文章

相关软件