You are on page 1of 67

Oracle Buffer Cache

Internals
BY
SUNDAR

Agenda

Buffer Cache Management concept


Hash Algorithm
Cache buffers chains Latch
Hash buckets
Cache/hash chain
Block Header
Buffer Cache
Working sets Lists
Cache buffer lru Latch
Touch count
Examples

Data buffer cache

SQL >

Buffer cache

I need file 29, block 13


is it already in the cache?
1GB

Black Box

13:12:38 SQL>
SQL> select
select ** from
from test1
test1
13:12:38
where id=100;
id=100;
where
ID DESC1
DESC1
ID
---------- ---------------------------100 BUFFER1
BUFFER1
100
Elapsed: 00:00:00.00
00:00:00.00
Elapsed:
13:12:38 SQL>
SQL>
13:12:38

DBWR

PROCESS

Oracle Kernel Function Names

Oracle rdbms Kernel

SQL >
OCI

Oracle Call Interface

UPI

User Program Interface

Net connection

DEFAULT
KEEP, RECYCLE
2K, 4K, 8K, 16K and 32K

RPI

Recursive Program Interface

KA

Access Layer

KD

Data Layer

KT

Transaction Layer

KC

Cache Layer

KS

Services Layer

KJ

Lock Management Layer

KG

Generic Layer

Operating System Dependencies

Real world
problems

Concept
Delivery Management system

Storage area
Delivery person

Delivery Addr

Storage Unit

Delivery person
Storage area
Storage Unit #
Delivery address

Delivery Management system

Storage area

Street/gate

15

16

21

Delivery Addr

14

00
Delivery person

Security

Location # 1
Location # 2

13

17

12

22

30
Location # 3

24

Unit #

25

29

23

Location # 4
Location # 5

11

18

27
28

10

19

20

26

Location # 6
Location # 7
Location # n

Unique Item

Delivery Management system

Delivery person

Storage area

Security # Street #

15

16

21

Delivery Addr

14

Location # 2

13

17

12

22

30
Location # 3

1
24

25

29

23

Location # 4
Location # 5

11

18

27
28

3
10

Location # 1

19

20

26

Location # 6
Location # 7
Location # n

Hash Algorithm
Chains
1

H
A
S
H

10

11

12

13

14

15

14

21

28

35

42

49

56

63

70

77

84

91

98

15

22

29

36

43

50

57

64

71

78

85

92

99

16

23

30

37

44

51

58

65

72

79

86

93

100

10

17

24

31

38

45

52

59

66

73

80

87

94

11

18

25

32

39

46

53

60

67

74

81

88

95

12

19

26

33

40

47

54

61

68

75

82

89

96

13

20

27

34

41

48

55

62

69

76

83

90

97

5
6

MOD ( 10, 7) = 3

MOD ( 100, 7) = 2

Delivery Management system

Delivery person

Security #

Storage area

Street #

