oracle - 找出表空间上的可用空间

标签 oracle tablespace

我们的应用程序因“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/

相关文章:

oracle - Weblogic 部署异常 : PaddingException: Could not perform unpadding: invalid pad byte

ruby - 如何在基于 debian 的系统(也包括 ubuntu)上安装 ruby​​-oci8,oracle 的 ruby​​ 客户端

oracle - 使用 PLSQL 更新 Apex 表格形式

oracle - 来自环境变量的钱包位置,而不是用于 oci 客户端的 sqlnet.ora

db2 - 为什么 DB2 建议每个表空间一张表?

oracle - GRANT SELECT 在其他模式表上

linux - Sybase IQ : How to create a DBSPACE with raw device?

oracle - 在 Docker 中提交 Oracle 表空间时出错

sql - 新的oracle用户无法访问表