ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【转】临时表空间使用情况

【转】临时表空间使用情况

原创 Linux操作系统 作者:ljm0211 时间:2012-06-20 14:30:35 0 删除 编辑
表空间使用情况可以通过dba_data_files和dba_free_space两个视图获得,但这样却无法查看temp表空间的使用情况,这也是一般dba存在的疑问。
我们可以通过DBA_TEMP_FILES和V$SORT_USAGE获得临时段相关的信息,需要注意的是V$SORT_USAGE使用块为单位,所以需要对其进行转换,下面提供查看普通表空间和临时表空间的sql脚本给大家参考

/*表空间使用情况*/
SELECT 
FILES.TABLESPACE_NAME, 
FILES.TOTAL_MB, 
FREE.FREE_TOTAL_MB, 
FREE.FREE_MAX_BLOCK_MB,
(FILES.TOTAL_MB - FREE.FREE_TOTAL_MB) USED_TOTAL_MB,
ROUND((FILES.TOTAL_MB - FREE.FREE_TOTAL_MB)/FILES.TOTAL_MB*100, 3) USED_TOTAL_PERCENT
FROM
(SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 FREE_TOTAL_MB, MAX(BYTES)/1024/1024 FREE_MAX_BLOCK_MB
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) FREE, 
(SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 TOTAL_MB 
FROM DBA_DATA_FILES 
GROUP BY TABLESPACE_NAME) FILES
WHERE FREE.TABLESPACE_NAME(+) = FILES.TABLESPACE_NAME
ORDER BY USED_TOTAL_PERCENT DESC
;

/*查看临时表空间总体使用情况*/
SELECT TMP_TBS.TABLESPACE_NAME,
       SUM(TMP_TBS.TOTAL_MB) TOTAL_MB,
       SUM(USED_TOT.USED_MB) USED_MB,
       SUM(USED_TOT.USED_MB) / SUM(TMP_TBS.TOTAL_MB) * 100 USED_PERSENT
  FROM (SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 TOTAL_MB
          FROM DBA_TEMP_FILES
         GROUP BY TABLESPACE_NAME) TMP_TBS,
       (SELECT TMP_USED.TABLESPACE,
               SUM(TMP_USED.BLOCKS * PARA.DB_BLOCK_SIZE) / 1024 / 1024 USED_MB
          FROM V$SORT_USAGE TMP_USED,
               (SELECT VALUE DB_BLOCK_SIZE
                  FROM V$PARAMETER
                 WHERE NAME = 'db_block_size') PARA
         GROUP BY TMP_USED.TABLESPACE) USED_TOT
 where TMP_TBS.TABLESPACE_NAME = USED_TOT.TABLESPACE(+)
 GROUP BY TMP_TBS.TABLESPACE_NAME;
         

/*查看临时表空间中排序段和数据段的使用情况*/
SELECT TMP_TBS.TABLESPACE_NAME, USED_TOT.SEGTYPE TEMP_SEG_TYPE,
       SUM(TMP_TBS.TOTAL_MB) TOTAL_MB,
       SUM(USED_TOT.USED_MB) USED_MB,
       SUM(USED_TOT.USED_MB) / SUM(TMP_TBS.TOTAL_MB) * 100 USED_PERSENT
  FROM (SELECT TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 TOTAL_MB
          FROM DBA_TEMP_FILES
         GROUP BY TABLESPACE_NAME) TMP_TBS,
       (SELECT TMP_USED.TABLESPACE, TMP_USED.SEGTYPE,
               SUM(TMP_USED.BLOCKS * PARA.DB_BLOCK_SIZE) / 1024 / 1024 USED_MB
          FROM V$SORT_USAGE TMP_USED,
               (SELECT VALUE DB_BLOCK_SIZE
                  FROM V$PARAMETER
                 WHERE NAME = 'db_block_size') PARA
         GROUP BY TMP_USED.TABLESPACE, TMP_USED.SEGTYPE) USED_TOT
 where TMP_TBS.TABLESPACE_NAME = USED_TOT.TABLESPACE(+)
 GROUP BY TMP_TBS.TABLESPACE_NAME, USED_TOT.SEGTYPE;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733380/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    437101