Mod ( Storage area # / 5 )

10

15

20

Delivery Addr.

25

30

Location # 1
Location # 2

11

16

21

26
Location # 3

1
2

Hash
mod ( 28 / 5 ) = 3

12

17

22

27

Location # 5

13

18

23

28
28

3
4

Location # 4

14

19

24

29

Location # 6
Location # 7
Location # n

Security Log

Street# Total
Total
/Gate # People
People
visited waited

Total
Time
people
Waited
Imm Get

3242

44

3201

3344

5486

88

5440

876

658

65

600

8760

899

321

500

979

6783

78

156

42

Buffer Cache

Real world to Oracle world

Delivery person

Process

Security

Cache buffer
Chains latch

Street/gate #

Hash table /
Bucket #

Storage area

Hash chain(BH)

Storage Unit #

DBA # + Classes #

Delivery Addr.

Data Block Loc

Security Logs

v$latch_children

Building Hash Bucket


Oracle rdbms
PROCESS

PROCESS # n
PROCESS # n

Delivery person

Cache buffer
Chains latch

Hash table /
Bucket #

Hash chain

Buffer_cache

Latch #

Security

Street #

Storage area

Delivery Addr

Location # 1

Location # 2

2
Delivery Management system

Location # 3
Location # n

dba / Classes

File
Space
Header

L1
BMB

L2
BMB

Data
Segment
header

DBA
buffertsn:
tsn:44
Block header
buffer
rdba:0x0740000d
0x0740000d(29/13)
(29/13)
rdba:
scn:0x0000.00054ec3
0x0000.00054ec3seq:
seq:0x03
0x03
scn:
flg:0x02
0x02tail:
tail:0x4ec30603
0x4ec30603
flg:
frmt:0x02
0x02chkval:
chkval:0x0000
0x0000
frmt:
type:0x06=trans
0x06=transdata
data
type:

data

Classes
Class

Description

1 Data block
2 Sort block
3 Save undo block
4 Segment header
5 Save undo header

Building Hash Bucket

Server
processes

Cache buffer
Chains latch

Latch # 1

PROCESS #1

PROCESS #2

Latch # 2

Hash table /
Bucket #

0
1
2
3
4
5

Buffer cache

Hash chain

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

PROCESS #3

Latch # n

BH = Block Header

Building Hash Bucket

Cache buffer
Chains latch

PROCESS #1

PROCESS #2

PROCESS #3

Hash chain

Hash table

BH

BH

BH

BH

BH

BH

BH

BH

Latch # 1

Block Address

Buffer_cache

BH

Building Hash Bucket

Hash table

Hash chain

Buffer cache

PROCESS #1

DBA + Class

hash

Latch # 1

BH

BH

BH

BH

BH

BH

PROCESS

Reading a block

Reading a block

Getshash
hashchain
chainlatch
latch
Gets
walksalong,
along,does
doesnot
notfind
findcopy
copyof
of block
block 29.13(file_id,block#)
29.13(file_id,block#)
walks
getscache
cachebuffers
bufferslru
lruchain(LRU)
chain(LRU)latch
latch
gets
walksAUX
AUXlist,
list,finds
findsempty
emptybuffer
buffer
walks
Insertfree
freebuffer
bufferin
inthe
themiddle
middleof
ofthe
theLRU
LRU--MAIN
MAINlist
list
Insert
Addthat
thatheader
headerto
tohash
hash((BH
BH))
Add
Readthe
theblock
blockto
tomemory
memory(buffer
(buffercache
cache))
Read
Releaselatches
latches
Release

Reading a block
SQL >

rdba: 0x0740000d (29/13) class: 1

Hash table

Hash chain

PROCESS #1

DBA + Class

hash

Latch # 1

BH

BH

BH

BH

BH

Oops!!

BH

Cache buffers lru chains


Cache buffers lru chains

REPL/LRU
PROCESS

LRU #

LRU-W

LRU - Least Recently Used

DBWR

LRU Lists
Buffer Headers are Linked one of the List
BH

BH

BH

BH

BH

BH

1. Dirty Buffer
2. Pinned Buffer
3. Free Buffer

LRU
LRU
LRU
Working Set

replacementlist
list
--replacement

LRU-W--write
writelist
list
LRU-W
LRU-W

REPL/LRU
LRU-W

DBWR

LRU-XO
LRU-XR
LRU-REQ

disk

Main and Auxiliary Lists


Each LRU contains
Mainlist
list
Main
pinned/ /dirty
dirtybuffers
buffers
--pinned
Auxiliarylist
list
Auxiliary
EmptyBuffers
Buffers
--Empty

Sets # 1
Hot End
MAIN

REPL/LRU

AUX

MAIN

LRU-W

AUX

Cold End

Working Sets

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

Sets # 1

Sets # 2

Sets # n

Reading a block
rdba: 0x0740000d (29/13) class: 1
Hash table

Hash chain

PROCESS #1

DBA + Class

hash

Latch # 1

BH

BH

BH

BH

BH

BH

BH

Midpoint Insertion

LRU List
Hot End
LRU # 1

Cold End

MAIN
AUX

Free Blocks

Reading a block
rdba: 0x0740000d (29/13) class: 1
Hash table

Buffer cache

Hash chain

PROCESS #1

DBA + Class

Latch # 1

hash

BH

BH

BH

BH

BH

BH

BH

Midpoint Insertion

Working sets
Hot End
LRU # 1

PROCESS #1

Cold End

MAIN
AUX

Free Blocks

disk

Reading a block
rdba: 0x0740000d (29/13) class: 1

Hash table

Hash chain

PROCESS #1

DBA + Class

hash

Latch # 1

BH

BH

BH

BH

BH

BH

BH

Found!!!

Buffer Header ( BH )
Hash chain

Memory
BH

BH

BH

BH

BH

09FA00000

0000A206

09FA2BFF0

2F06C203

BH

8K
CHAIN: 16652 : BH (0x9ffcb018)

HEAD
[9ffcb018,9ffcb018]
HEAD
:: [9ffcb018,9ffcb018]
file#Block: (29/13)
(29/13)
file#Block:
class
class
:: 11
block loc
loc :: 0x9fa00000
0x9fa00000
block
status
XCURRENT
status
:: XCURRENT
obj
17918
obj
:: 17918
Flags
only_sequential_access
Flags
:: only_sequential_access
lru
[9ffcb1a8,9ffcaf88]
lru
:: [9ffcb1a8,9ffcaf88]

Little bit about


Touch count
Block
#
Touch
count #

Single-Block Reads

Cold End

Hot End
MAIN

AUX

20

12

67

28

11

10

77

51

12

22

Read block 5
5

Update block
Midpoint Insertion

1
MAIN

20

12

67

28

11

10

Single-Block Reads

Cold End

Hot End
MAIN

AUX

20

12

67

28

11

10

77

51

12

22

Read block 12
Increment touch count

MAIN

20

12

67

28

11

10

Block movement

Cold End

Hot End
MAIN

20

12

67

28

11

10

DBWR

AUX

MAIN

PROCESS

77

51

12

22

11

20

12

67

28

10

Multi-Block Reads

DB_FILE_MULTIBLOCK_READ_COUNT = 8

Cold End

Hot End

11 12 13 14 15 16 17 18 19 20 01 02 03 04 05 06 07 08
Read block 40- 47
Update block

40 41 42 43 44 45 46 47
Midpoint Insertion

11 12 13 14 15 16 17 18 19 47 46 45 44 43 42 41 40 20

Buffer Cache Black Box

Latch # 1

Latch # 2

Latch # n

Cache buffer
LRU latch
LRU # 1

0
1
2
3
n

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

BH

Black
BH Box
BH

BH

BH

Working sets

Hot End

Buffer cache

Cold End

Set # 1

Set # 2
DBWR
LRU # N

Set # n

Buffer Cache
Example 1

Oracle SGA

SQL> show sga


Total System Global Area 1979711488 bytes
Fixed Size
2085000 bytes
Variable Size
889196408 bytes
Database Buffers
1073741824 bytes
Redo Buffers
14688256 bytes

Create tablespace buffertest DATAFILE


'/mnt/poc/ETLTEST/buffertest_01.dbf' size 5M autoextend on extent
management local SEGMENT SPACE MANAGEMENT AUTO;

Data Input

SQL > Create table test1 (id number, desc1 varchar2(10) ) tablespace buffertest ;

SQL> select object_id,object_name from dba_objects


where object_name='TEST1
OBJECT_ID OBJECT_NAM
---------- ---------17918 TEST1

SQL> insert into test1


1 row created.

SQL> select * from test1;


ID DESC1
---------- ---------100 BUFFER1

VALUES (100,'BUFFER1');

Data Input
SQL> SELECT
SELECT SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS,EXTENTS
SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS,EXTENTS
SQL>
FROM DBA_SEGMENTS
DBA_SEGMENTS WHERE
WHERE SEGMENT_NAME
SEGMENT_NAME LIKE
LIKE 'TEST1'
'TEST1'
FROM
SEGMENT_NA HEADER_FILE
HEADER_FILE HEADER_BLOCK
HEADER_BLOCK
BYTES
BLOCKS
EXTENTS
SEGMENT_NA
BYTES
BLOCKS
EXTENTS
---------- --------------------- ----------------------- ------------------- ------------------- ---------------------------TEST1
29
11
65536
TEST1
29
11
65536
88
11
SQL> select
select OWNER,SEGMENT_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS
OWNER,SEGMENT_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS
SQL>
from dba_extents
dba_extents where
where SEGMENT_NAME='TEST1';
SEGMENT_NAME='TEST1';
from
OWNER SEGMENT_NA
SEGMENT_NA EXTENT_ID
EXTENT_ID
FILE_ID BLOCK_ID
BLOCK_ID
BYTES
BLOCKS
OWNER
FILE_ID
BYTES
BLOCKS
----- ------------------- ------------------- ------------------- ------------------- ------------------- ----------------------SYS TEST1
TEST1
29
65536
SYS
00
29
99
65536
88

select ROWID,DBMS_ROWID.ROWID_OBJECT(rowid)
ROWID,DBMS_ROWID.ROWID_OBJECT(rowid) "OBJECT",
"OBJECT",
11 select
DBMS_ROWID.ROWID_RELATIVE_FNO(rowid) "FILE",
"FILE",
22 DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)
3
DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) "BLOCK",
3
DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) "BLOCK",
DBMS_ROWID.ROWID_ROW_NUMBER(rowid) "ROW",ID,DESC1
"ROW",ID,DESC1
44 DBMS_ROWID.ROWID_ROW_NUMBER(rowid)
5*
from
TEST1
5* from TEST1
ROWID
OBJECT
FILE
BLOCK
ROW
ID DESC1
DESC1
ROWID
OBJECT
FILE
BLOCK
ROW
ID
------------------ ------------------- ------------------- ------------------- ------------------- ------------------- -----------------------------------AAAEX+AAdAAAAANAAA
17918
29
13
0
100
BUFFER1
AAAEX+AAdAAAAANAAA
17918
29
13
0
100 BUFFER1

