得到tablespace使用率的脚本

用PLSQL procedure:

CREATE OR REPLACE PROCEDURE GET_TABLESPACE_USAGE (
        m_limit in number default 0
)
AS
BEGIN
    DECLARE
         RunDate      date;
         DatabaseName v$database.name%type;
         TabSpaceName dba_tablespaces.tablespace_name%type;
         TabSpaceType dba_tablespaces.contents%type;
         TotalSpace   dba_data_files.bytes%type;
         FreeSpace    dba_free_space.bytes%type;
         SumTotal     dba_data_files.bytes%type;
         SumFree      dba_data_files.bytes%type;
         SumUsed      dba_data_files.bytes%type;
         CURSOR name_cursor IS
              select tablespace_name,contents from dba_tablespaces order by 1;
    BEGIN
        select sysdate into RunDate from dual;
        select name into DatabaseName from v$database;
        dbms_output.put_line ('Database : '|| DatabaseName);
        dbms_output.put_line ('Run Date : '|| to_char(RunDate,'YYYY-MM-DD HH24:MI:SS'));
        dbms_output.new_line;
        dbms_output.new_line;
        dbms_output.put_line
         ('---------------------------  ---------  --------  --------    -----    -----');
        dbms_output.put_line
         ('TableSpace Name              Total (M)  Used (M)  Free (M)    %Used    %Free');
        dbms_output.put_line
         ('---------------------------  ---------  --------  --------    -----    -----');
        SumTotal := 0;
        SumFree  := 0;
        SumUsed  := 0;
        FOR name_cursor_rec IN name_cursor LOOP
            TabSpaceName := name_cursor_rec.tablespace_name;
            TabSpaceType := name_cursor_rec.contents;
            if TabSpaceType = 'TEMPORARY' then
                    select nvl(sum(bytes)/1048576,0) into TotalSpace
                    from dba_temp_files
                    where tablespace_name = TabSpaceName;
                    select nvl(sum(bytes_free)/1048576,0) into FreeSpace
                    from v$temp_space_header
                    where tablespace_name = TabSpaceName;
            else
                    select nvl(sum(bytes)/1048576,0) into TotalSpace
                    from dba_data_files
                    where tablespace_name = TabSpaceName;
                    select nvl(sum(bytes)/1048576,0) into FreeSpace
                    from dba_free_space
                    where tablespace_name = TabSpaceName;
            end if;
            SumTotal := SumTotal + TotalSpace;
            SumFree  := SumFree  + FreeSpace;
            SumUsed  := SumUsed  + (TotalSpace-FreeSpace);
            if (TotalSpace-FreeSpace)/TotalSpace*100 >= m_limit then
            dbms_output.put_line
            (
              rpad(TabSpaceName,30)
              || '   '||
              to_char(TotalSpace,'999,999')
              || '  '||
              to_char(TotalSpace-FreeSpace,'999,999')
              || '  '||
              to_char(FreeSpace,'999,999')
              || '  '||
              to_char ((TotalSpace-FreeSpace)/TotalSpace*100,'999.99')
              || '  '||
              to_char (FreeSpace/TotalSpace*100,'999.99')
            );
            end if;
        END LOOP;
        dbms_output.put_line
         ('---------------------------------------------------------------------------- ');
        dbms_output.put_line
         (
             'TOTAL                          '
             || '  '||
             to_char(SumTotal,'999,999')
             || '  '||
             to_char(SumUsed,'999,999')
             || '  '||
             to_char(SumFree,'999,999')
             || '  '||
             to_char (SumUsed/SumTotal*100,'999.99')
             || '  '||
             to_char (SumFree/SumTotal*100,'999.99')
         );
        dbms_output.put_line
         ('---------------------------------------------------------------------------- ');
    END;
END;

 

 

 

 

用SQL语句:

col free for a10
col usage for a10
col tablespace_name for a30
col total for a10
set pagesize 100
with 
s_total as (
select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name
union all
select tablespace_name, sum(bytes) bytes
from dba_temp_files
group by tablespace_name
),
s_free as (
select tablespace_name, sum(bytes) bytes
from dba_free_space
group by tablespace_name
union all
select tablespace_name,bytes_free
from v$temp_space_header
)
select m.tablespace_name
, case
 when m.bytes < 1024 then m.bytes || 'B' 
 when m.bytes >= 1024 and m.bytes < (1024 *1024-1) then round(m.bytes / 1024) || 'KB'
 when m.bytes >= 1024 * 1024 and m.bytes < (1024 * 1024 * 1024-1) then round(m.bytes / 1024 / 1024) || 'MB'
 when m.bytes >= 1024 * 1024 * 1024and m.bytes < (1024 * 1024 * 1024 * 1024-1) then round(m.bytes / 1024 / 1024 / 1024) || 'GB'
end as TOTAL
, case
 when f.bytes < 1024 or f.bytes is null then nvl(f.bytes,0) || 'B'
 when f.bytes >= 1024 and f.bytes < (1024 * 1024 -1) then round (f.bytes / 1024) || 'KB'
 when f.bytes >= 1024 * 1024 and f.bytes < (1024 * 1024 * 1024-1) then round (f.bytes / 1024 / 1024) || 'MB'
 when f.bytes >= 1024 * 1024 * 1024and f.bytes < (1024 * 1024 * 1024 * 1024-1) then round (f.bytes / 1024 / 1024 / 1024) || 'GB'
end as FREE
, 100 - round(nvl(f.bytes,0) / m.bytes * 100 ) || '%' USAGE
from s_TOTAL M, S_FREE F
where m.tablespace_name = f.tablespace_name(+)
order by usage desc;
 

其实主要就是用dba_data_files(找总的size)和dba_free_space(找未使用的size)这两个view

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值