Oracle查看表空间使用率SQL脚本

数据库使用了一段时间有时候突然会爆出表没有足够的空间,一般来说是用户配额空间满了,或者是表空间、磁盘空间满了。大部分情况还是表空间满了。

如果你经常看数据库的告警日志(日志位置$find /u01 -iname "alert*.log")和OEM上的信息很容易发现警告或者错误信息。但是我们大部分项目没有这样的条件,只能在pl/sql中看看。

查询表空间‘空间’使用情况sql语句:

SELECT F.TABLESPACE_NAME,

TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED (MB)",

TO_CHAR (F.FREE_SPACE, '999,999') "FREE (MB)",

TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL (MB)",

TO_CHAR(T.MAX_SPACE,'999,999') "MAXSIZE(MB)",

TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE,

CASE T.MAX_SPACE

WHEN 0 THEN 'autoextensible=no'

ELSE 'autoextensible=yes'

END AS AUTOEXTEN

FROM (

SELECT TABLESPACE_NAME,

ROUND (SUM (BLOCKS*(SELECT VALUE/1024

FROM V$PARAMETER

WHERE NAME = 'db_block_size')/1024)

) FREE_SPACE

FROM DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME

) F,

(

SELECT TABLESPACE_NAME,

ROUND (SUM (BYTES/1048576)) TOTAL_SPACE,

ROUND (SUM(MAXBYTES/1024/1024)) MAX_SPACE

FROM DBA_DATA_FILES

GROUP BY TABLESPACE_NAME

) T

WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME;

说明:TOTAL 表空间对应的数据文件占用磁盘空间

MAXSIZE 数据文件可以增长的最大值

USED 数据库实际使用的块

FREE 空闲块

TOTAL = USED + FREE oracle数据库中数据块和空闲块都占用磁盘空间的。