2026-03-12 20:23:15
This commit is contained in:
130
vdh/segment_space_usage.sql
Normal file
130
vdh/segment_space_usage.sql
Normal file
@@ -0,0 +1,130 @@
|
||||
set serveroutput on
|
||||
set verify off
|
||||
|
||||
DECLARE
|
||||
|
||||
l_segment_owner varchar2(30);
|
||||
l_segment_name varchar2(30);
|
||||
l_partition_name varchar2(30);
|
||||
l_segment_type varchar2(30);
|
||||
l_unformatted_blocks number;
|
||||
l_unformatted_bytes number;
|
||||
l_fs1_blocks number; -- Number of blocks that has at least 0 to 25% free space
|
||||
l_fs1_bytes number; -- Number of bytes that has at least 0 to 25% free space
|
||||
l_fs2_blocks number; -- Number of blocks that has at least 25 to 50% free space
|
||||
l_fs2_bytes number; -- Number of bytes that has at least 25 to 50% free space
|
||||
l_fs3_blocks number; -- Number of blocks that has at least 50 to 75% free space
|
||||
l_fs3_bytes number; -- Number of bytes that has at least 50 to 75% free space
|
||||
l_fs4_blocks number; -- Number of blocks that has at least 75 to 100% free space
|
||||
l_fs4_bytes number; -- Number of bytes that has at least 75 to 100% free space
|
||||
l_full_blocks number; -- Total number of blocks that are full in the segment
|
||||
l_full_bytes number; -- Total number of bytes that are full in the segment
|
||||
l_total_blocks number;
|
||||
l_total_bytes number;
|
||||
l_unused_blocks number;
|
||||
l_unused_bytes number;
|
||||
l_last_used_extent_file_id number;
|
||||
l_last_used_extent_block_id number;
|
||||
l_last_used_block number;
|
||||
l_free_blks number;
|
||||
l_segment_space_management varchar2(30);
|
||||
|
||||
BEGIN
|
||||
|
||||
select ts.segment_space_management
|
||||
into l_segment_space_management
|
||||
from dba_segments seg, dba_tablespaces ts
|
||||
where seg.owner = '&&segment_owner'
|
||||
and seg.segment_name = '&&segment_name'
|
||||
and ( '&&partition_name' is null
|
||||
or seg.partition_name = '&&partition_name'
|
||||
)
|
||||
and seg.tablespace_name = ts.tablespace_name;
|
||||
|
||||
if l_segment_space_management = 'AUTO'
|
||||
then
|
||||
|
||||
dbms_space.space_usage
|
||||
( segment_owner => '&&segment_owner',
|
||||
segment_name => '&&segment_name',
|
||||
segment_type => '&&segment_type',
|
||||
partition_name => '&&partition_name',
|
||||
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
|
||||
);
|
||||
|
||||
dbms_output.put_line('blocks');
|
||||
dbms_output.put_line(' unformatted : ' || to_char(l_unformatted_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 0 to 25% free space : ' || to_char(l_fs1_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 25 to 50% free space : ' || to_char(l_fs2_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 50 to 75% free space : ' || to_char(l_fs3_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 75 to 100% free space : ' || to_char(l_fs4_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' full : ' || to_char(l_full_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.new_line;
|
||||
dbms_output.put_line('bytes');
|
||||
dbms_output.put_line(' unformatted : ' || to_char(l_unformatted_bytes, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 0 to 25% free space : ' || to_char(l_fs1_bytes, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 25 to 50% free space : ' || to_char(l_fs2_bytes, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 50 to 75% free space : ' || to_char(l_fs3_bytes, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' 75 to 100% free space : ' || to_char(l_fs4_bytes, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' full : ' || to_char(l_full_bytes, '9G999G999G999G999G999'));
|
||||
|
||||
else
|
||||
|
||||
dbms_space.free_blocks
|
||||
( segment_owner => '&&segment_owner',
|
||||
segment_name => '&&segment_name',
|
||||
segment_type => '&&segment_type',
|
||||
freelist_group_id => 0,
|
||||
free_blks => l_free_blks
|
||||
);
|
||||
|
||||
dbms_output.put_line('free blocks : ' || to_char(l_free_blks, '9G999G999G999G999G999'));
|
||||
|
||||
end if;
|
||||
|
||||
dbms_space.unused_space
|
||||
( segment_owner => '&&segment_owner',
|
||||
segment_name => '&&segment_name',
|
||||
segment_type => '&&segment_type',
|
||||
partition_name => '&&partition_name',
|
||||
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_last_used_extent_file_id,
|
||||
last_used_extent_block_id => l_last_used_extent_block_id,
|
||||
last_used_block => l_last_used_block
|
||||
);
|
||||
|
||||
dbms_output.put_line('blocks');
|
||||
dbms_output.put_line(' total : ' || to_char(l_total_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' unused : ' || to_char(l_unused_blocks, '9G999G999G999G999G999'));
|
||||
dbms_output.new_line;
|
||||
dbms_output.put_line('bytes');
|
||||
dbms_output.put_line(' total : ' || to_char(l_total_bytes, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' unused : ' || to_char(l_unused_bytes, '9G999G999G999G999G999'));
|
||||
dbms_output.new_line;
|
||||
dbms_output.put_line('last used extent');
|
||||
dbms_output.put_line(' file id : ' || to_char(l_last_used_extent_file_id, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' starting block id : ' || to_char(l_last_used_extent_block_id, '9G999G999G999G999G999'));
|
||||
dbms_output.put_line(' last block : ' || to_char(l_last_used_block, '9G999G999G999G999G999'));
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
undefine segment_owner
|
||||
undefine segment_name
|
||||
undefine segment_type
|
||||
undefine partition_name
|
||||
|
||||
Reference in New Issue
Block a user