10g 下如何查lobsegment的free blocks

[复制链接]
查看11 | 回复3 | 2009-10-9 08:28:00 | 显示全部楼层 |阅读模式
有张表有个lob字段,相应的lobsegment 达到20g
SQL> select segment_name,segment_type,bytes/1024/1024,
2owner,tablespace_name
3from dba_segments
4where segment_name='SYS_LOB0000049761C00002$$'
5order by tablespace_name,segment_type,bytes,segment_name desc;
SEGMENT_NAME
SEGMENT_TYPE BYTES/1024/1024 OWNER TABLESPACE_NAME
--------------------------- -------------- --------------- --------- ---------------
SYS_LOB0000049761C00002$$ LOBSEGMENT
20864 XXXX XXXXX
我想看看是不是业务delete 造成高水位没有回收
我用dbms_space.free_blocks查但是报错
SQL> declare
2free_blocks number;
3begin
4DBMS_SPACE.FREE_BLOCKS('xxxxx', 'SYS_LOB0000049761C00002$$', 'LOB',0 ,free_blocks);
5dbms_output.put_line('Nb of free blocks = '||free_blocks);
6end;
7/
declare
*
ERROR at line 1:
ORA-10618: Operation not allowed on this segment
ORA-06512: at "SYS.DBMS_SPACE", line 152
ORA-06512: at line 4

在9i下测试,能够通过,10g下过不去。
请高手支招
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
Your tablespace is ASSM.
"If AUTO, use dbms_space.space_usage instead to get space usage below HWM."
Ref: http://yong321.freeshell.org/oranotes/Dbms_Space.txt
Yong Huang
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
dump 第二个block看看,就是segment header后面那个block。这个是管理old image part的block,如果delete过多的话,里面应该有很多free block
回复

使用道具 举报

千问 | 2009-10-9 08:28:00 | 显示全部楼层
这个学习了
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行