oracle的show_space預存程序

來源:互聯網
上載者:User

Tom大師寫的show_space的其中一個版本. 常用於儲存空間的分析.

 

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;


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.