楼主: eygle

[精华] 关于HWM的一点研究!

[复制链接]
论坛徽章:
0
21#
发表于 2003-6-11 11:56 | 只看该作者
使用ALTER SYSTEM DUMP DATAFILE  10 BLOCK 2
产生的跟踪结果中的Highwater是这个数据文件使用的HIGH WATER MARK吧。

当执行DROP TABLE T后,仍执行ALTER SYSTEM DUMP DATAFILE  10 BLOCK 2
产生的跟踪结果中Highwater没有变化,这样是不是进一步说明它只是这个数据文件的HWM

而针对每一个TABLE是否应有自己的HWM,这个值才能决定执行FTS的范围吧


另外从OCP STUDY 023中看到
执行DBMS_SPACE.UNUSED_SPACE,返回TOTAL_BYTES和UNUSED_BYTES
表的HWM=TOTAL_BYTES-UNUSED_BYTES

希望大家能在继续讨论一下这个问题!!!!

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
22#
发表于 2003-6-11 12:29 | 只看该作者

drop table

最初由 mihuxiao 发布
[B]使用ALTER SYSTEM DUMP DATAFILE  10 BLOCK 2
产生的跟踪结果中的Highwater是这个数据文件使用的HIGH WATER MARK吧。

当执行DROP TABLE T后,仍执行ALTER SYSTEM DUMP DATAFILE  10 BLOCK 2
产生的跟踪结果中Highwater没有变化,这样是不是进一步说明它只是这个数据文件的HWM

而针对每一个TABLE是否应有自己的HWM,这个值才能决定执行FTS的范围吧


另外从OCP STUDY 023中看到
执行DBMS_SPACE.UNUSED_SPACE,返回TOTAL_BYTES和UNUSED_BYTES
表的HWM=TOTAL_BYTES-UNUSED_BYTES

希望大家能在继续讨论一下这个问题!!!! [/B]


仅仅是数据字典的操作,在数据字典中删除这个表
但这个表实际的数据是不会去 删除的,实际这个表的block也不会发生变化
所以你drop 表后 dump 出来看起来是没有变化的,连数据都还真切的存在在数据文件里面

HWM 是针对 segment 来说的

使用道具 举报

回复
论坛徽章:
0
23#
发表于 2003-6-11 17:57 | 只看该作者
我又测试了一下,但重新创建了表,
然后执行ALTER SYSTEM DUMP DATAFILE 10 BLOCK 2 ,打开
跟踪文件发现Highwater已经恢复最初的原始值,说明空间又重新分配了,也证实biti_rainy
你说的"仅仅是数据字典的操作,在数据字典中删除这个表
但这个表实际的数据是不会去 删除的,实际这个表的block也不会发生变化 "

但这里还是不太明白跟踪文件中的Highwater代表了什么含义,不应该是segment的hwm吧?

"HWM 是针对 segment 来说的"感觉biti说得非常准确,很佩服!

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
24#
 楼主| 发表于 2003-6-11 18:14 | 只看该作者
最初由 mihuxiao 发布
[B]我又测试了一下,但重新创建了表,
然后执行ALTER SYSTEM DUMP DATAFILE 10 BLOCK 2 ,打开
跟踪文件发现Highwater已经恢复最初的原始值,说明空间又重新分配了,也证实biti_rainy
你说的"仅仅是数据字典的操作,在数据字典中删除这个表
但这个表实际的数据是不会去 删除的,实际这个表的block也不会发生变化 "

但这里还是不太明白跟踪文件中的Highwater代表了什么含义,不应该是segment的hwm吧?

"HWM 是针对 segment 来说的"感觉biti说得非常准确,很佩服! [/B]


你有没有测试过啊?
你也是 DATAFILE 10 BLOCK 2?

但这里还是不太明白跟踪文件中的Highwater代表了什么含义,不应该是segment的hwm吧?

那你觉得是什么的HWM?

使用道具 举报

回复
论坛徽章:
0
25#
发表于 2003-6-11 18:30 | 只看该作者
当然测试过,不过的文件号为15

