查询oracle表空间大小、使用率(含临时表)

该查询展示了数据库的数据文件和临时文件空间使用情况,包括总空间、空闲空间、已使用空间和使用率,帮助进行存储管理和优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意切换权限,直接执行就好。

select * from (
Select a.tablespace_name,
to_char(a.bytes/1024/1024,'99,999.999') total_bytes,
to_char(b.bytes/1024/1024,'99,999.999') free_bytes,
to_char(a.bytes/1024/1024 - b.bytes/1024/1024,'99,999.999') use_bytes,
to_char((1 - b.bytes/a.bytes)*100,'99.99') || '%' use
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,
to_char(c.bytes/1024/1024,'99,999.999') total_bytes,
to_char( (c.bytes-d.bytes_used)/1024/1024,'99,999.999') free_bytes,
to_char(d.bytes_used/1024/1024,'99,999.999') use_bytes,
to_char(d.bytes_used*100/c.bytes,'99.99') || '%' use
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)

执行效果:

### 查询 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值