Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

1

好友

48

主题
1#
发表于 2013-9-13 17:20:30 | 查看: 4221| 回复: 3
DB:10.2.0.5 windows 2008 64 bit
表示在local managed segment space auto managed的tablespace上
使用alter table shrink space后,用dbms_space.space_usage显示其使用量:
  1. FS1 Blocks (0-25) ......................               0
  2. FS2 Blocks (25-50) .....................               0
  3. FS3 Blocks (50-75) .....................               0
  4. FS4 Blocks (75-100).....................               0
  5. Full Blocks ............................          29,001
复制代码
表的所有block都为full状态;我理解的full block是完全没有剩余空间
如果这样,在后续的update不是很容易出现row chain,那表做了shrinl整理后这样不是比较容易性能有问题


不知道我这样的理解是不是错的,很疑惑
2#
发表于 2013-9-13 20:42:17
FYI


SQL> create table free_me (t1 char(200)) tablespace users pctfree 99 pctused 1;

表已创建。

SQL>
SQL>
SQL> insert into free_me values('ASK MACLEAN');

已创建 1 行。

SQL> insert into free_me select * from free_me;

已创建 1 行。

SQL> /

已创建 2 行。

SQL> /

已创建 4 行。

SQL> /

已创建 8 行。

SQL> /

已创建 16 行。

SQL> /

已创建 32 行。

SQL> /

已创建 64 行。

SQL> /

已创建 128 行。

SQL> /

已创建 256 行。

SQL> commit;

提交完成。

SQL> alter system checkpoint;

系统已更改。



set serveroutput on;

      declare
        v_unformatted_blocks number;
        v_unformatted_bytes number;
        v_fs1_blocks number;
        v_fs1_bytes number;
        v_fs2_blocks number;
        v_fs2_bytes number;
        v_fs3_blocks number;
        v_fs3_bytes number;
       v_fs4_blocks number;
       v_fs4_bytes number;
       v_full_blocks number;
       v_full_bytes number;
     begin
     dbms_space.space_usage ('SYS', 'FREE_ME', 'TABLE', v_unformatted_blocks,
     v_unformatted_bytes, v_fs1_blocks, v_fs1_bytes, v_fs2_blocks, v_fs2_bytes,
     v_fs3_blocks, v_fs3_bytes, v_fs4_blocks, v_fs4_bytes, v_full_blocks, v_full_bytes);
     dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks);
     dbms_output.put_line('FS1 Blocks              = '||v_fs1_blocks);
     dbms_output.put_line('FS2 Blocks              = '||v_fs2_blocks);
     dbms_output.put_line('FS3 Blocks              = '||v_fs3_blocks);
     dbms_output.put_line('FS4 Blocks              = '||v_fs4_blocks);
     dbms_output.put_line('Full Blocks              = '||v_full_blocks);
     end;
     /
         
Unformatted Blocks = 48
FS1 Blocks              = 0
FS2 Blocks              = 0
FS3 Blocks              = 0
FS4 Blocks              = 62
Full Blocks              = 512

PL/SQL 过程已成功完成。




SQL> select header_file ,header_block from dba_segments  where segment_name='FREE_ME';

HEADER_FILE HEADER_BLOCK
----------- ------------
          6       413554
                  
                  
SQL> alter system dump datafile 6 block 413554;

