只适用于非ASSM: create or replace procedure show_space ( p_segname in varchar p_owner in varchar default user p_type in varchar default TABLE ) 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; procedure p( p_label in varchar p_num in number ) is begin dbms_outputput_line( rpad(p_label) || p_num ); end; begin dbms_spacefree_blocks ( segment_owner => p_owner segment_name => p_segname segment_type => p_type freelist_group_id => free_blks => l_free_blks ); dbms_spaceunused_space ( segment_owner => p_owner segment_name => p_segname segment_type => p_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 ); p( Free Blocks l_free_blks ); p( Total Blocks l_total_blocks ); p( Total Bytes l_total_bytes ); 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; / 例 SQL> create table donny(id char()); 表已创建 SQL> set serveroutput on SQL> exec show_space(DONNY) Free Blocks Total Blocks Total Bytes Unused Blocks Unused Bytes Last Used Ext FileId Last Used Ext BlockId Last Used Block PL/SQL 过程已成功完成 SQL> |