unused_space过程提供一个对象未使用的空间信息
free_blocks过程提供一个段中的可用块数
space_usage过程给出块空间使用细节
下面过程unused_space过程演示:
SQL> begin
2 for i in 1..5000 loop
3 insert into name values(i,i);
4 end loop;
5 commit;
6 end;
7 /
PL/SQL 过程已成功完成。
SQL> /
PL/SQL 过程已成功完成。
SQL> /
PL/SQL 过程已成功完成。
SQL> /
PL/SQL 过程已成功完成。
SQL> select count(1) from name;
COUNT(1)
----------
20000
SQL> delete from name where rownum <6000;
已删除5999行。
SQL> select count(1) from name;
COUNT(1)
----------
14001
SQL> show user
USER 为 "HA"
SQL> set serveroutput on
SQL>
SQL>
SQL> declare
2 v_total_blocks number;
3 v_total_bytes number;
4 v_unused_blocks number;
5 v_unused_bytes number;
6 v_last_used_extent_file_id number;
7 v_last_used_extent_block_id number;
8 v_last_used_block number;
9 begin
10 DBMS_SPACE.UNUSED_SPACE (
11 segment_owner =>'HA',
12 segment_name =>'NAME',
13 segment_type =>'TABLE',
14 total_blocks =>v_total_blocks ,
15 total_bytes =>v_total_bytes ,
16 unused_blocks =>v_unused_blocks ,
17 unused_bytes =>v_unused_bytes ,
18 last_used_extent_file_id =>v_last_used_extent_file_id ,
19 last_used_extent_block_id =>v_last_used_extent_block_id ,
20 last_used_block =>v_last_used_block ,
21 partition_name => NULL);
22 dbms_output.put_line ('number of total blocks :' ||v_total_blocks);
23 dbms_output.put_line ('number of total bytes :' ||v_total_bytes);
24 dbms_output.put_line ('number of unused blocks :' ||v_unused_blocks);
25 dbms_output.put_line ('number of unused bytes :' ||v_unused_bytes );
26 dbms_output.put_line ('number of last used extent fileid:' ||v_last_used_ex
tent_file_id);
27 dbms_output.put_line ('number of last used extent blockid :'||v_last_used_e
xtent_block_id);
28 end;
29 /
number of total blocks :48
number of total bytes :393216
number of unused blocks :0
number of unused bytes :0
number of last used extent fileid:4
number of last used extent blockid :560
PL/SQL 过程已成功完成。
SQL>
dbms_space包的其他过程和方法请参见PL/SQL Packages and Types Reference
本文介绍Oracle数据库中s_space程序包的使用方法,特别是unused_space过程,用于查询表对象的空间使用情况,包括总块数、总字节数、未使用块数等详细信息。
4555

被折叠的 条评论
为什么被折叠?



