oracle清除试图的数据,实例演示oracle数据块状态视图v$bh的用法一 获取oracle对象所占用的数据块...

3,检查表test的空间使用情况:SQL> exec show_space('TEST');

Total Blocks............................24

Total Bytes.............................196608

Unused Blocks...........................3

Unused Bytes............................24576

Last Used Ext FileId....................1

Last Used Ext BlockId...................62177

Last Used Block.........................5由上可知,该表test共占用了24个数据块,196608字节,文件ID为1

4,获得表test在数据块中的分布情况:SQL> select f,b from (

2  select dbms_rowid.rowid_relative_fno(rowid) f,

3         dbms_rowid.rowid_block_number(rowid) b

4  from test) group by f,b order by b;

F          B

---------- ----------

1      62162

1      62163

1      62164

1      62165

1      62166

1      62167

1      62168

1      62169

1      62170

1      62171

1      62172

1      62173

1      62174

1      62175

1      62176

1      62177

16 rows selected.由此可见,表test中的数据共占用了16个数据块,但是前面第三步中,发现该表占用了24个数据块。这是正常的,因为oracle本身会使用8个数据块来记录段头、位图块等额外的信息。我们现在只需要了解到,表test共占用了24个数据块,其中16个是数据,8个是表信息。5,检查x$bh和v$bh的更新:SQL> select file#,dbablk,tch from x$bh where bj=

2  (select data_object_id from dba_objects

3  where wner='SYS'  and object_name='TEST')

4  order by dbablk;

FILE#     DBABLK        TCH

---------- ---------- ----------

1      62161          6

1      62162          3

1      62163          3

1      62164          3

1      62165          3

1      62166          3

1      62167          3

1      62168          3

1      62169          3

1      62170          3

1      62171          3

1      62172          3

1      62173          3

1      62174          3

1      62175          3

1      62176          3

1      62177          3

1      62178          3

1      62179          3

1      62180          3

1      62181          3

21 rows selected.

SQL> select file#,block#,status from v$bh where bjd=

2  (select data_object_id from dba_objects

3  where wner='SYS'  and object_name='TEST')

4  order by block#;

FILE#     BLOCK# STATUS

---------- ---------- -------

1      62161 xcur

1      62162 xcur

1      62163 xcur

1      62164 xcur

1      62165 xcur

1      62166 xcur

1      62167 xcur

1      62168 xcur

1      62169 xcur

1      62170 xcur

1      62171 xcur

1      62172 xcur

1      62173 xcur

1      62174 xcur

1      62175 xcur

1      62176 xcur

1      62177 xcur

1      62178 xcur

1      62179 xcur

1      62180 xcur

1      62181 xcur

21 rows selected.这里可以看到,在v$bh和x$bh中得到的数据块,是从62161~62181的21条记录,但是在第四步中,我们知道数据是占用了62162~62177的16个数据库,这里,62161数据块里面存放的是段头信息,可以通过如下命令进行验证:SQL> select header_file,header_block from dba_segments

2  where wner='SYS' and segment_name='TEST';

HEADER_FILE HEADER_BLOCK

----------- ------------

1        62161在v$bh视图中,我们可以看到这21个数据块都是xcur状态,表示这些数据块都是排斥状态,正在被使用,该字段还有其他的类型,请参见。(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值