Explain Plan

SQL> select * from test1;


ID DESC1
---------- ---------100 BUFFER1

SQL> select
select ** from
from test1;
test1;
SQL>
Execution Plan
Plan
Execution
------------------------------------------------------------------------------------------------------------------Plan hash
hash value:
value: 4122059633
4122059633
Plan
----------------------------------------------------------------------------------------------------------------------------------------------------Id || Operation
Operation
Name || Rows
Rows || Bytes
Bytes || Cost
Cost (%CPU)|
(%CPU)| Time
Time
|| Id
|| Name
||
----------------------------------------------------------------------------------------------------------------------------------------------------SELECT STATEMENT
STATEMENT ||
11 ||
(0)| 00:00:01
00:00:01 ||
|| 00 || SELECT
||
11 ||
11
33 (0)|
TABLE ACCESS
ACCESS FULL|
FULL| TEST1
TEST1 ||
11 ||
(0)| 00:00:01
00:00:01 ||
11 ||
11
33 (0)|
|| 11 || TABLE
-----------------------------------------------------------------------------------------------------------------------------------------------------

X$BH
2
File
Space
Header

10

L1
BMB

L2
BMB

11
Data
Segment
header

12

13

14

15

data

64k ( 8 blocks )
SQL> select
select HLADDR,DBABLK,DBARFIL
HLADDR,DBABLK,DBARFIL ,ba,NXT_HASH,
,ba,NXT_HASH, PRV_HASH
PRV_HASH
SQL>
,decode(state,0,'free',1,'xcur',2,'scur',3,'cr',
,decode(state,0,'free',1,'xcur',2,'scur',3,'cr',
4,'read',5,'mrec' ,6,'irec',7,'write',8,'pi')
,6,'irec',7,'write',8,'pi') state
state
4,'read',5,'mrec'
from x$bh
x$bh where
where DBARFIL=29
DBARFIL=29 order
order by
by 3;
3;
from
HLADDR DBABLK
DBABLK DBARFIL
DBARFIL BA
BA
NXT_HASH PRV_HASH
PRV_HASH STATE
STATE
HLADDR
NXT_HASH
-------- ----------- ----------- ------------- ----------------- ----------------- ---------------0D44DC9A8
29 0A0550000
0A0550000 0D44DCBE0
0D44DCBE0 0D44DCBE0
0D44DCBE0 xcur
xcur
0D44DC9A8
22
29
0D47FD418
11
29 09F668000
09F668000 0D47FD610
0D47FD610 09FFCC228
09FFCC228 cr
cr
0D47FD418
11
29
0D47FD418
11
29 09FA22000
09FA22000 09FFAC758
09FFAC758 0D47FD610
0D47FD610 xcur
xcur
0D47FD418
11
29
0D45DD590
12
29 09FE24000
09FE24000 0D45DD748
0D45DD748 0D45DD748
0D45DD748 xcur
xcur
0D45DD590
12
29
0D43BD708
13
29 09F296000
09F296000 0D43BD880
0D43BD880 0D43BD880
0D43BD880 xcur
xcur
0D43BD708
13
29
0D472D880
14
29 09F666000
09F666000 0D472D9B8
0D472D9B8 0D472D9B8
0D472D9B8 xcur
xcur
0D472D880
14
29
0D450D9F8
15
29 09FA20000
09FA20000 0D450DAF0
0D450DAF0 0D450DAF0
0D450DAF0 xcur
xcur
0D450D9F8
15
29
0D487DB70
16
29 09FE22000
09FE22000 0D487DC28
0D487DC28 0D487DC28
0D487DC28 xcur
xcur
0D487DB70
16
29

16

Cache buffer BH dump

Cache buffer
Chains latch

Hash table /
Bucket #

Buffer cache
addresses

Hash chain ( BH )

(0x9ff8bfc8)
0D43BD708

16652

09F296000

0A0550000

13

(0xa0fa3298)
0D44DC9A8

69528

0A0550000

09FE24000
2
09F668000

(0x9ffcc118)
0D450D9F8

78532

09FA20000

15
09FA22000

(0x9ffee338)
0D45DD590

116784

09FE24000

12
09F296000

(0x9ffac648)
0D472D880

0D47FD418

178664
216916

09F666000

14

0x9ffcc228)

(0x9ffac758)

09FA22000

09F668000

09F666000
11

09FA20000

(0x9ffee228)
0D487DB70

240544

09FE22000

16

09FE22000

Cache buffer BH dump

CHAIN: 69528
69528 LOC:
LOC: 0xd44dcbe0
0xd44dcbe0 HEAD:
HEAD: [a0fa3298,a0fa3298]
[a0fa3298,a0fa3298]
CHAIN:
BH (0xa0fa3298)
(0xa0fa3298) file#:
file#: 29
29 rdba:
rdba: 0x07400002
0x07400002 (29/2)
(29/2) class:
class: 13
13 ba:
ba:
BH

0xa0550000
0xa0550000

set: 99 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 22
22
set:
dbwrid: 00 obj:
obj: -1
-1 objn:
objn: 11 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash:
[d44dcbe0,d44dcbe0]
lru:
[a0fa3428,a0fa3208]
hash: [d44dcbe0,d44dcbe0] lru: [a0fa3428,a0fa3208]
lru-flags: debug_dump
lru-flags: debug_dump
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [cf3cf018,cf3cf018]
[cf3cf018,cf3cf018]
ckptq:
st: XCURRENT md: NULL tch: 1
st: XCURRENT md: NULL tch: 1
flags: gotten_in_current_mode
gotten_in_current_mode
flags:
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn: 0x0000.003fab68
0x0000.003fab68 seq:
seq: 0x02
0x02 flg:
flg: 0x04
0x04 tail:
tail: 0xab681d02
0xab681d02
scn:
frmt:
0x02
chkval:
0x43f5
type:
0x1d=KTFB
Bitmapped
File Space
Space Header
Header
frmt: 0x02 chkval: 0x43f5 type: 0x1d=KTFB Bitmapped File

Cache buffer BH dump

