查看oracle中表空间使用率(包含临时表空间)

select *
  from (Select a.tablespace_name as "表空间名",
               (a.bytes - b.bytes) "表空间使用大小(BYTE)",
               a.bytes / (1024 * 1024 * 1024) "表空间大小(GB)",
               b.bytes / (1024 * 1024 * 1024) "表空间剩余大小(GB)",
               (a.bytes - b.bytes) / (1024 * 1024 * 1024) "表空间使用大小(GB)",
               to_char((1 - b.bytes / a.bytes) * 100, '99.99999') || '%' "使用率"
          from (select tablespace_name, sum(bytes) bytes
                  from dba_data_files
                 group by tablespace_name) a,
               (select tablespace_name, sum(bytes) bytes
                  from dba_free_space
                 group by tablespace_name) b
         where a.tablespace_name = b.tablespace_name
        union all
        select c.tablespace_name,
               d.bytes_used "表空间使用大小(BYTE)",
               c.bytes / (1024 * 1024 * 1024) "表空间大小(GB)",
               (c.bytes - d.bytes_used) / (1024 * 1024 * 1024) "表空间剩余大小(GB)",
               d.bytes_used / (1024 * 1024 * 1024) "表空间使用大小(GB)",
               to_char(d.bytes_used * 100 / c.bytes, '99.99999') || '%' "使用率"
          from (select tablespace_name, sum(bytes) bytes
                  from dba_temp_files
                 group by tablespace_name) c,
               (select tablespace_name, sum(bytes_cached) bytes_used
                  from v$temp_extent_pool
                 group by tablespace_name) d
         where c.tablespace_name = d.tablespace_name)
 order by 表空间名;

### 查询 Oracle 临时表空间使用率的方法 在 Oracle 数据库中,可以通过以下方式查询临时表空间使用率情况。这些方法可以帮助用户了解当前临时表空间的使用状态以及哪些会话正在使用临时表空间。 #### 1. 使用 `DBA_TEMP_FREE_SPACE` 查看临时表空间的空闲空间 通过查询 `DBA_TEMP_FREE_SPACE` 视图可以获取每个临时表空间的空闲空间大小。计算使用率时,可以通过总空间减去空闲空间来得出已用空间的百分比。 ```sql SELECT TABLESPACE_NAME, (TOTAL_SPACE - FREE_SPACE) / TOTAL_SPACE * 100 AS "USAGE_RATE(%)" FROM ( SELECT d.TABLESPACE_NAME, SUM(d.BYTES) / 1024 / 1024 AS TOTAL_SPACE, NVL(SUM(f.BYTES), 0) / 1024 / 1024 AS FREE_SPACE FROM DBA_TABLESPACES d LEFT JOIN DBA_FREE_SPACE f ON d.TABLESPACE_NAME = f.TABLESPACE_NAME WHERE d.CONTENTS = 'TEMPORARY' GROUP BY d.TABLESPACE_NAME ); ``` 此查询将返回每个临时表空间使用率[^3]。 #### 2. 使用 `V$SORT_USAGE` 查找正在使用临时表空间的会话 如果需要了解哪些用户或会话正在使用临时表空间,可以查询 `V$SORT_USAGE` 视图。该视图提供了关于排序段(sort segment)使用的详细信息。 ```sql SELECT se.username, se.sid, se.serial#, su.extents, su.blocks * TO_NUMBER(RTRIM(p.value)) AS SPACE_USED, su.tablespace, su.segtype, s.sql_text FROM v$sort_usage su JOIN v$parameter p ON p.name = 'db_block_size' JOIN v$session se ON su.session_addr = se.saddr JOIN v$sql s ON s.hash_value = su.sqlhash AND s.address = su.sqladdr ORDER BY se.username, se.sid; ``` 此查询可以列出所有正在使用临时表空间的会话及其相关信息,例如用户名、SID、SQL 文本等[^2]。 #### 3. 使用 `GV$TEMPSEGMENT` 监控全局临时段使用情况 对于 RAC 环境,可以使用 `GV$TEMPSEGMENT` 视图来监控整个集群中临时段的使用情况。 ```sql SELECT inst_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值