Oracle 自治数据库 - 使用了过多的存储?
Posted
技术标签:
【中文标题】Oracle 自治数据库 - 使用了过多的存储?【英文标题】:Oracle Autonomous Database - Over-counting storage used? 【发布时间】:2020-11-03 15:03:00 【问题描述】:我正在试用 oracle 的自治数据库。想了解 oracle APEX 服务有什么大惊小怪的 - 它使人们能够直接在数据库上构建应用程序。
DB 带有一堆系统表(oracle_maintained 标志 = y in all_tables)。 它还包含 SSB 示例数据集。 根据文档,示例数据集不应计入使用量。 但是,我发现新数据库的使用量 2.7 G。 此外,在添加和删除示例 APEX 应用后 - 使用量为 4.8 G。注意:我创建了一个简单的架构和一个包含
输出:
SELECT
OWNER,
SUM(BYTES) / 1024.0 / 1024.0 as SIZE_MB
FROM
DBA_EXTENTS
GROUP BY
ROLLUP(OWNER)
ORDER BY
SIZE_MB DESC
"OWNER", "SIZE_MB",
"", 168400.6875, <- Total
"SSB", 166316.9375, <- Sample (should not be counted)
"SYS", 1059.875,
"APEX_190200", 888.4375,
"MDSYS", 72.75,
"AUDSYS", 26.6875,
"APEX_200100", 13.4375,
"SH", 5.75,
...
A few more rows with size < 5 MB
【问题讨论】:
检查回收站,表可能需要清除(re: 添加和删除 apex 示例应用) 数据库也会自动备份自己,这会占用您的一些存储空间。 尝试 select segment_name,sum(bytes) from dba_segments...它将准确显示占用空间的内容 【参考方案1】:安装示例应用时,APEX 会为您创建工作区。所述工作区也位于 SCHEMA、Oracle 用户帐户中。如有必要,它将为您创建新的。
当您删除示例应用时,所有内容都将被“丢弃” - 但是,如果您创建了一个新的 USER/SCHEMA 来保存您的应用,则不会被丢弃。
此外,表在删除时不会被清除。
如果您进入回收站的高峰期,您可以看到示例应用程序的“残余”。
您可以清除该架构的回收站,或者更好的是,完全 DROP 用户。
您可以使用的数据,例如存储在 Oracle 托管架构中的 SSB 将显示在任何数据库报告中,但您不会为此付费。
您观察到的数据量似乎超过了 Sample APEX 应用所能计算的量。
如果您对此进行查询,您将看到数据库中的所有 SEGMENTS(表、分区、LOB),按大小 DESC 排序。
select OWNER "Owner",
TABLESPACE_NAME "Tablespace",
SEGMENT_NAME "Segment",
EXTENTS "Extents",
BYTES / 1024 / 1024 "Megabytes"
from SYS.DBA_SEGMENTS
where UPPER(
SUBSTR(
SEGMENT_NAME,
1,
4
)
) != 'BIN$' and
UPPER(
SUBSTR(
SEGMENT_NAME,
1,
3
)
) != 'DR$' and
( :TABLESPACE_NAME is null or
INSTR(
LOWER(TABLESPACE_NAME),
LOWER(
:TABLESPACE_NAME
)
) > 0 )
order by OWNER,
EXTENTS desc,
TABLESPACE_NAME,
SEGMENT_NAME
根据需要删除和清除。
【讨论】:
虽然我们为您进行备份并且这些备份需要空间,但您也无需为该存储空间付费。 谢谢@thatjeffsmith。跑了你问的查询,仍然没有解释什么占用了4G的空间。这是输出(按 MB 列 desc 排序):imgur.com/vb9UNWt @Donraj 该计数器还包括您的 TEMP 空间使用情况 - 如果您运行了一个非常大的连接并消耗了 TEMP 空间,那会暂时增加您的计量器...以上是关于Oracle 自治数据库 - 使用了过多的存储?的主要内容,如果未能解决你的问题,请参考以下文章
解决Oracle 11gR2 空闲连接过多,导致连接数满的问题