1、在oracle数据库中可以使用以下语句对既存在自动扩展表空间数据文件又存在非自动扩展表空间数据文件的实例进行表空间使用率查询:
SELECT DT.TABLESPACE_NAME,
SUM(DT.FREE_BYTES) FREE_BYTES_B,
SUM(DT.BYTES - DT.FREE_BYTES) USE_BYTES_B,
SUM(DT.TOTEL_BYTES) TOTEL_BYTES_B,
ROUND(SUM(DT.BYTES - DT.FREE_BYTES) / SUM(DT.TOTEL_BYTES) * 100, 2) USE_PERCENT
FROM (SELECT DD.TABLESPACE_NAME,
DD.FILE_ID,
DD.AUTOEXTENSIBLE,
CASE
WHEN DD.FILE_ID = DF.FILE_ID THEN
DF.FREE_BYTES
ELSE
0
END FREE_BYTES,
CASE
WHEN DD.AUTOEXTENSIBLE = 'YES' THEN
DD.MAXBYTES
ELSE
DD.BYTES
END TOTEL_BYTES,
DD.BYTES,
DD.MAXBYTES
FROM DBA_DATA_FILES DD,
(SELECT A.TABLESPACE_NAME, A.FILE_ID, SUM(A.BYTES) FREE_BYTES
FROM DBA_FREE_SPACE A
GROUP BY A.TABLESPACE_NAME, A.FILE_ID) DF
WHERE DD.TABLESPACE_NAME = DF.TABLESPACE_NAME(+)
AND DD.FILE_ID = DF.FILE_ID(+)) DT
GROUP BY DT.TABLESPACE_NAME;
2、通过查询dba_tablespace_usage_metrics视图来获取表空间使用率数据。
SELECT * FROM dba_tablespace_usage_metrics;
dba_tablespace_usage_metrics视图在oracle 10g中引入,但未公开。 到了Oracle11g公开了这个视图。因为在Oracle 10g里可以使用这个视图,但是在官网文档里看不到说明,但是在11g的官方文档里可以查看到该视图的说明。
Oracle 11g中对这个视图的说明如下:
DBA_TABLESPACE_USAGE_METRICS describestablespace usage metrics for all types of tablespaces, including permanent,temporary, and undo tablespaces.
Column | Datatype | NULL | Description |
---|---|---|---|
TABLESPACE_NAME | VARCHAR2(30) | Tablespace name | |
USED_SPACE | NUMBER | Total space consumed by the tablespace(blocks) | |
TABLESPACE_SIZE | NUMBER | Total size of the tablespace(blocks) | |
USED_PERCENT | NUMBER | Percentage of used space, as a function of the maximum possible tablespace size(USED_SPACE / TABLESPACE_SIZE * 100) |