web-dev-qa-db-ja.com

OracleのLobセグメント(SYS_LOB)を理解していますか?

すべてではないにしても、ほとんどのテーブルには「blob」フィールドがあります。ユーザーのアクションのログを格納するテーブルの1つが8 GB(約500万レコード)に増えました。

そして私たちのDBAは、このスキーマが現在、急激に領域を消費していることを確認しています。少し調べたところ、(SYS_LOB)を含むテーブルの1つに140 GBのデータベースのうち約116 GBが必要であることがわかりました。

私たちのDBAは、このテーブルはユーザーアクションのログを保存するテーブル(8 GB)に関連していると言っています

このSYS_LOBテーブルの機能を知っている人はいますか?作成したテーブルに保存された実際のblobはありますかOR Oracleはこれらのblobを実際に別のテーブルに保存します(ある場合、SYS_LOBがそのテーブルになります)?

21
MOZILLA

OracleデータベースにテーブルSYS_LOBがありません(少なくとも、基本的なデータベースインストールの一部であるそのようなテーブルはありません。テーブル内のすべてのLOB列に関する情報を表示するテーブルDBA_LOBSがありますデータベースですが、実際にはLOBデータは格納されず、メタデータのみが格納されます。データベース内の実際のLOBセグメントには、SYS_LOB identifier $$という形式のシステム生成の名前があります。

私の推測では、DBAはSYS_LOBidentifier $$という名前のセグメントを識別しており、116 GBのスペースを消費しています。これが正しいと仮定すると、DBA_LOBSテーブルを使用して、LOB列がどのテーブルのどの列にマップするかを確認できます。

SELECT owner, table_name, column_name
  FROM dba_lobs
 WHERE segment_name = 'SYS_LOB<<identifier>>$$'
42
Justin Cave