|
digdeep126 发表于 2013-5-25 10:39 ![]()
郭大师:“从段头读出Extent Map,开始全扫描”,能具体解释一下Extent Map,以及如何根据它开始全表扫描吗 ...
gyj@OCM> create table guoyj(id int,name varchar2(10));
Table created.
gyj@OCM> insert into guoyj values(1,'guoyj1');
1 row created.
gyj@OCM> commit;
Commit complete.
yj@OCM> set autot traceonly;
gyj@OCM> select * from guoyj;
Execution Plan
----------------------------------------------------------
Plan hash value: 3898741468
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 20 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| GUOYJ | 1 | 20 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
48 recursive calls
0 db block gets
19 consistent gets
0 physical reads
0 redo size
485 bytes sent via SQL*Net to client
420 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
gyj@OCM> select * from guoyj;
Execution Plan
----------------------------------------------------------
Plan hash value: 3898741468
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 20 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| GUOYJ | 1 | 20 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement (level=2)
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
7 consistent gets
0 physical reads
0 redo size
485 bytes sent via SQL*Net to client
420 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
gyj@OCM> set autot off;
gyj@OCM> select HEADER_FILE,HEADER_BLOCK from dba_segments where segment_name='GUOYJ';
HEADER_FILE HEADER_BLOCK
----------- ------------
6 154
gyj@OCM> select id,name,dbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid) from guoyj;
ID NAME DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
---------- ---------- ------------------------------------ ------------------------------------
1 guoyj1 6 159
gyj@OCM> select EXTENT_ID,file_id,block_id,blocks from dba_extents where segment_name='GUOYJ';
EXTENT_ID FILE_ID BLOCK_ID BLOCKS
---------- ---------- ---------- ----------
0 6 152 8
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 8
last map 0x00000000 #maps: 0 offset: 2716
Highwater:: 0x018000a0 ext#: 0 blk#: 8 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 5
mapblk 0x00000000 offset: 0
Unlocked
--------------------------------------------------------
Low HighWater Mark :
Highwater:: 0x018000a0 ext#: 0 blk#: 8 ext size: 8
#blocks in seg. hdr's freelists: 0
#blocks below: 5
mapblk 0x00000000 offset: 0
Level 1 BMB for High HWM block: 0x01800098
Level 1 BMB for Low HWM block: 0x01800098
--------------------------------------------------------
Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0
L2 Array start offset: 0x00001434
First Level 3 BMB: 0x00000000
L2 Hint for inserts: 0x01800099
Last Level 1 BMB: 0x01800098
Last Level II BMB: 0x01800099
Last Level III BMB: 0x00000000
Map Header:: next 0x00000000 #extents: 1 obj#: 74764 flag: 0x10000000
Inc # 0
Extent Map
-----------------------------------------------------------------
0x01800098 length: 8
Auxillary Map
--------------------------------------------------------
Extent 0 : L1 dba: 0x01800098 Data dba: 0x0180009b
--------------------------------------------------------
Second Level Bitmap block DBAs
--------------------------------------------------------
DBA 1: 0x01800099
PARSING IN CURSOR #2 len=19 dep=0 uid=91 oct=3 lid=91 tim=1369477443489414 hv=3458242473 ad='4b9a3968' sqlid='7k00
snm7215x9'
select * from guoyj
END OF STMT
PARSE #2:c=1000,e=560,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=3898741468,tim=1369477443489410
EXEC #2:c=0,e=80,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=3898741468,tim=1369477443489631
WAIT #2: nam='SQL*Net message to client' ela= 10 driver id=1650815232 #bytes=1 p3=0 obj#=0 tim=1369477443489746
WAIT #2: nam='Disk file operations I/O' ela= 86 FileOperation=2 fileno=6 filetype=2 obj#=74764 tim=136947744348998
4
WAIT #2: nam='db file sequential read' ela= 48 file#=6 block#=154 blocks=1 obj#=74764 tim=1369477443490077
WAIT #2: nam='db file scattered read' ela= 155 file#=6 block#=155 blocks=5 obj#=74764 tim=1369477443490633
FETCH #2:c=999,e=987,p=6,cr=7,cu=0,mis=0,r=1,dep=0,og=1,plh=3898741468,tim=1369477443490792
WAIT #2: nam='SQL*Net message from client' ela= 628 driver id=1650815232 #bytes=1 p3=0 obj#=74764 tim=136947744349
1497
FETCH #2:c=0,e=14,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=3898741468,tim=1369477443491617
STAT #2 id=1 cnt=1 pid=0 pos=1 obj=74764 op='TABLE ACCESS FULL GUOYJ (cr=7 pr=6 pw=0 time=0 us cost=3 size=20 card
=1)'
WAIT #2: nam='SQL*Net message to client' ela= 7 driver id=1650815232 #bytes=1 p3=0 obj#=74764 tim=1369477443491872
WAIT #2: nam='SQL*Net message from client' ela= 6632 driver id=1650815232 #bytes=1 p3=0 obj#=74764 tim=13694774434
98542
段头块---->高水位块(不包括高水位块):154 155 156 157 158 159
|
|