`

oracle表空间使用率统计查询

 
阅读更多
参考文献

文献1:http://blog.itpub.net/24104518/viewspace-730682,字符有格式,需要清理一下

文献2:http://www.cnblogs.com/fengyun627/archive/2009/07/27/1532551.html

文献3:http://blog.csdn.net/hproc/article/details/7372265

sql语句格式化:http://web.chacuo.net/formatsql

背景

今天发现有一张采样表从1月5号开始不记录数据了,所以想查看一下表空间使用率,在网上零零散散找了很多资料,现在记录如下,也不知道哪一个最准确。还有一个就是网上拷贝的sql代码格式太乱了,不好看,找到一个在线格式化工具。

参考1

--查询表空间使用情况
SELECT Upper(F.TABLESPACE_NAME)         "表空间名",
       D.TOT_GROOTTE_MB                 "表空间大小(M)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / 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) / ( 1024 * 1024 ), 2) MAX_BYTES
        FROM   SYS.DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
        FROM   SYS.DBA_DATA_FILES DD
        GROUP  BY DD.TABLESPACE_NAME) D
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER  BY 1

--查询表空间的free space
select tablespace_name, count(*) AS extends,round(sum(bytes) / 1024 / 1024, 2) AS MB,sum(blocks) AS blocks from dba_free_space group BY tablespace_name;

--查询表空间的总容量
select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
--查询表空间使用率
SELECT total.tablespace_name,
       Round(total.MB, 2)           AS Total_MB,
       Round(total.MB - free.MB, 2) AS Used_MB,
       Round(( 1 - free.MB / total.MB ) * 100, 2)
       || '%'                       AS Used_Pct
FROM   (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_free_space
        GROUP  BY tablespace_name) free,
       (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_data_files
        GROUP  BY tablespace_name) total
WHERE  free.tablespace_name = total.tablespace_name;



上述语句查询结果如下图所示:






参考2:


SELECT a.tablespace_name                        "表空间名",
       total                                    "表空间大小",
       free                                     "表空间剩余大小",
       ( total - free )                         "表空间使用大小",
       Round(( total - free ) / total, 4) * 100 "使用率   %"
FROM   (SELECT tablespace_name,
               Sum(bytes) free
        FROM   DBA_FREE_SPACE
        GROUP  BY tablespace_name) a,
       (SELECT tablespace_name,
               Sum(bytes) total
        FROM   DBA_DATA_FILES
        GROUP  BY tablespace_name) b
WHERE  a.tablespace_name = b.tablespace_name


查询结果





参考3:


SELECT TABLESPACE_NAME "表空间",
       To_char(Round(BYTES / 1024, 2), '99990.00')
       || ''           "实有",
       To_char(Round(FREE / 1024, 2), '99990.00')
       || 'G'          "现有",
       To_char(Round(( BYTES - FREE ) / 1024, 2), '99990.00')
       || 'G'          "使用",
       To_char(Round(10000 * USED / BYTES) / 100, '99990.00')
       || '%'          "比例"
FROM   (SELECT A.TABLESPACE_NAME                             TABLESPACE_NAME,
               Floor(A.BYTES / ( 1024 * 1024 ))              BYTES,
               Floor(B.FREE / ( 1024 * 1024 ))               FREE,
               Floor(( A.BYTES - B.FREE ) / ( 1024 * 1024 )) USED
        FROM   (SELECT TABLESPACE_NAME TABLESPACE_NAME,
                       Sum(BYTES)      BYTES
                FROM   DBA_DATA_FILES
                GROUP  BY TABLESPACE_NAME) A,
               (SELECT TABLESPACE_NAME TABLESPACE_NAME,
                       Sum(BYTES)      FREE
                FROM   DBA_FREE_SPACE
                GROUP  BY TABLESPACE_NAME) B
        WHERE  A.TABLESPACE_NAME = B.TABLESPACE_NAME)
--WHERE TABLESPACE_NAME LIKE 'CDR%' --这一句用于指定表空间名称
ORDER  BY Floor(10000 * USED / BYTES) DESC;



查询结果:





select tablespace_name,
       max_gb,
       used_gb,
       round(100 * used_gb / max_gb) pct_used
  from (select a.tablespace_name tablespace_name,
               round((a.bytes_alloc - nvl(b.bytes_free, 0)) / power(2, 30),
                     2) used_gb,
               round(a.maxbytes / power(2, 30), 2) max_gb
          from (select f.tablespace_name,
                       sum(f.bytes) bytes_alloc,
                       sum(decode(f.autoextensible,
                                  'YES',
                                  f.maxbytes,
                                  'NO',
                                  f.bytes)) maxbytes
                  from dba_data_files f
                 group by tablespace_name) a,
               (select f.tablespace_name, sum(f.bytes) bytes_free
                  from dba_free_space f
                 group by tablespace_name) b
         where a.tablespace_name = b.tablespace_name(+)
        union all
        select h.tablespace_name tablespace_name,
               round(sum(nvl(p.bytes_used, 0)) / power(2, 30), 2) used_gb,
               round(sum(decode(f.autoextensible,
                                'YES',
                                f.maxbytes,
                                'NO',
                                f.bytes)) / power(2, 30),
                     2) max_gb
          from v$temp_space_header h, v$temp_extent_pool p, dba_temp_files f
         where p.file_id(+) = h.file_id
           and p.tablespace_name(+) = h.tablespace_name
           and f.file_id = h.file_id
           and f.tablespace_name = h.tablespace_name
         group by h.tablespace_name)
order by 4;


FROM ADDRESS:

http://www.cnblogs.com/xwdreamer/p/3511047.html
  • 大小: 4.3 KB
  • 大小: 4.6 KB
  • 大小: 3.5 KB
分享到:
评论

相关推荐

    查看Oracle表空间使用情况

    通过上述SQL语句,我们可以全面地了解Oracle数据库表空间的使用情况,包括表空间大小、数据文件细节、回滚段状态、控制文件和日志文件信息、自由空间情况、对象统计以及数据库版本和日志模式等。这对于日常数据库...

    查询oracle表以及统计数据库的使用情况

    在Oracle数据库管理系统中,查询表以及统计数据库的使用情况是一项关键任务,有助于管理员监控资源使用状况、优化性能并规划存储。本文将深入探讨如何查询Oracle表空间的使用情况,以及这个过程中的重要知识点。 ...

    ORACLE表空间 状态查询语句

    1. **监控和优化**:通过定期运行此类查询,可以及时发现表空间使用率过高的情况,从而采取措施释放空间或者扩展表空间,避免因空间不足导致的应用故障。 2. **性能调优**:了解表空间的使用情况有助于优化数据库的...

    oracle空间使用率

    ### 四、查询表空间使用率 #### SQL脚本解读: ```sql SELECT total.tablespace_name, ROUND(total.MB, 2) AS Total_MB, ROUND(total.MB - free.MB, 2) AS Used_MB, ROUND((1 - free.MB / total.MB) * 100, 2) ...

    oracle查看表空间表信息

    23. **AVG_SPACE**: 平均每个块的空间使用量。 24. **CHAIN_CNT**: 链接计数。 25. **AVG_ROW_LEN**: 平均每行长度。 26. **AVG_SPACE_FREE_LIST_BLOCKS**: 每个自由列表的平均空闲空间。 27. **NUM_FREE_LIST_...

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

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

    Oracle查看增加表空间语句

    - `Round((Ta.Define_Size - Tb.Free_Size) / Ta.Define_Size, 4) * 100`计算表空间使用率百分比。 此查询首先从`DBA_DATA_FILES`视图获取表空间的定义大小,再从`DBA_FREE_SPACE`视图获取剩余空间大小,最后进行...

    Oracle数据库空间的使用和管理

    为了优化空间利用,建议定期执行数据库维护任务,如重建索引以消除索引碎片,使用DBMS_REDEFINITION进行在线表重定义以合并碎片,以及使用DBMS_SPACE.ALLOCATE_UPDATE统计表空间的使用情况。对于大型数据段,考虑...

    oracle表空间管理

    #### SQL查询表空间使用情况 以下是一些常用的SQL查询语句,用于获取表空间的总大小、已使用空间、可用空间以及使用率等信息。 ### 查询表空间使用情况 #### 示例一:基本表空间统计信息 ```sql SELECT a....

    Oracle数据库表空间巡检指令

    通过执行特定的SQL查询与系统命令,可以获取到关于表空间使用率、数据文件状态以及潜在增长需求等方面的信息。 #### 二、常用巡检指令详解 ##### 1. 查看文件系统磁盘空间:`df -h` 这条命令用于查看当前系统的...

    Oracle数据库中大型表查询优化的研究

    本篇文章将深入探讨Oracle数据库中的大型表查询优化策略,并结合工具的使用来提高查询效率。 首先,我们需要理解大型表查询优化的基本原则。这包括正确使用索引、合理设计表结构、避免全表扫描以及有效利用分区技术...

    一次表空间暴涨故障的查询

    首先,作者提到Oracle数据库的users表空间使用率达到了99%,由于表空间使用的是bigfile类型,无法添加新的文件。因此,管理员采取了打开自动扩展参数,并设置每次扩展20G的策略。然而,这种方式有潜在风险,如果SQL...

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

    3. **计算利用率**:基于文件的实际使用情况和潜在扩展能力来计算利用率。 脚本示例: ```sql SET PAGESIZE 20 COLUMN ID FORMAT A42 COLUMN Tablespace FORMAT A10 SELECT b.file_id ID, b.tablespace_name ...

    oracle 12c SYSAUX表空间过大

    进一步查询`DBA_SEGMENTS`,可以发现`WRI$_ADV_OBJECTS`对象是主要的占用者,表明优化器统计信息顾问在SYSAUX表空间中创建了大量的数据。 **原因解释** 这个问题的主要原因是Oracle 12.2引入的一个新特性——优化...

    查询数据库中表空间情况

    1. **监控表空间使用情况**:定期检查表空间使用率,确保不会超过90%的使用阈值。 2. **扩展策略**:对于接近满容量的表空间,需要考虑增加数据文件或者扩大现有数据文件的大小。 3. **临时表空间管理**:从Oracle ...

    oracle IO 使用情况

    在Oracle数据库管理中,了解和优化IO(输入输出)使用情况是至关重要的,因为它直接影响到系统的性能和响应时间。标题提到的"oracle IO 使用情况"指的是监控和分析Oracle数据库在执行SQL语句时对磁盘I/O资源的消耗。...

    oracle表空间中空表统计方法示例介绍

    在Oracle数据库中,我们可以通过SQL查询来统计表空间中的空表。以下是一个PL/SQL程序示例,它遍历所有表并检查它们是否为空: ```sql DECLARE -- 定义变量 v_table tabs.table_name%TYPE; -- 存储表名 v_sql ...

    Oracle DBA 常用的一些SQL语句(50个)

    changefilter.sql oracle的连接数查看和连接用户的查看.sql Sun30新建oracle用户.sql ...表空间使用查询.sql 表空间剩余空间查看.sql 表空间回收.sql 过滤表清除sql生成.sql 进程使用回滚段查询.sql 锁表查询.sql

    oracle全表扫描的3种优化手段

    2. **定期分析表统计信息**:使用`ANALYZE TABLE`命令定期更新表的统计信息,确保优化器能够基于准确的数据作出最佳的执行计划决策。 3. **监控性能变化**:实施优化后,需要持续监控数据库性能的变化,以确保所采取...

Global site tag (gtag.js) - Google Analytics