CHAIN: 216916 LOC: 0xd47fd610 HEAD: [9ffcc228,9ffac758]

BH (0x9ffcc228)
(0x9ffcc228) file#:
file#: 29
29 rdba:
rdba: 0x0740000b
0x0740000b (29/11)
(29/11) class:
class: 44 ba:
ba: 0x9fa22000
0x9fa22000
BH
set: 99 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 22
22
set:
dbwrid: 00 obj:
obj: 17918
17918 objn:
objn: 17918
17918 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash: [9ffac758,d47fd610]
[9ffac758,d47fd610] lru:
lru: [9ffce4a8,9ffcc198]
[9ffce4a8,9ffcc198]
hash:
lru-flags:
debug_dump
lru-flags: debug_dump
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [ce0e1750,9ffcc208]
[ce0e1750,9ffcc208]
ckptq:
st:
XCURRENT
md:
NULL
tch:
1
st: XCURRENT md: NULL tch: 1
flags:
flags:
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn:
0x0000.003fabab
seq:
0x02
flg:
0x04
tail:
0xabab2302
scn: 0x0000.003fabab seq: 0x02 flg: 0x04 tail: 0xabab2302
frmt: 0x02
0x02 chkval:
chkval: 0xee4e
0xee4e type:
type: 0x23=PAGETABLE
0x23=PAGETABLE SEGMENT
SEGMENT HEADER
HEADER
frmt:

BH (0x9ffac758)
(0x9ffac758) file#:
file#: 29
29 rdba:
rdba: 0x0740000b
0x0740000b (29/11)
(29/11) class:
class: 44 ba:
ba: 0x9f668000
0x9f668000
BH
set: 12 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 15
set: 12 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 15
dbwrid: 1 obj: 17918 objn: -1 tsn: 28 afn: 29
dbwrid: 1 obj: 17918 objn: -1 tsn: 28 afn: 29
hash: [d47fd610,9ffcc228]
[d47fd610,9ffcc228] lru:
lru: [9ffad5a8,9ffac6c8]
[9ffad5a8,9ffac6c8]
hash:
lru-flags: debug_dump
lru-flags: debug_dump
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [ce0ed7e8,9ffac738]
[ce0ed7e8,9ffac738]
ckptq:
st:
CR
md:
NULL
tch:
1
st: CR md: NULL tch: 1
cr: [scn:
[scn: 0x0.3fb424],[xid:
0x0.3fb424],[xid: 0x0.0.0],[uba:
0x0.0.0],[uba: 0x0.0.0],[cls:
0x0.0.0],[cls: 0x0.3fb424],[sfl:
0x0.3fb424],[sfl: 0x0]
0x0]
cr:
flags:
flags:
scn: 0x0000.003fabab
0x0000.003fabab seq:
seq: 0x02
0x02 flg:
flg: 0x04
0x04 tail:
tail: 0xabab2302
0xabab2302
scn:
frmt: 0x02
0x02 chkval:
chkval: 0xee4e
0xee4e type:
type: 0x23=PAGETABLE
0x23=PAGETABLE SEGMENT
SEGMENT HEADER
HEADER
frmt:

Cache buffer BH dump


CHAIN: 116784
116784 LOC:
LOC: 0xd45dd748
0xd45dd748 HEAD:
HEAD: [9ffee338,9ffee338]
[9ffee338,9ffee338]
CHAIN:

BH (0x9ffee338)
(0x9ffee338) file#:
file#: 29
29 rdba:
rdba: 0x0740000c
0x0740000c (29/12)
(29/12) class:
class: 11 ba:
ba: 0x9fe24000
0x9fe24000
BH
set: 10
10 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 27
27
set:
dbwrid: 11 obj:
obj: 17918
17918 objn:
objn: 17918
17918 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash:
[d45dd748,d45dd748]
lru:
[9ffee4c8,9ffee2a8]
hash: [d45dd748,d45dd748] lru: [9ffee4c8,9ffee2a8]
lru-flags: debug_dump
debug_dump
lru-flags:
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [ce0f2988,9ffee318]
[ce0f2988,9ffee318]
ckptq:
st: XCURRENT
XCURRENT md:
md: NULL
NULL tch:
tch: 11
st:
flags:
only_sequential_access
flags: only_sequential_access
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn: 0x0000.003fabab seq: 0x01 flg: 0x04 tail: 0xabab0601
scn: 0x0000.003fabab seq: 0x01 flg: 0x04 tail: 0xabab0601
frmt: 0x02
0x02 chkval:
chkval: 0x1a0e
0x1a0e type:
type: 0x06=trans
0x06=trans data
data
frmt:

CHAIN: 16651
16651 LOC:
LOC: 0xd43bd870
0xd43bd870 HEAD:
HEAD: [NULL]
[NULL]
CHAIN:

CHAIN: 16652
16652 LOC:
LOC: 0xd43bd880
0xd43bd880 HEAD:
HEAD: [9ff8bfc8,9ff8bfc8]
[9ff8bfc8,9ff8bfc8]
CHAIN:

BH (0x9ff8bfc8)
(0x9ff8bfc8) file#:
file#: 29
29 rdba:
rdba: 0x0740000d
0x0740000d (29/13)
(29/13) class:
class: 11 ba:
ba: 0x9f296000
0x9f296000
BH
set: 11
11 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 24
24
set:
dbwrid: 00 obj:
obj: 17918
17918 objn:
objn: 17918
17918 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash: [d43bd880,d43bd880]
[d43bd880,d43bd880] lru:
lru: [9ff8c158,9ff8bf38]
[9ff8c158,9ff8bf38]
hash:
lru-flags: debug_dump
debug_dump
lru-flags:
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [ce0e2860,ce0e2860]
[ce0e2860,ce0e2860]
ckptq:
st: XCURRENT
XCURRENT md:
md: NULL
NULL tch:
tch: 11
st:
flags: only_sequential_access
only_sequential_access
flags:
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn: 0x0000.003fabab
0x0000.003fabab seq:
seq: 0x03
0x03 flg:
flg: 0x06
0x06 tail:
tail: 0xabab0603
0xabab0603
scn:
frmt: 0x02
0x02 chkval:
chkval: 0x0c13
0x0c13 type:
type: 0x06=trans
0x06=trans data
data
frmt:

Cache buffer BH dump

