十五、dbms_space(分析段增长和空间的需求)
1、概述
作用:用于分析段增长和空间的需求。
2、包的组成
1)、unused_space
作用:用于返回对象(表、索引、簇)的未用空间
语法:dbms_space.unused_space(segment_owner in varchar2,
segment_name in varchar2,segment_type in varchar2,
total_blocks out number,total_bytes out number,
unused_blocks out number,unused_bytes out number,
last_used_extent_file_id out number,
last_used_extent_block_id out number,
last_used_block out number,
partition_name in varchar2 default null);
其中segment_owner指定段所有者,segment_name指定段名,segment_type指定段类型,
tatal_blocks返回段的总计块个数,total_bytes返回段的总计字节数,
unused_blocks返回段的末用块个数,unused_byte返回段未用字节,
last_used_extent_file_id返回包含数据的最后一个区所在文件的编号,
last_used_extent_block_id返回包含数据的最有一个区的块编号,
last_used_block返回包含数据的最有一个区的最后一个块,
partition_name指定要分析的段分区号。
2)、free_blocks
作用:用于返回对象(表、索引、簇)的空闲块信息。
语法:dbms_space.free_blocks(segment_owner
in varchar2,segment_name in varchar2,segment_type in
varchar2,freelist_group_id in number,
free_blks out number,scan_limit in number default null,partition_name in varchar2 default null);
其中freelist_group_id指定返回空闲列表组所对应的空闲列表个数,scan_limit指定要读取的空闲列表块的最大个数。
3)、space_usage
作用:显示段HWM(High Water Mark)以下数据块的空闲使用情况,并且该过程只适用于自动段空间管理的表空间。
语法:dbms_space.space_usage(segment_owner
in varchar2,segment_name in varchar2,segment_type in
varchar2,unformatted_blocks out number,unformatted_bytes out number,
fs1_blocks out number,fs1_bytes out number,
fs2_blocks out number,fs2_bytes out number,
fs3_blocks out number,fs3_bytes out number,
fs4_blocks out number,fs4_bytes out number,
full_blocks out number,full_bytes out number,
partition_name in varchr2 default null);
其中unformatted_blocks用于返回未格式化块的个数,unformatted_bytes用于返回未格式化的字节数,
fs1_blocks用于返回空闲空间在0~25%之间的块个数,fs1_bytes返回空闲空间在0~25%之间的字节数,2范围为25%~50%之间,3范围为50%~75%之间,4范围为75%~100%之间。
full_blocks返回段的总计块个数,full_bytes返回段的总计字节数。
3、综合例子
1)、简单例子
例子:
declare total_blocks number; total_bytes number; unused_blocks number; unused_bytes number; last_used_extent_file_id number; last_used_extent_block_id number; last_used_block number; free_blocks number; variable unf number, variable unfb number, variable fs1 number, variable fs1b number, variable fs2 number, variable fs2b number, variable fs3 number, variable fs3b number, variable fs4 number, variable fs4b number, variable full number, variable fullb number, begin --unused_space dbms_space.unused_space('SYSTEM','T1','TABLE',total_blocks,total_bytes,unused_blocks,unused_bytes,last_used_extent_file_id,last_used_extent_block_id,last_used_block); dnms_output.put_line(to_char('HWM='||total_blocks-unused_blocks-1)); --free_blocks dbms_space.free_blocks('SYSTEM','T1','TABLE',0,free_blocks); dbms_output.put_line('组0的空闲列表个数'||free_blocks); --space_usage dbms_space.space_usage('U1','T','TABLE',:nuf,:unfb,:fs1,:fs1b,:fs2,:fs2b,:fs3,:fs3b,:fs4,:fs4b,:fnull,:fnullb); end;