系统已更改。




  Segment Type: 1 nl2: 1      blksz: 8192   fbsz: 0      
  L2 Array start offset:  0x00001434
  First Level 3 BMB:  0x00000000
  L2 Hint for inserts:  0x01864f71
  Last Level 1 BMB:  0x0185d481
  Last Level II BMB:  0x01864f71
  Last Level III BMB:  0x00000000
     Map Header:: next  0x00000000  #extents: 20   obj#: 122802 flag: 0x10000000
  Inc # 0
  Extent Map
  -----------------------------------------------------------------
   0x01864f70  length: 8     
   0x01864f78  length: 8     
   0x01865800  length: 8     
   0x01865808  length: 8     
   0x01865810  length: 8     
   0x01865818  length: 8     
   0x01865820  length: 8     
   0x01865828  length: 8     
   0x01865830  length: 8     
   0x01865838  length: 8     
   0x01865840  length: 8     
   0x01865848  length: 8     
   0x01865850  length: 8     
   0x01869e20  length: 8     
   0x01869e28  length: 8     
   0x01869e30  length: 8     
   0x0185d300  length: 128   
   0x0185d380  length: 128   
   0x0185d400  length: 128   
   0x0185d480  length: 128   
  
  Auxillary Map
  --------------------------------------------------------
   Extent 0     :  L1 dba:  0x01864f70 Data dba:  0x01864f73
   Extent 1     :  L1 dba:  0x01864f70 Data dba:  0x01864f78
   Extent 2     :  L1 dba:  0x01865800 Data dba:  0x01865801
   Extent 3     :  L1 dba:  0x01865800 Data dba:  0x01865808
   Extent 4     :  L1 dba:  0x01865810 Data dba:  0x01865811
   Extent 5     :  L1 dba:  0x01865810 Data dba:  0x01865818
   Extent 6     :  L1 dba:  0x01865820 Data dba:  0x01865821
   Extent 7     :  L1 dba:  0x01865820 Data dba:  0x01865828
   Extent 8     :  L1 dba:  0x01865830 Data dba:  0x01865831
   Extent 9     :  L1 dba:  0x01865830 Data dba:  0x01865838
   Extent 10    :  L1 dba:  0x01865840 Data dba:  0x01865841
   Extent 11    :  L1 dba:  0x01865840 Data dba:  0x01865848
   Extent 12    :  L1 dba:  0x01865850 Data dba:  0x01865851
   Extent 13    :  L1 dba:  0x01865850 Data dba:  0x01869e20
   Extent 14    :  L1 dba:  0x01869e28 Data dba:  0x01869e29
   Extent 15    :  L1 dba:  0x01869e28 Data dba:  0x01869e30
   Extent 16    :  L1 dba:  0x0185d300 Data dba:  0x0185d302
   Extent 17    :  L1 dba:  0x0185d380 Data dba:  0x0185d382
   Extent 18    :  L1 dba:  0x0185d400 Data dba:  0x0185d402
   Extent 19    :  L1 dba:  0x0185d480 Data dba:  0x0185d482
  --------------------------------------------------------
  
   Second Level Bitmap block DBAs
   --------------------------------------------------------
   DBA 1:   0x01864f71
  
End dump data blocks tsn: 4 file#: 6 minblk 413554 maxblk 413554




0x01864f70           110  0001100100111101110000

datafile 6 block 413552


SQL> alter system dump datafile 6 block 413552;

系统已更改。

  --------------------------------------------------------
  DBA Ranges :
  --------------------------------------------------------
   0x01864f70  Length: 8      Offset: 0      
   0x01864f78  Length: 8      Offset: 8      
  
   0:Metadata   1:Metadata   2:Metadata   3:FULL
   4:FULL   5:FULL   6:FULL   7:FULL
   8:FULL   9:FULL   10:FULL   11:FULL
   12:FULL   13:FULL   14:FULL   15:FULL
   
   
5:FULL=>    413552+5=413557



Block header dump:  0x01864f75
Object id on Block? Y
seg/obj: 0x1dfb2  csc: 0x00.5cfb94  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x1864f70 ver: 0x01 opc: 0
     inc: 0  exflg: 0

Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0007.011.00000bf9  0x01400284.02ce.2e  ----    1  fsc 0x0000.00000000
0x02   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000
bdba: 0x01864f75
data_block_dump,data header at 0x7d18264
===============
tsiz: 0x1f98
hsiz: 0x14
pbl: 0x07d18264
     76543210
flag=--------
ntab=1
nrow=1
frre=-1
fsbo=0x14
fseo=0x1ecc
avsp=0x1eb8
tosp=0x1eb8



avsp=0x1eb8  ==>7864  虽然整个块还有 7864个可用字节,但仍被定义为FULL

Avsp: Available space in the block        


这说明了FULL并不是指 没有可用空间了, 而是 使用的空间 》=( block size * (100-PCTFREE))了

回复 只看该作者 道具 举报

3#
发表于 2013-9-13 20:52:01
segment space.png


Bitmaps track freeness of the data blocks
Freeness state tracked at fine granularity
Better space utilization
Data blocks states are
UNFORMATTED
0-25% free, 25-50% free, 50-75% free, 75-100% free
FULL - Due to block crossing PCTFREE
 Lob/Index Block states are 
UNFORMATTED
FREE, FULL
Bitmap hierarchy to quickly find the free blocks.
Soft instance affinity - maintained in the bitmap blocks.

回复 只看该作者 道具 举报

4#
发表于 2013-9-14 08:48:50
刘大这样一分析,清楚多了。而且还做了实验,真的非常感谢

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2025-1-4 07:11 , Processed in 0.051607 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569