浅谈Oracle的高水位线–HWM – Oracle数据库栏目

浅谈Oracle的高水位线–HWM

    高水位包围记载以适合于记载限度局限。,舞台的地平纬度

      全扫描原生的读段姓名牌,继在段头块外面找到HWM

        上面用试验由内而外来默认Oracle的HWM    

[sql] 

T表有独身记载  

hr@ORCL> select * from t;  

        ID NAME  

———- ———-  

         1 AAAAA  

查找T段的段头      

hr@ORCL> select header_file,header_block from dba_segments where segment_name=”T” and owner=”HR”;  

HEADER_FILE HEADER_BLOCK  

———– ————  

          4          387  

翻开独身会期,自段头  

sys@ORCL> alter session set tracefile_identifier=”sys_dump_t_01”;  

Session 时尚界了的.  

sys@ORCL> alter system dump datafile 4 block 387;  

System 时尚界了的.  

      对转储TRC满足画    

[sql] 

Extent Control Header  

—————————————————————–  

Extent Header:: spare1: 0      spare2: 0      #extents: 1      #blocks: 8  

                last map  0x00000000  #maps: 0      offset: 2716  

    Highwater::  0x01000189  ext#: 0      blk#: 8      ext size: 8   高是高水位,
0x01000189大约是HWM的地址  

#blocks in seg. HDR的 freelists: 0  

#blocks below: 5  

mapblk  0x00000000  offset: 0  

                 Unlocked  

——————————————————–  

Low HighWater Mark :  

    Highwater::  0x01000189  ext#: 0      blk#: 8      ext size: 8  

#blocks in seg. HDR的 freelists: 0  

#blocks below: 5  

mapblk  0x00000000  offset: 0  

Level 1 BMB for High HWM block: 0x01000181  

Level 1 BMB for Low HWM block: 0x01000181  

——————————————————–  

Segment Type: 1 特 1      blksz: 8192   fbsz: 0  

L2 Array start offset:  0x00001434  

First Level 3 BMB:  0x00000000  

L2 Hint for inserts:  0x01000182  

Last Level 1 BMB:  0x01000181  

Last Level II BMB:  0x01000182  

Last Level III BMB:  0x00000000  

   Map Header:: next  0x00000000  #extents: 1    obj#: 52713  flag: 0x10000000  

Inc # 0  

Extent Map  

—————————————————————–  

 0x01000181  length: 8  

Auxillary Map  

——————————————————–  

 Extent 0     :  L1 dba:  0x01000181 Data dba:  0x01000184  

——————————————————–  

 Second Level Bitmap block DBAs  

 ——————————————————–  

 DBA 1:   0x01000182  

d dump data blocks tsn: 4 file#: 4 minblk 387 maxblk 387  

[sql] 

对T表停止片面扫描  

hr@ORCL> set autot traceonly  

hr@ORCL> select * from t;  

Execution Plan  

———————————————————-  

Plan hash value: 1601196873  

————————————————————————–  

| Id  | Operation         | Name | Rows  | Bytes | Cost CPU) Time     |  

————————————————————————–  

|   0 | SELECT STATEMENT  |      |     1 |    20 |     3   (0)| 00:00:01 |  

|   1 |  TABLE ACCESS FULL| T    |     1 |    20 |     3   (0)| 00:00:01 |  

————————————————————————–  

Note  

—–  

   – dynamic sampling used for this statement  

Statistics  

———————————————————-  

          0  recursive calls  

          0  db block gets  

          7  consistent gets   整张搁置有6个块。  

          0  physical reads  

          0  redo size  

        469  bytes sent via SQL*Net to client  

        385  bytes received via SQL*Net from client  

          2  SQL*Net 切换 to/from client  

          0  sorts (罢免)  

          0  sorts (磁盘)  

          1  rows processed  

      你怎样算出这6个块?

[sql] 

hr@ORCL> select file_id,block_id,blocks from dba_extents where segment_name=”T”;  

   FILE_ID   BLOCK_ID     BLOCKS  

———- ———- ———-  

         4        385          8  

      T区有8个块。,分可能性385 386 387 388 389 390 391 392 393

       Highwater::  0x01000189  即:4号区块393号区块

      这可以经过上面的dbms_utility包了

[sql] 

sys@ORCL> select to_number(”01000189”,”xxxxxxxx”) from dual;  

TO_NUMBER(”01000189”,”XXXXXXXX”)  

——————————–  

                        16777609  

sys@ORCL> select dbms_utility.data_block_address_file(16777609) from dual;  

(16777609)  

———————————————-  

                                             4  

sys@ORCL> select dbms_utility.data_block_address_block(16777609) from dual;  

(16777609)  