CHAIN: 178664
178664 LOC:
LOC: 0xd472d9b8
0xd472d9b8 HEAD:
HEAD: [9ffac648,9ffac648]
[9ffac648,9ffac648]
CHAIN:
file#: 29
29 rdba:
rdba: 0x0740000e
0x0740000e (29/14)
(29/14) class:
class: 11 ba:
ba: 0x9f666000
0x9f666000
BH (0x9ffac648)
(0x9ffac648) file#:
BH
set: 12
12 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 15
15
set:
dbwrid: 11 obj:
obj: 17918
17918 objn:
objn: 17918
17918 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash: [d472d9b8,d472d9b8]
[d472d9b8,d472d9b8] lru:
lru: [9ffac7d8,9ffac5b8]
[9ffac7d8,9ffac5b8]
hash:
lru-flags: debug_dump
debug_dump
lru-flags:
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [9ffac848,ce0ed7e8]
[9ffac848,ce0ed7e8]
ckptq:
st: XCURRENT
XCURRENT md:
md: NULL
NULL tch:
tch: 11
st:
flags: only_sequential_access
only_sequential_access
flags:
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn: 0x0000.003fabab
0x0000.003fabab seq:
seq: 0x01
0x01 flg:
flg: 0x04
0x04 tail:
tail: 0xabab0601
0xabab0601
scn:
frmt: 0x02
0x02 chkval:
chkval: 0x71a8
0x71a8 type:
type: 0x06=trans
0x06=trans data
data
frmt:

CHAIN: 78532
78532 LOC:
LOC: 0xd450daf0
0xd450daf0 HEAD:
HEAD: [9ffcc118,9ffcc118]
[9ffcc118,9ffcc118]
CHAIN:
BH (0x9ffcc118)
(0x9ffcc118) file#:
file#: 29
29 rdba:
rdba: 0x0740000f
0x0740000f (29/15)
(29/15) class:
class: 11 ba:
ba: 0x9fa20000
0x9fa20000
BH
set: 99 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 22
22
set:
dbwrid: 0 obj: 17918 objn: 17918 tsn: 28 afn: 29
dbwrid: 0 obj: 17918 objn: 17918 tsn: 28 afn: 29
hash: [d450daf0,d450daf0]
[d450daf0,d450daf0] lru:
lru: [9ffcc2a8,9ffcc088]
[9ffcc2a8,9ffcc088]
hash:
lru-flags:
debug_dump
lru-flags: debug_dump
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [9ffcc318,ce0e1750]
[9ffcc318,ce0e1750]
ckptq:
st:
XCURRENT
md:
NULL
tch:
1
st: XCURRENT md: NULL tch: 1
flags: only_sequential_access
only_sequential_access
flags:
LRBA:
[0x0.0.0]
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA: [0x0.0.0] HSCN:
buffer tsn:
tsn: 28
28 rdba:
rdba: 0x0740000f
0x0740000f (29/15)
(29/15)
buffer
scn: 0x0000.003fabab
0x0000.003fabab seq:
seq: 0x01
0x01 flg:
flg: 0x04
0x04 tail:
tail: 0xabab0601
0xabab0601
scn:
frmt:
0x02
chkval:
0xc95c
type:
0x06=trans
data
frmt: 0x02 chkval: 0xc95c type: 0x06=trans data

Cache buffer BH dump

CHAIN: 240544
240544 LOC:
LOC: 0xd487dc28
0xd487dc28 HEAD:
HEAD: [9ffee228,9ffee228]
[9ffee228,9ffee228]
CHAIN:

BH (0x9ffee228)
(0x9ffee228) file#:
file#: 29
29 rdba:
rdba: 0x07400010
0x07400010 (29/16)
(29/16) class:
class: 11 ba:
ba: 0x9fe22000
0x9fe22000
BH
set:
10
blksize:
8192
bsi:
0
set-flg:
2
pwbcnt:
27
set: 10 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 27
dbwrid: 11 obj:
obj: 17918
17918 objn:
objn: 17918
17918 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash:
[d487dc28,d487dc28]
lru:
[9ffee3b8,9ffee198]
hash: [d487dc28,d487dc28] lru: [9ffee3b8,9ffee198]
lru-flags: debug_dump
debug_dump
lru-flags:
ckptq:
[NULL]
fileq: [NULL]
[NULL] objq:
objq: [9ffee428,ce0f2988]
[9ffee428,ce0f2988]
ckptq: [NULL] fileq:
st: XCURRENT
XCURRENT md:
md: NULL
NULL tch:
tch: 11
st:
flags: only_sequential_access
only_sequential_access
flags:
LRBA:
[0x0.0.0]
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA: [0x0.0.0] HSCN:
scn: 0x0000.003fabab seq: 0x01 flg: 0x04 tail: 0xabab0601
scn: 0x0000.003fabab seq: 0x01 flg: 0x04 tail: 0xabab0601
frmt: 0x02
0x02 chkval:
chkval: 0x96a9
0x96a9 type:
type: 0x06=trans
0x06=trans data
data
frmt:

Latch Waits
cache buffers chains

v$latch_children
SQL> select
select HLADDR
HLADDR ,NAME,a.DBABLK,
,NAME,a.DBABLK, GETS,MISSES,IMMEDIATE_GETS
GETS,MISSES,IMMEDIATE_GETS imm_get,
imm_get,
SQL>
2
IMMEDIATE_MISSES
imm_miss,SPIN_GETS,SLEEP1
from
x$bh
a,v$latch_children
2 IMMEDIATE_MISSES imm_miss,SPIN_GETS,SLEEP1 from x$bh a,v$latch_children bb
3* where
where a.hladdr
a.hladdr == b.addr
b.addr and
and DBARFIL=29
DBARFIL=29 order
order by
by 33 ;;
3*
HLADDR
NAME
DBABLK GETS
GETS MISSES
MISSES IMM_GET
IMM_GET IMM_MISS
IMM_MISS SPIN_GETS
SPIN_GETS SLEEP1
SLEEP1
HLADDR
NAME
DBABLK
--------- -------------------------- ---- ------ ------- ------- --------- -------------- -------------------------- ---- ------ ------- ------- --------- -----0D44DC9A8 cache
cache buffers
buffers chains
chains
1884
81
0D44DC9A8
22 1884
00
81
00
00
00
0D47FD418 cache buffers chains
11 1776
0
84
0
0
0
0D47FD418 cache buffers chains
11 1776
0
84
0
0
0
0D47FD418 cache buffers chains
11 1776
0
84
0
0
0
0D47FD418 cache buffers chains
11 1776
0
84
0
0
0
0D45DD590 cache
cache buffers
buffers chains
chains
12 1791
1791
85
0D45DD590
12
00
85
00
00
00
0D43BD708 cache buffers chains
13 1915
0
84
0
0
0
0D43BD708 cache buffers chains
13 1915
0
84
0
0
0
0D472D880
cache
buffers
chains
14
2008
0
85
0
0
0D472D880 cache buffers chains
14 2008
0
85
0
0
00
0D450D9F8 cache buffers chains
15 1893
0
82
0
0
0
0D450D9F8 cache buffers chains
15 1893
0
82
0
0
0
0D487DB70
cache
buffers
chains
16
1893
0
82
0
0
0D487DB70 cache buffers chains
16 1893
0
82
0
0
00
rows selected.
selected.
88 rows

