23

大多数表(如果不是全部)都有一个“blob”字段。存储用户操作日志的表之一现在已增长到 8 GB(约 500 万条记录)。

我们的 DBA 已经看到,这种模式现在正以指数方式占用空间。我们调查了一下,发现有一个表(SYS_LOB)需要大约 116GB 的 140GB 数据库。

我们的 DBA 告诉我们,此表与保存用户操作日志的表有关(即 8GB)

有谁知道这个 SYS_LOB 表是做什么的?是保存在我们创建的表中的实际 blob 还是 oracle 实际上将这些 blob 存储在另一个表中(如果是,那么 SYS_LOB 将是那个表)?

4

1 回答 1

46

Oracle 数据库中没有表SYS_LOB(至少,没有这样的表是基本数据库安装的一部分。有一个视图DBA_LOBS显示有关数据库中所有 LOB 列的信息,但它实际上并不存储任何LOB 数据,只是元数据。数据库中的实际 LOB 段具有系统生成的名称,采用 SYS_LOB标识符$$ 的形式。

我的猜测是您的 DBA 已经确定了一个名为SYS_LOB标识符$$ 的段,它占用了 116 GB 的空间。假设正确,您可以使用视图找出 LOB 列映射到哪个表的哪个列DBA_LOBS,即

SELECT owner, table_name, column_name
  FROM dba_lobs
 WHERE segment_name = 'SYS_LOB<<identifier>>$$'
于 2009-02-10T08:50:29.963 回答