jeffspost Asked: 2009-09-24 10:52:58 +0800 CST2009-09-24 10:52:58 +0800 CST 2009-09-24 10:52:58 +0800 CST 如何检查可用的 Oracle Extent 可用空间? 772 我需要向一个中等大的表添加一些索引,并且我想提前知道表空间是否有空间容纳索引。(假设范围会自动增加大小,但 DBA 并不总是正确设置,我不想成为使系统崩溃的那个。)我需要运行什么 SQL 来查看如何有多少可用空间? oracle 1 个回答 Voted Best Answer Gary 2009-09-24T14:39:50+08:002009-09-24T14:39:50+08:00 select tablespace_name, round(sum(bytes)/(1024*1024)) free_mb from dba_free_space group by tablespace_name; 但这并不总是那么简单。例如,虽然可能有 100M 可用并且您可能想要创建一个您估计为 80M 的索引,但它可能会尝试获取 120M 的新范围并失败。 此外,如果您有一个 50M 的表并将其丢弃,那么您的 100M 可用空间可能是 50M 的两个块。同样,如果数据库试图获得 100M 的范围,它可能会失败。 如果表空间没有可用空间但设置为自动扩展(dba_tablespaces 上的segment_space_management),那么它可能会显示为空间不足但可以工作。或没有,取决于底层文件系统是否有足够的空间。
但这并不总是那么简单。例如,虽然可能有 100M 可用并且您可能想要创建一个您估计为 80M 的索引,但它可能会尝试获取 120M 的新范围并失败。
此外,如果您有一个 50M 的表并将其丢弃,那么您的 100M 可用空间可能是 50M 的两个块。同样,如果数据库试图获得 100M 的范围,它可能会失败。
如果表空间没有可用空间但设置为自动扩展(dba_tablespaces 上的segment_space_management),那么它可能会显示为空间不足但可以工作。或没有,取决于底层文件系统是否有足够的空间。