Index creation

SQL> create index idxtest1 on TEST1(ID)


tablespace buffertest;
SQL> select object_id,object_name from
dba_objects where object_name='IDXTEST1';
OBJECT_ID OBJECT_NAME
---------- -------------18092 IDXTEST1

SQL>SELECT SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS,EXTENTS
SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK,BYTES,BLOCKS,EXTENTS
SQL>SELECT
FROM DBA_SEGMENTS
DBA_SEGMENTS WHERE
WHERE SEGMENT_NAME
SEGMENT_NAME LIKE
LIKE 'IDXTEST1'
'IDXTEST1'
FROM
SEGMENT_NA HEADER_FILE
HEADER_FILE HEADER_BLOCK
HEADER_BLOCK
BYTES
BLOCKS
EXTENTS
SEGMENT_NA
BYTES
BLOCKS
EXTENTS
---------- --------------------- ----------------------- ------------------- ------------------- ---------------------------IDXTEST1
29
19
65536
IDXTEST1
29
19
65536
88
11

Explain Plan

SQL> select * from test1 where id=100;


ID DESC1
---------- ---------100 BUFFER1
SQL> select
select ** from
from test1
test1 where
where id=100;
id=100;
SQL>
Execution Plan
Plan
Execution
------------------------------------------------------------------------------------------------------------------Plan hash value: 3873210734
Plan hash value: 3873210734
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
| Id | Operation
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------SELECT STATEMENT
STATEMENT
11 ||
(0)| 00:00:01
00:00:01 ||
|| 00 || SELECT
||
||
11 ||
11
22 (0)|
TABLE ACCESS
ACCESS BY
BY INDEX
INDEX ROWID|
ROWID| TEST1
TEST1
11 ||
(0)| 00:00:01
00:00:01 ||
|| 11 || TABLE
||
11 ||
11
22 (0)|
|* 22 || INDEX
INDEX RANGE
RANGE SCAN
SCAN
IDXTEST1 ||
(0)| 00:00:01
00:00:01 ||
|*
|| IDXTEST1
11 ||
||
11 (0)|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

X$BH
2
File
Space
Header

17
L1
BMB

18
L2
BMB

19

20

21

22

23

24

Data
Segment INDEX
header

64k ( 8 blocks )
SQL> select
select HLADDR,DBABLK,DBARFIL
HLADDR,DBABLK,DBARFIL ,ba,NXT_HASH,
,ba,NXT_HASH, PRV_HASH
PRV_HASH ,,
SQL>
decode(state,0,'free',1,'xcur',2,'scur',3,'cr',
decode(state,0,'free',1,'xcur',2,'scur',3,'cr',
4,'read',5,'mrec',6,
4,'read',5,'mrec',6,
'irec',7,'write',8,'pi') state
state from
from x$bh
x$bh where
where
'irec',7,'write',8,'pi')
DBARFIL=29 order
order by
by 22 ;;
DBARFIL=29
HLADDR
DBABLK DBARFIL
DBARFIL
BA NXT_HASH
NXT_HASH PRV_HASH
PRV_HASH STATE
STATE
HLADDR
DBABLK
BA
---------- --------------- ------------- ----------------- ----------------- ----------------- -----------------0D44DC9A8
29 0A0488000
0A0488000 0D44DCBE0
0D44DCBE0 0D44DCBE0
0D44DCBE0 xcur
xcur
0D44DC9A8
22
29
0D43BD708
13
29 09FA00000
09FA00000 0D43BD880
0D43BD880 0D43BD880
0D43BD880 xcur
xcur
0D43BD708
13
29
0D458DE88
20
29 09F638000
09F638000 0D458E040
0D458E040 0D458E040
0D458E040 xcur
xcur
0D458DE88
20
29

Cache buffer BH dump


CHAIN: 69528
69528 LOC:
LOC: 0xd44dcbe0
0xd44dcbe0 HEAD:
HEAD: [a0f9c858,a0f9c858]
[a0f9c858,a0f9c858]
CHAIN:
BH (0xa0f9c858)
(0xa0f9c858) file#:
file#: 29
29 rdba:
rdba: 0x07400002
0x07400002 (29/2)
(29/2) class:
class: 13
13 ba:
ba: 0xa0488000
0xa0488000
BH
set: 99 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 23
23
set:
dbwrid: 00 obj:
obj: -1
-1 objn:
objn: 11 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash: [d44dcbe0,d44dcbe0]
[d44dcbe0,d44dcbe0] lru:
lru: [a0f9c9e8,a0f9c7c8]
[a0f9c9e8,a0f9c7c8]
hash:
lru-flags: debug_dump
debug_dump
lru-flags:
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [cf3a9348,cf3a9348]
[cf3a9348,cf3a9348]
ckptq:
st: XCURRENT
XCURRENT md:
md: NULL
NULL tch:
tch: 22
st:
flags: gotten_in_current_mode
gotten_in_current_mode
flags:
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn: 0x0000.004110b0
0x0000.004110b0 seq:
seq: 0x02
0x02 flg:
flg: 0x04
0x04 tail:
tail: 0x10b01d02
0x10b01d02
scn:
frmt: 0x02
0x02 chkval:
chkval: 0x4393
0x4393 type:
type: 0x1d=KTFB
0x1d=KTFB Bitmapped
Bitmapped File
File Space
Space Header
Header
frmt:

CHAIN: 16652
16652 LOC:
LOC: 0xd43bd880
0xd43bd880 HEAD:
HEAD: [9ffcb018,9ffcb018]
[9ffcb018,9ffcb018]
CHAIN:
BH (0x9ffcb018)
(0x9ffcb018) file#:
file#: 29
29 rdba:
rdba: 0x0740000d
0x0740000d (29/13)
(29/13) class:
class: 11 ba:
ba: 0x9fa00000
0x9fa00000
BH
set: 99 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 23
23
set:
dbwrid: 00 obj:
obj: 17918
17918 objn:
objn: 17918
17918 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash: [d43bd880,d43bd880]
[d43bd880,d43bd880] lru:
lru: [9ffcb1a8,9ffcaf88]
[9ffcb1a8,9ffcaf88]
hash:
lru-flags: debug_dump
debug_dump
lru-flags:
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [ce0fc8b0,ce0fc8b0]
[ce0fc8b0,ce0fc8b0]
ckptq:
st: XCURRENT
XCURRENT md:
md: NULL
NULL tch:
tch: 11
st:
flags:
flags:
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn: 0x0000.003fabab
0x0000.003fabab seq:
seq: 0x03
0x03 flg:
flg: 0x06
0x06 tail:
tail: 0xabab0603
0xabab0603
scn:
frmt: 0x02
0x02 chkval:
chkval: 0x0c13
0x0c13 type:
type: 0x06=trans
0x06=trans data
data
frmt:

