oracle的show_space存储过程

  1. 在tom大师的记录中看到使用show_space,这里展示上面的代码
  2. 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;
      l_segment_space_mgmt varchar2(255);
      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;

      procedure p(p_label in varchar2, p_num in number) is
      begin
        dbms_output.put_line(rpad(p_label, 40, '.') ||
                             to_char(p_num, '999,999,999,999'));
      end;
    begin
      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 l_segment_space_mgmt
        using p_segname, p_partition, p_partition, p_owner;

      --     exception
      --             when too_many_rows
      --             then
      --             dbms_output.put_line('This must be a partitioned table,use p_partition => ');
      --             return;
      --     end;

      l_segment_space_mgmt := 'AUTO';

      if l_segment_space_mgmt = 'AUTO' then
        dbms_space.space_usage(p_owner,
                               p_segname,
                               p_type,
                               l_unformatted_blocks,
                               l_unformatted_bytes,
                               l_fs1_blocks,
                               l_fs1_bytes,
                               l_fs2_blocks,
                               l_fs2_bytes,
                               l_fs3_blocks,
                               l_fs3_bytes,
                               l_fs4_blocks,
                               l_fs4_bytes,
                               l_full_blocks,
                               l_full_bytes,
                               p_partition);
     
        p('Unformatted Blocks  ', l_unformatted_blocks);
        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('Full Blocks         ', l_full_blocks);
      else
        dbms_space.free_blocks(segment_owner     => p_owner,
                               segment_name      => p_segname,
                               segment_type      => p_type,
                               freelist_group_id => 0,
                               free_blks         => l_free_blks);
      end if;

      dbms_space.unused_space(segment_owner             => p_owner,
                              segment_name              => p_segname,
                              segment_type              => p_type,
                              partition_name            => p_partition,
                              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);

      p('Total Blocks ', l_total_blocks);
      p('Total Bytes  ', l_total_bytes);
      p('Total MBytes ', trunc(l_total_bytes / 1024 / 1024));
      p('Unused Blocks', l_unused_blocks);
      p('Unused Bytes ', l_unused_bytes);
      p('Last Used Ext FileId', l_lastusedextfileid);
      p('Last Used Ext BlockId', l_lastusedextblockid);
      p('Last Used Block', l_last_used_block);
    end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值