———————————————–  

                                            393  

      读原生的个块:第387组,第4块

      水位高388以下 389 390 391 392 延缓5个块

      因而我合计去了6个块。

       注:

        385是原生的 LEVEL BITMAP BLOCK

        386是二 LEVEL BITMAP BLOCK

      继咱们辨析了转储的满足。:    

[sql] 

Low HighWater Mark :  

    Highwater::  0x01000189  ext#: 0      blk#: 8      ext size: 8   

      接下来,谈高 mark 和 low highwater mark

       low high water 马克和高 water mark 有可能性塑造他们经过 块也可以在
unformatted block

       

      率先,梳理在dba_tables场块的意思

      记载是经过辨析获得的。 formatted block 总额

       而 low hwm 和 high HWM可能性同时在 formatted block 和 unfomatted block

      因而,要求地说  blocks 不克不及代表 low hwm 或高 hwm

       也许 low hwm 和 high 无版式的HWM block时,和
low 块分歧在HWM

      这么Oracle中无版式的块是什么?

       未版式,它指的是大约块。,它属于大约切断。,但它依然容纳构成者的模型。

      版式是从块中删去记载。,并将巨大更反倒该瞄准

      鄙人表太空段,要不是独身高水位。,高水位下的区块已版式。

      但段ASSM的表太空,有两个高水位。:低水位高水位

      即在TRC结束:高  0x01000189和Low HighWater Mark Highwater::  0x01000189

      低水位和高水位的区块都是版式的。

       尽管低水位高水位经过的块,它可能性是版式的。,也可能性是无

      t的高水位如今是纵列。 4,block 393;它的低水位和高水位是纵列。 4,block 393

      如今让咱们看一眼T。data_object_id是多多少少?:

[sql] 

hr@ORCL> select object_id,data_object_id from dba_objects where object_name=”T”;  

 OBJECT_ID DATA_OBJECT_ID  

———- ————–  

     52713          52714  

      很明显,T data_object_id大于object_id

       更确切地说,t上有让步或阻塞动手术。

       睬,阻塞动手术,truncate后其data_object_id不尽然执意在自来的data_
吹捧1 object_id

[sql] 

sys@ORCL> select to_char(”52714”,”XXXXXXXX”) from dual;  

TO_CHAR(”  

———  

     CDEA  

       更确切地说,T如今就座低水位和高水位经过。,由于记载记载在区块上
object_id不如CDEA

      咱们可以改变立场外面的垃圾堆。 header SEG /瞄准转储射中靶子切断决议了它的data_object_id
它等同舞台号吗?

      因而这阄 是独身未版式的块。

       更确切地说,可以经过data_object_id来决定块是在HWM和LHWM的位

      这么为什么Oracle吹捧了低水位和高水位的设置呢?为了什么打算?,执意低水位。,
或高水位?

      Oracle设计有独身道德标准,它是把独身大的动手术疏散到很好的东西小的动手术中。,确保独身大外科不起作用
时期太长了。

      其中的哪一个推延提到,或什么,它表现了大约意向。,这和Linux的意向是相似的的。

      低水位高水位线与高水位线的嫁,这执意这种思惟的表现。

      可以将掌握新分派的块版式,而不用用后就抛弃的运用。,为下独身动手术剩余一切断充分发挥潜在的能力

      全表扫描时期,通常是低水位读取的。,继依据所读到的值在低电温和高电平经过读取版式的块。,
避开版式无版式的块

       多多少少检查HWM?多多少少实现HWM下有多多少少免税的的太空?

      最可用的的方式是转储。 segment_header,突如其来的强劲气流快,并且对应用程式无使发生。

       并且,#块真不间断地折中物协商会议 in seg. HDR的 freelists:”可以通知咱们HWM下有多多少少免税的块

      你必要睬这时。,也许dba_segments.freelist_groups > 1,因而释放列表不再是段 在头

       比方,freelist_group = 3 ,继你麝香划分转储 姓名牌前面的3个块,看每组
freelist数

       这么多多少少折扣HWM呢?    

       ① expdp/impdp

       ② 10g和晚年的的版本可以运用协议,值当睬的是,表太空麝香是自动化机器或设备分区太空支撑。

          alter table tab_name enable row movement;

          alter table tab_name shrink space;

       ③ 运用让步,但在距离持久,它会使发生DML陈述,如修复,太空成绩也必要思索。

          简略地,让步锁表 它是TM 它也使发生例子。,因而,调回工厂复兴后 index

          alter table move tab_name; 在容易表太空中让步

          alter table move tab_name tablespace tbs_name; 将其让步到休息表太空

       ④ CTAS 继改名,rebuild index

       ⑤ 在线重清晰度

        附加的人…….

no comments

Leave me comment