我认为HWM 是针对 segment 来说的,而在跟踪文件中的Highwater应该是针对数据文件的,
因为该文件中可以创建多个表时,对应会为每个表分配对应的segment
而执行ALTER SYSTEM DUMP DATAFILE 10 BLOCK 2 输出的跟踪文件则只有一个
以下我的跟踪结果:
*** SESSION ID12.3399) 2003-06-11 18:26:57.687
Start dump data blocks tsn: 14 file#: 15 minblk 2 maxblk 2
buffer tsn: 14 rdba: 0x03c00002 (15/2)
scn: 0x0000.0012201e seq: 0x01 flg: 0x00 tail: 0x201e1001
frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED

  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      space2: 0      #extents: 4      #blocks: 7     
                  last map  0x00000000  #maps: 0      offset: 4128  
      Highwater::  0x03c0001e  ext#: 3      blk#: 3      ext size: 3     
  #blocks in seg. hdr's freelists: 2     
  #blocks below: 7     
  mapblk  0x00000000  offset: 3     
                   Unlocked
     Map Header:: next  0x00000000  #extents: 4    obj#: 24514  flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
   0x03c00003  length: 1     
   0x03c00013  length: 1     
   0x03c00019  length: 2     
   0x03c0001b  length: 3     
  
  nfl = 1, nfb = 1 typ = 1 nxf = 0
  SEG LST:: flg: USED   lhd: 0x03c0001c ltl: 0x03c0001d
End dump data blocks tsn: 14 file#: 15 minblk 2 maxblk 2

而当前文件中应包含了两个segment,因为我创建了两个。

使用道具 举报

回复
论坛徽章:
0
26#
发表于 2003-6-11 18:32 | 只看该作者
sorry,我的fileid是15,忘记改过来了

使用道具 举报

回复
论坛徽章:
0
27#
发表于 2003-6-11 21:45 | 只看该作者
还请继续定一下!
我认为HWM 是针对 segment 来说的,而在跟踪文件中的Highwater应该是针对数据文件的,
因为该文件中可以创建多个表时,对应会为每个表分配对应的segment
而执行ALTER SYSTEM DUMP DATAFILE 10 BLOCK 2 输出的跟踪文件则只有一个 Highwater

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
28#
 楼主| 发表于 2003-6-12 09:25 | 只看该作者
最初由 mihuxiao 发布
[B]还请继续定一下!
我认为HWM 是针对 segment 来说的,而在跟踪文件中的Highwater应该是针对数据文件的,
因为该文件中可以创建多个表时,对应会为每个表分配对应的segment
而执行ALTER SYSTEM DUMP DATAFILE 10 BLOCK 2 输出的跟踪文件则只有一个 Highwater [/B]


你为什么老dump block2呢?
对于不同的segment,HWM记录在不同的Segment Header上

SQL> select segment_name,block_id,blocks from dba_extents where owner='EQSP' and SEGMENT_TYPE='TABLE' and segment_name='T1';

SEGMENT_NAME           BLOCK_ID     BLOCKS
-------------------- ---------- ----------
T1                         3234          5

SQL> alter system dump datafile 8 block 3234;

系统已更改。

D:\oracle\admin\eygle\udump>ls
ORA01560.TRC

*** 2003-06-12 09:15:23.821
Start dump data blocks tsn: 8 file#: 8 minblk 3234 maxblk 3234
buffer tsn: 8 rdba: 0x02000ca2 (8/3234)
scn: 0x0000.00082e02 seq: 0x01 flg: 0x00 tail: 0x2e021001
frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED

  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      space2: 0      #extents: 1      #blocks: 4     
                  last map  0x00000000  #maps: 0      offset: 4128  
      Highwater::  0x02000ca4-3236[/COLOR]   ext#: 0      blk#: 1      ext size: 4     
  #blocks in seg. hdr's freelists: 1     
  #blocks below: 1     
  mapblk  0x00000000  offset: 0     
                   Unlocked
     Map Header:: next  0x00000000  #extents: 1    obj#: 4016   flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
   0x02000ca3  length: 4     
  
  nfl = 1, nfb = 1 typ = 1 nxf = 0
  SEG LST:: flg: USED   lhd: 0x02000ca3 ltl: 0x02000ca3
End dump data blocks tsn: 8 file#: 8 minblk 3234 maxblk 3234

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
29#
发表于 2003-6-12 09:39 | 只看该作者

不同的 segment 有不同的 HWM

这些 hwm 也存储在不同的 block 中(不同的extent)

你总是 dump datafile 10  block 2,这样自然永远只看见这一个block所记录的 hwm
你应该根据 不同的segment 的 block中记录的 hwm

hwm 不是记录在某一个固定的 block 中!

使用道具 举报

回复
论坛徽章:
0
30#
发表于 2003-6-12 12:04 | 只看该作者
多谢eygle AND biti_rainy !