Cache buffer BH dump

CHAIN: 102160
102160 LOC:
LOC: 0xd458e040
0xd458e040 HEAD:
HEAD: [9ffaadd8,9ffaadd8]
[9ffaadd8,9ffaadd8]
CHAIN:

BH (0x9ffaadd8)
(0x9ffaadd8) file#:
file#: 29
29 rdba:
rdba: 0x07400014
0x07400014 (29/20)
(29/20) class:
class: 11 ba:
ba: 0x9f638000
0x9f638000
BH
set: 12
12 blksize:
blksize: 8192
8192 bsi:
bsi: 00 set-flg:
set-flg: 22 pwbcnt:
pwbcnt: 19
19
set:
dbwrid: 11 obj:
obj: 18092
18092 objn:
objn: 18092
18092 tsn:
tsn: 28
28 afn:
afn: 29
29
dbwrid:
hash: [d458e040,d458e040]
[d458e040,d458e040] lru:
lru: [9ffab078,9ffaad48]
[9ffab078,9ffaad48]
hash:
lru-flags: debug_dump
debug_dump
lru-flags:
ckptq: [NULL]
[NULL] fileq:
fileq: [NULL]
[NULL] objq:
objq: [ce0f3548,ce0f3548]
[ce0f3548,ce0f3548]
ckptq:
st: XCURRENT
XCURRENT md:
md: NULL
NULL tch:
tch: 11
st:
flags:
flags:
LRBA: [0x0.0.0]
[0x0.0.0] HSCN:
HSCN: [0xffff.ffffffff]
[0xffff.ffffffff] HSUB:
HSUB: [65535]
[65535]
LRBA:
scn: 0x0000.004110b8
0x0000.004110b8 seq:
seq: 0x01
0x01 flg:
flg: 0x04
0x04 tail:
tail: 0x10b80601
0x10b80601
scn:
frmt: 0x02
0x02 chkval:
chkval: 0x1176
0x1176 type:
type: 0x06=trans
0x06=trans data
data
frmt:

Latch Waits
cache buffers chains

v$latch_children
SQL> select
select HLADDR
HLADDR ,NAME,a.DBABLK,
,NAME,a.DBABLK, GETS,MISSES,IMMEDIATE_GETS
GETS,MISSES,IMMEDIATE_GETS imm_get,
imm_get,
SQL>
2
IMMEDIATE_MISSES
imm_miss,SPIN_GETS,SLEEP1
from
x$bh
a,v$latch_children
2 IMMEDIATE_MISSES imm_miss,SPIN_GETS,SLEEP1 from x$bh a,v$latch_children bb
3* where
where a.hladdr
a.hladdr == b.addr
b.addr and
and DBARFIL=29
DBARFIL=29 order
order by
by 33 ;;
3*
HLADDR
NAME
DBABLK GETS MISSES IMM_GET IMM_MISS SPIN_GETS SLEEP1
HLADDR
NAME
DBABLK GETS MISSES IMM_GET IMM_MISS SPIN_GETS SLEEP1
------------------------------------- ----------- ------------- ------------- ----------------- ------------------- -------------------------- ---0D44DC9A8 cache buffers chains
2 198
0
45
0
0
0
0D44DC9A8 cache buffers chains
2 198
0
45
0
0
0
0D43BD708
cache
buffers
chains
13
196
0
44
0
0
0D43BD708 cache buffers chains
13 196
0
44
0
0
00
0D458DE88 cache
cache buffers
buffers chains
chains
20 197
197
44
0D458DE88
20
00
44
00
00
00
rows selected.
selected.
33 rows

Touch count

Touch count

SQL> select
select addr,HLADDR,DBABLK,DBARFIL
addr,HLADDR,DBABLK,DBARFIL ,ba,NXT_HASH,
,ba,NXT_HASH, PRV_HASH
PRV_HASH ,,
SQL>
decode (state,0,'free',1,'xcur',2,'scur',3,'cr','read',5,'mrec'
(state,0,'free',1,'xcur',2,'scur',3,'cr','read',5,'mrec'
decode
,6,'irec',7,'write',8,'pi') state,tch,tim
state,tch,tim
,6,'irec',7,'write',8,'pi')
2* from
from x$bh
x$bh where
where DBARFIL=29
DBARFIL=29 order
order by
by 33
2*
HLADDR DBABLK
DBABLK DBARFIL
DBARFIL BA
BA
NXT_HASH PRV_HASH
PRV_HASH STAT
STAT TCH
TCH
TIM
HLADDR
NXT_HASH
TIM
--------- ----- ------------- ----------------- ----------------- ----------------- ------- ------- --------------------------0D44DC9A8
29 0A0488000
0A0488000 0D44DCBE0
0D44DCBE0 0D44DCBE0
0D44DCBE0 xcur
xcur
1283730390
0D44DC9A8
22
29
22 1283730390
0D43BD708
13
29 09FA00000
09FA00000 0D43BD880
0D43BD880 0D43BD880
0D43BD880 xcur
xcur
1283730390
0D43BD708
13
29
11 1283730390
0D458DE88
20
29 09F638000
09F638000 0D458E040
0D458E040 0D458E040
0D458E040 xcur
xcur
1283730390
0D458DE88
20
29
11 1283730390

