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 自治数据库 - 使用了过多的存储?的主要内容,如果未能解决你的问题,请参考以下文章

数据导入自治数据仓库ADW的四种方式

oracle连接数过多 如何释放

解决Oracle 11gR2 空闲连接过多,导致连接数满的问题

解决Oracle 11gR2 空闲连接过多,导致连接数满的问题

Oracle连接数过多释放机制

记一次Oracle session数过多引起进程数超过processes限制最终导致客户端无法连接的问题