`
ahuzl007
  • 浏览: 25739 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

得到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

 

 

 

 

分享到:
评论

相关推荐

    oracle空间使用率

    此SQL脚本用于计算Oracle数据库中各个表空间的使用率: 1. **表空间名**:显示具体的表空间名称。 2. **Total_MB**:计算每个表空间的总大小(MB)。 3. **Used_MB**:计算每个表空间已使用的空间大小(MB)。 4. *...

    查看oracle表空间利用率的三个脚本

    此脚本主要关注于表空间的整体利用率,通过计算已使用空间与总空间的比例来确定利用率。脚本的关键部分包括: 1. **统计空闲空间**:使用`SYS.DBA_FREE_SPACE`视图来汇总每个表空间下的所有空闲块的大小。 2. **...

    oracle数据库表空间监控实用脚本

    2. **计算碎片率**:利用`(sum(free)*100/sum(bytes))`计算表空间的碎片率,其中`sum(free)`表示总的空闲空间,`sum(bytes)`表示总的分配空间。 3. **结果解读**:当计算得到的百分比小于30时,表明该表空间存在较高...

    DBA常用的数据库脚本精华汇总

    以下脚本可以显示每个表空间的总空间、已使用空间、使用率和剩余空间。 ``` SELECT D.TABLESPACE_NAME, SPACE "SUM_SPACE(M)", BLOCKS SUM_BLOCKS, ... FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*...

    oracle 常用脚本

    这部分脚本提供了表空间的使用率分析,不仅展示了每个表空间的自由空间,还计算了使用百分比和自由百分比,帮助管理员评估空间利用率和规划未来的存储需求。 ```sql -- 查看自由空间 SELECT SUM(bytes)/(1024*1024)...

    数据库巡检脚本.txt

    - **说明**:此查询提供了一个更加全面的表空间使用情况报告,包括总的大小、已用空间、剩余空间以及使用率和剩余率。 - **应用场景**:对于整体评估表空间状态非常有用,特别是需要定期生成报告的情况下。 #### ...

    Oracle中查看表空间使用率的SQL脚本分享

    脚本执行后,会返回一个结果集,其中包含了每个表空间的名称(TABLESPACE_NAME)、总空间(SUM_SPACE(M))、总块数(SUM_BLOCKS)、已用空间(USED_SPACE(M))、使用率(USED_RATE(%))以及空闲空间(FREE_SPACE(M)...

    wxh oracle常用SQL脚本

    D.TOT_GROOTTE_MB * 100, 2), '990.99') "使用率%", F.TOTAL_BYTES "可用空间(M)", F.MAX_BYTES "(M)" FROM ( SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) ...

    数据库性能健康检查脚本

    - **命令解释**:显示系统当前的CPU使用率、内存使用情况等信息。 - **意义**:通过观察这些指标,可以了解服务器的整体负载情况,从而判断服务器是否满足数据库的需求。 ##### 4. CRS集群检查 ```shell crsctl ...

    修改Nagios的checkoracle脚本来监控Oracle的临时表空间.pdf

    在这个分支中,脚本将执行新编写的SQL查询,计算临时表空间的使用率,并根据预设的阈值判断是否发出警告或警报。此外,还需要确保脚本能够处理多个临时表空间,而不仅仅是名为"TEMP"的默认临时表空间。 在修改后的...

    ORACLE精品脚本笔记

    例如,通过`dba_free_space`视图可以查找碎片,并使用`ALTER TABLESPACE COALESCE`和`ALTER TABLE DEALLOCATE UNUSED`命令进行整理。 7. **查看高碎片程度的表**:使用`dba_segments`视图,可以找出具有过多段的表...

    表空间脚本_oracle_steadyzeq_calm5hz_检查表空间语句_

    可以设置警报或者定期运行脚本来检查空间利用率。 4. **处理DBF日志文件**:这里的"DBF"可能指的是数据库数据文件(Datafiles)。如果日志文件过大,可能会影响数据库性能。可以考虑归档旧的日志文件或调整日志文件...

    oracle备份脚本命令

    压缩备份可以节省磁盘空间,但会增加CPU使用率。 8. **备份策略**: 可以结合RMAN的`RETENTION POLICY`来制定备份保留策略,例如基于时间或还原点的保留。 9. **验证备份**: ```sql RUN { validate backup ...

    8个DBA最常用的监控Oracle数据库的常用shell脚本

    此脚本可以输出各个表空间的使用率。 **示例脚本**: ```bash #!/bin/bash sqlplus user/pass@dbname SELECT TABLESPACE_NAME, SUM(BYTES)/(1024*1024) "MB" FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME; EXIT;...

    Oracle数据库DBA神器

    此脚本用于计算每个表空间的使用率百分比,这对于评估表空间的使用效率非常重要。 #### 3.16 是否存在空间无法扩展的情况(时间长) **脚本示例**: ```sql SELECT * FROM dba_tablespaces WHERE contents = '...

    ORACLE表空间的回收脚本.rar

    在Oracle数据库系统中,表空间(Tablespace)是存储数据对象如表、索引、视图等的基础单元。管理表空间对于确保数据库高效运行至关重要。本文将深入探讨Oracle表空间的回收过程,并提供一个可能的回收脚本示例。 1....

    Oracle管理及常用基础脚本

    ### Oracle管理及常用基础脚本知识点详解 #### 一、概览 在Oracle数据库管理过程中,熟练掌握并运用各类查询脚本是确保数据库性能优化、故障排查和日常维护的重要手段。本文将根据提供的文档信息,详细解读每个...

    Oacle 19 数据库维护文档

    提供的查询展示了如何计算表空间的总大小、剩余大小、使用大小以及使用率。通过计算 `(total - free) / total` 可以得到表空间的使用百分比,而`((total - free)/ 3 )-free)`则用于估算未来扩容需求,基于过去三年的...

Global site tag (gtag.js) - Google Analytics