23

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

そして、私たちのDBAは、このスキーマが現在、指数関数的にスペースを消費していることを確認しました。少し調べてみると、140GBのデータベースのうち約116GBを占める(SYS_LOB)のテーブルが1つあることがわかりました。

DBAによると、このテーブルはユーザーアクションのログを保存するテーブル(8GB)に関連しているとのことです。

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

4

1 に答える 1

46

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

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

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