当前位置:  数据库>oracle

Oracle查看对象空间使用情况show_space

    来源: 互联网  发布时间:2017-06-19

    本文导语: Oracle查看对象空间使用情况show_space,一个用于查看Oracle数据库对象空间使用情况。 下面演示一下如何使用: –工具源码 CREATE OR REPLACE PROCEDURE show_space(p_segname  IN VARCHAR2,                                      p_owner    IN VAR...

Oracle查看对象空间使用情况show_space,一个用于查看Oracle数据库对象空间使用情况。

下面演示一下如何使用:

–工具源码

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');Total Blocks ……………………… 112
Total Bytes ……………………… 917,504
Total MBytes ……………………… 0
Unused Blocks……………………… 3
Unused Bytes ……………………… 24,576
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 115,608
Last Used Block……………………. 5

PL/SQL 过程已成功完成。

SYS@orcl> delete from test_space;1
已删除3044行。

SYS@orcl> commit;1
提交完成。

SYS@orcl> exec show_space('TEST_SPACE');1
Total Blocks ……………………… 112
Total Bytes ……………………… 917,504
Total MBytes ……………………… 0
Unused Blocks……………………… 3
Unused Bytes ……………………… 24,576
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 115,608
Last Used Block……………………. 5

PL/SQL 过程已成功完成。

SYS@orcl> truncate table test_space;表被截断。

SYS@orcl> exec show_space(‘TEST_SPACE’);
Total Blocks ……………………… 8
Total Bytes ……………………… 65,536
Total MBytes ……………………… 0
Unused Blocks……………………… 7
Unused Bytes ……………………… 57,344
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 101,872
Last Used Block……………………. 1

PL/SQL 过程已成功完成。

drop table test_space;


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 8x监控sysdba角色用户登陆情况
  • oracle中不知道某数据库用户密码的情况下也能登陆
  • 在Oracle中监控和跟踪索引使用情况
  • 查看Oracle CPU情况
  • Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况
  • Oracle 查看表空间的大小及使用情况sql语句
  • oracle查询锁表与解锁情况提供解决方案
  • [Oracle] 解析在没有备份的情况下undo损坏怎么办
  • 有关Oracle数据库的备份情况
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3