Touch count
09:10:22 SQL>
SQL> select
select HLADDR,DBABLK,DBARFIL
HLADDR,DBABLK,DBARFIL ,ba,NXT_HASH,
,ba,NXT_HASH, PRV_HASH
PRV_HASH ,decode
,decode
09:10:22
(state,0,'free',1,'xcur',2,'scur',3,'cr','read',5,'mrec' ,6,'irec',
,6,'irec',
(state,0,'free',1,'xcur',2,'scur',3,'cr','read',5,'mrec'
7,'write',8,'pi') state,tch,tim
state,tch,tim from
from x$bh
x$bh where
where DBARFIL=29
DBARFIL=29 order
order by
by 33 ;;
7,'write',8,'pi')
HLADDR
DBABLK DBARFIL
DBARFIL BA
BA
NXT_HASH PRV_HASH
PRV_HASH STAT
STAT TCH
TCH
TIM
HLADDR
DBABLK
NXT_HASH
TIM
--------- ----------- ------------- ----------------- ----------------- ----------------- ------- ----- --------------------------0D44DC9A8
29 0A0488000
0A0488000 0D44DCBE0
0D44DCBE0 09DF7AC98
09DF7AC98 xcur
xcur 22 1283730390
1283730390
0D44DC9A8
22
29
0D43BD708
13
29 09FA00000
09FA00000 0D43BD880
0D43BD880 0D43BD880
0D43BD880 xcur
xcur 44 1283789422
1283789422
0D43BD708
13
29
0D458DE88
20
29 09F638000
09F638000 0D458E040
0D458E040 0D458E040
0D458E040 xcur
xcur 44 1283789422
1283789422
0D458DE88
20
29
09:10:42 SQL>
SQL> select
select ** from
from test1
test1 where
where ID=100;
ID=100;
09:10:42
ID DESC1
DESC1
ID
---------- ---------------------------100 BUFFER1
BUFFER1
100
09:11:01 SQL>
SQL>
09:11:01
HLADDR
DBABLK DBARFIL
DBARFIL BA
BA
NXT_HASH PRV_HASH
PRV_HASH STAT
STAT TCH
TCH
TIM
HLADDR
DBABLK
NXT_HASH
TIM
--------- ----------- ------------- ----------------- ----------------- ----------------- ------- ----- --------------------------0D44DC9A8
29 0A0488000
0A0488000 0D44DCBE0
0D44DCBE0 09DF7AC98
09DF7AC98 xcur
xcur 22 1283730390
1283730390
0D44DC9A8
22
29
0D43BD708
13
29 09FA00000
09FA00000 0D43BD880
0D43BD880 0D43BD880
0D43BD880 xcur
xcur 55 1283789446
1283789446
0D43BD708
13
29
0D458DE88
20
29 09F638000
09F638000 0D458E040
0D458E040 0D458E040
0D458E040 xcur
xcur 55 1283789446
1283789446
0D458DE88
20
29
09:11:02 SQL>
SQL>
09:11:02

Direct memory
update

Direct memory update

SQL >
Hash chain

Hash table

Buffer cache

PROCESS #1

Latch #

BH

BH

BH

BH

8K
BH

Direct memory update

SQL>create
createtable
tableblkinmemory
blkinmemory(id
(idnumber,desc2
number,desc2varchar2(10))
varchar2(10))
SQL>
tablespaceTBLSIZE;
TBLSIZE;
tablespace
Tablecreated.
created.
Table
SQL>insert
insertinto
intoblkinmemory
blkinmemoryVALUES(546,'BUFFER1');
VALUES(546,'BUFFER1');
SQL>
rowcreated.
created.
11row
SQL>COMMIT;
COMMIT;
SQL>
Commitcomplete.
complete.
Commit

Direct memory update

CHAIN: 251736 LOC: 0xd48ba850 HEAD: [9ffcc668,9ffcc668]


BH (0x9ffcc668) file#: 16 rdba: 0x04000008 (16/8)
class: 1 ba: 0x9fa2a000
set: 9 blksize: 8192 bsi: 0 set-flg: 2 pwbcnt: 191
dbwrid: 0 obj: 18427 objn: 18427 tsn: 15 afn: 16
hash: [d48ba850,d48ba850] lru: [9ffcc908,9ffcc5d8]
lru-flags: debug_dump
ckptq: [NULL] fileq: [NULL] objq:
[ce0e30b0,ce0e30b0]
st: XCURRENT md: NULL tch: 2
flags: only_sequential_access

Direct memory update


SQL >
Hash chain

Hash table

Buffer cache

PROCESS #1

BH

BH

0x9ffcc668
Latch #

251736

BH

0x09fa2a000

ba: 0x9fa2a000
0x09FA27FF0

8K

2F06C203

BH

updated
dump( 546,16), dump( 555,16)
DBWR

2F06C203

3806c203

disk

0x09fa2a000

0x09FA27FF0

8K

3806c203

Direct memory update


6:20:45 SQL> select * from blkinmemory;
ID DESC2
---------- ---------546 BUFFER1
Elapsed: 00:00:00.00
16:21:09 SQL> ORADEBUG SETMYPID
Statement processed.
16:21:14 SQL> oradebug peek 0x09FA27FF0 4
[09FA27FF0, 09FA27FF4) = 2F06C203
16:21:20 SQL> oradebug poke 0x09FA27FF0 4 0x3806c203
BEFORE: [09FA27FF0, 09FA27FF4) = 2F06C203
AFTER: [09FA27FF0, 09FA27FF4) = 3806C203
16:21:27 SQL> select * from blkinmemory;
ID DESC2
---------- ---------555 BUFFER1
Elapsed: 00:00:00.00
16:21:34 SQL>

Direct memory update

Total System
System Global
Global Area
Area 1979711488
1979711488 bytes
bytes
Total
Fixed Size
Size
2085000 bytes
bytes
Fixed
2085000
Variable Size
Size
889196408 bytes
bytes
Variable
889196408
Database Buffers
Buffers
1073741824 bytes
bytes
Database
1073741824
Redo Buffers
Buffers
14688256 bytes
bytes
Redo
14688256
Database mounted.
mounted.
Database
Database opened.
opened.
Database
SQL> set
set time
time on
on
SQL>
16:24:14 SQL>
SQL> set
set timing
timing on
on
16:24:14
16:24:18 SQL>
SQL> select
select ** from
from blkinmemory;
blkinmemory;
16:24:18
ID DESC2
DESC2
ID
---------- ---------------------------546 BUFFER1
BUFFER1
546
Elapsed: 00:00:00.00
00:00:00.00
Elapsed:
16:24:27 SQL>
SQL>
16:24:27

Oracle wait Events


Hash chain

Hash table

PROCESS #1

PROCESS #2

BH

BH

BH

BH

BH

BH

Latch # 1

PROCESS #3

Midpoint Insertion

LRU List
Hot End
LRU # 1

cachebuffers
bufferschains
chains
cache
cachebuffers
bufferslru
lruchain
chain
cache
bufferbusy
busywaits
waits
buffer
freebuffer
bufferwaits
waits
free
readby
byother
othersession
session
read
dbfile
filesingle
singleblock
blockread
read
db
dbfile
filesequential
sequentialread
read
db

Cold End

DBWR

MAIN
AUX

Free Blocks

disk

Localtion of Block Box


SGA

PMON

CKPT

SMON

Shared
pool

Buffer cache

Redo
buffer

Black Box

ARCH

DBWR

DBWR

Disk
Disk

DBWR

LGWR

Other oracle presentations:

SGA Internal
ASM Internal
RDS concept
EXADATA concept
RMAN Internal
Control file Internal
LMT Internal

You might also like