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