设为首页 加入收藏

TOP

Oracle查看对象空间使用情况show_space(一)
2015-11-10 12:17:15 来源: 作者: 【 】 浏览:7
Tags:Oracle 查看 对象 空间 使用 情况 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;


? 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;–用法演示


create table test_space
AS
select * from dba_tables;
/SYS@orcl> exec show_space('TEST_SPACE

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle 表压缩(Table Compression.. 下一篇Oracle 11gr2新增APPEND_VALUES提..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: