high water mark之所以重要是因为它对全表扫描性能的影响。当实施一个全表扫描时,oracle会读取所有high water mark下的块即使它们是空块。当high water mark 下有很多unused block时实施全表扫描会增加额外的不必要的i/o。它也会在全局共享区中填充很多很多空块。
3.分析方法
存储参数基本上属于oracle internal的东西,因此oralce并没有提供很好的手段来分析。但是对于dba来说,还是可以通过block dump和dbms_space等手段来获取部分信息。
3.1 提取block和free list信息
创建dbms_space使用的存储过程show_space
sql>
create or replace procedure show_space
( p_segname in varchar2,
p_owner in varchar2 default user,
p_type in varchar2 default 'table',
p_partition in varchar2 default null )
as
l_free_blks number;
l_total_blocks number;
l_total_bytes number;
l_unused_blocks number;
l_unused_bytes number;
l_lastusedextfileid number;
l_lastusedextblockid number;
l_last_used_block number;
procedure p( p_label in varchar2, p_num in number )