终于清楚了这个问题。
一直把第二个块当成了DATAFILE的管理块,概念错误,而实质上是分配给SEGMENT的HEADER!
这样我的疑惑就全部清楚了!

下面对LMT的表空间进行一下验证!

第一块是FILE HEADER
第二个块是 file space bitmap header
而从块3到块8则是bitmap block
从块9开始分配给SEGMENT
以下我的实验:
create tablespace demo
datafile 'd:\oracle\oradata\test\oemdemo01.dbf' size 10m
extent management local uniform size 64k

ALTER SYSTEM DUMP DATAFILE 16 BLOCK 2 ;

Start dump data blocks tsn: 15 file#: 16 minblk 2 maxblk 2
buffer tsn: 15 rdba: 0x04000002 (16/2)
scn: 0x0000.0012708c seq: 0x02 flg: 0x00 tail: 0x708c1d02
frmt: 0x02 chkval: 0x0000 type: 0x1d=KTFB Bitmapped File Space Header

File Space Header Block:
Header Control:
RelFno: 16, Unit: 8, Size: 1280, Flag: 1
AutoExtend: NO, Increment: 0, MaxSize: 0
Initial Area: 7, Tail: 1280, First: 4, Free: 155
Header Opcode:
Save: No Pending Op
End dump data blocks tsn: 15 file#: 16 minblk 2 maxblk 2

create table tt ( id char(1000) ) storage ( minextents 2 ) tablespace demo;
create table xx (id char(1000)) storage ( minextents 2 ) tablespace demo;

ALTER SYSTEM DUMP DATAFILE 16 BLOCK 3 ;

*** 2003-06-12 11:55:17.843
Start dump data blocks tsn: 15 file#: 16 minblk 3 maxblk 3
buffer tsn: 15 rdba: 0x04000003 (16/3)
scn: 0x0000.0012708c seq: 0x01 flg: 0x00 tail: 0x708c1e01
frmt: 0x02 chkval: 0x0000 type: 0x1e=KTFB Bitmapped File Space Bitmap

File Space Bitmap Block:
BitMap Control:
RelFno: 16, BeginBlock: 9, Flag: 0, First: 4, Free: 63484
0F00000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000

ALTER SYSTEM DUMP DATAFILE 16 BLOCK 9 ;
Start dump data blocks tsn: 15 file#: 16 minblk 9 maxblk 9
buffer tsn: 15 rdba: 0x04000009 (16/9)
scn: 0x0000.00127080 seq: 0x02 flg: 0x00 tail: 0x70801002
frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED

  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      space2: 0      #extents: 2      #blocks: 15   
                  last map  0x00000000  #maps: 0      offset: 4128  
      Highwater::  0x0400000a  ext#: 0      blk#: 0      ext size: 7     
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 0     
  mapblk  0x00000000  offset: 0     
      Disk Lock:: Locked by scn:  0x0001.012.000000b0
     Map Header:: next  0x00000000  #extents: 2    obj#: 24516  flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
   0x0400000a  length: 7     
   0x04000011  length: 8     
  
  nfl = 1, nfb = 1 typ = 1 nxf = 0
  SEG LST:: flg: UNUSED lhd: 0x00000000 ltl: 0x00000000
End dump data blocks tsn: 15 file#: 16 minblk 9 maxblk 9


*** 2003-06-12 11:50:29.656
Start dump data blocks tsn: 15 file#: 16 minblk 25 maxblk 25
buffer tsn: 15 rdba: 0x04000019 (16/25)
scn: 0x0000.0012708c seq: 0x02 flg: 0x00 tail: 0x708c1002
frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED

  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      space2: 0      #extents: 2      #blocks: 15   
                  last map  0x00000000  #maps: 0      offset: 4128  
      Highwater::  0x0400001a  ext#: 0      blk#: 0      ext size: 7     
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 0     
  mapblk  0x00000000  offset: 0     
      Disk Lock:: Locked by scn:  0x0003.056.000000ac
     Map Header:: next  0x00000000  #extents: 2    obj#: 24517  flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
   0x0400001a  length: 7     
   0x04000021  length: 8     
  
  nfl = 1, nfb = 1 typ = 1 nxf = 0
  SEG LST:: flg: UNUSED lhd: 0x00000000 ltl: 0x00000000
End dump data blocks tsn: 15 file#: 16 minblk 25 maxblk 25

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表