我们的应用程序因“ORA-01536:超出表空间的空间配额”而失败了几次,我们希望能够通过定期检查表空间上的可用空间并在其下降时发出警报来防止这种情况发生低于一定水平。
有什么方法可以知道表空间中剩余多少可用空间吗?
经过一些研究(我不是 DBA),我尝试了以下方法:
select max_bytes-bytes from user_ts_quotas;
select sum(nvl(bytes,0)) from user_free_space;
但是这些查询返回完全不同的结果。
最佳答案
我使用这个查询
column "Tablespace" format a13
column "Used MB" format 99,999,999
column "Free MB" format 99,999,999
column "Total MB" format 99,999,999
select
fs.tablespace_name "Tablespace",
(df.totalspace - fs.freespace) "Used MB",
fs.freespace "Free MB",
df.totalspace "Total MB",
round(100 * (fs.freespace / df.totalspace)) "Pct. Free"
from
(select
tablespace_name,
round(sum(bytes) / 1048576) TotalSpace
from
dba_data_files
group by
tablespace_name
) df,
(select
tablespace_name,
round(sum(bytes) / 1048576) FreeSpace
from
dba_free_space
group by
tablespace_name
) fs
where
df.tablespace_name = fs.tablespace_name;
关于oracle - 找出表空间上的可用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672126/