ORACLE存储过程show_space完整版

show_space的版本在网络上有不少版本. 今天整理出一个通用的版本, 以后用.
 create or replace procedure show_space(v_segment_name in varchar2, v_segment_owner in varchar2 default user, v_segment_type in varchar2 default 'TABLE', p_analyzed in varchar2 default 'Y', p_partition_name in varchar2 default null) as p_segment_name varchar2(30); p_segment_owner varchar2(30); p_segment_type varchar2(30); p_space varchar2(30); l_unformatted_blocks number; l_unformatted_bytes number; l_fs1_blocks number; l_fs1_bytes number; l_fs2_blocks number; l_fs2_bytes number; l_fs3_blocks number; l_fs3_bytes number; l_fs4_blocks number; l_fs4_bytes number; l_full_blocks number; l_full_bytes number; 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) is begin dbms_output.put_line(rpad(p_label, 40, '.') || p_num); end; begin p_segment_name := upper(v_segment_name); p_segment_owner := upper(v_segment_owner); p_segment_type := upper(v_segment_type); if (p_segment_type = 'I' or p_segment_type = 'INDEX') then p_segment_type := 'INDEX'; elsif (p_segment_type = 'T' or p_segment_type = 'TABLE') then p_segment_type := 'TABLE'; elsif (p_segment_type = 'C' or p_segment_type = 'CLUSTER') then p_segment_type := 'CLUSTER'; end if; execute immediate 'select ts.segment_space_management from dba_segments seg, dba_tablespaces ts where seg.segment_name = :p_segname and (:p_partition is null or seg.partition_name = :p_partition) and seg.owner = :p_owner and seg.tablespace_name = ts.tablespace_name' into p_space using p_segment_name, p_partition_name, p_partition_name, p_segment_owner; dbms_space.unused_space(segment_owner => p_segment_owner, segment_name => p_segment_name, segment_type => p_segment_type, total_blocks => l_total_blocks, total_bytes => l_total_bytes, unused_blocks => l_unused_blocks, unused_bytes => l_unused_bytes, last_used_extent_file_id => l_lastusedextfileid, last_used_extent_block_id => l_lastusedextblockid, last_used_block => l_last_used_block, partition_name => p_partition_name); p('Total Blocks ', l_total_blocks); p('Total Bytes ', l_total_bytes); p('Total MBytes ', l_total_bytes / 1024 / 1024); p('Unused Blocks ', l_unused_blocks); p('Unused Bytes ', l_unused_bytes); p('Unused KBytes ', l_unused_bytes / 1024); p('Used Blocks ', l_total_blocks - l_unused_blocks); p('Used Bytes ', l_total_bytes - l_unused_bytes); p('Used KBytes ', (l_total_bytes - l_unused_bytes) / 1024); p('Last Used Ext FileId', l_lastusedextfileid); p('Last Used Ext BlockId', l_lastusedextblockid); p('Last Used Block', l_last_used_block); if p_analyzed = 'Y' then if p_space = 'AUTO' then dbms_space.space_usage(segment_owner => p_segment_owner, segment_name => p_segment_name, segment_type => p_segment_type, unformatted_blocks => l_unformatted_blocks, unformatted_bytes => l_unformatted_bytes, fs1_blocks => l_fs1_blocks, fs1_bytes => l_fs1_bytes, fs2_blocks => l_fs2_blocks, fs2_bytes => l_fs2_bytes, fs3_blocks => l_fs3_blocks, fs3_bytes => l_fs3_bytes, fs4_blocks => l_fs4_blocks, fs4_bytes => l_fs4_bytes, full_blocks => l_full_blocks, full_bytes => l_full_bytes, partition_name => p_partition_name); dbms_output.put_line(''); dbms_output.put_line('The segment is analyzed below'); p('FS1 Blocks (0-25) ', l_fs1_blocks); p('FS2 Blocks (25-50) ', l_fs2_blocks); p('FS3 Blocks (50-75) ', l_fs3_blocks); p('FS4 Blocks (75-100) ', l_fs4_blocks); p('Unformatted Blocks ', l_unformatted_blocks); p('Full Blocks ', l_full_blocks); else dbms_space.free_blocks(segment_owner => p_segment_owner, segment_name => p_segment_name, segment_type => p_segment_type, freelist_group_id => 0, free_blks => l_free_blks); p('Free Blocks', l_free_blks); end if; end if; end; 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值