DBMS_SPACE包中常用的过程

本文介绍Oracle数据库中s_space程序包的使用方法,特别是unused_space过程,用于查询表对象的空间使用情况,包括总块数、总字节数、未使用块数等详细信息。
s_space程序包中包括查找各种段中使用了多少空间以及还有多少空间可用,主要的一下三个过程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值