大多数表格(如果不是全部)都有一个“blob”字段。存储用户操作日志的表之一现已增长到8 GB(约500万条记录)。
我们的DBA已经看到这个架构现在以指数方式占用空间。我们调查了一下,发现其中一个表(SYS_LOB)需要大约116GB的140GB数据库。
我们的DBA告诉我们这个表与保存用户操作日志的表(8GB)有关。
有谁知道这个SYS_LOB表的作用?实际的blob是否保存在我们创建的表中,或者oracle实际上将这些blob存储在另一个表中(如果是,那么SYS_LOB将是该表)?
答案 0 :(得分:41)
Oracle数据库中没有表SYS_LOB
(至少,没有这样的表是基本数据库安装的一部分。有一个表DBA_LOBS
显示有关所有LOB的信息数据库中的列,但它实际上并不存储任何LOB数据,只是元数据。数据库中的实际LOB段具有系统生成的名称,其格式为SYS_LOB 标识符 $$。
我的猜测是您的DBA已经识别出一个名为SYS_LOB
标识符 $$的段,占用了116 GB的空间。假设这是正确的,您可以使用DBA_LOBS
表找出LOB列映射到哪个表的哪一列,即
SELECT owner, table_name, column_name
FROM dba_lobs
WHERE segment_name = 'SYS_LOB<<identifier>>$$'