私のSYSTEM
テーブルスペースは、数日で非常にいっぱいになります。以前に完全にいっぱいになったときに、別のdbfファイルを追加しました。さて、2番目の.dbf
も入力しようとしています。日常的に行われている唯一のプロセスは、論理バックアップ用のエクスポートデータベースです。また、表領域の自動エクステントはオンです。このテーブルスペースがいっぱいになる理由は何でしょうか?この状況にどのように対処できますか? Oracle 11g r2をarchivelogモードで使用しています。
以下のクエリの結果を添付:
SELECT owner, segment_name, segment_type, extents, blocks, bytes
FROM dba_segments
WHERE tablespace_name='SYSTEM'
ORDER BY bytes;
まず、SYSTEM
テーブルスペースが通常のデータベースユーザーのデフォルトまたは一時テーブルスペースとして割り当てられていないことを確認してください。
次に、SYSTEM
テーブルスペースのスペースを消費するテーブルの1つがAUD$
です。次に、エクスポート/インポートを実行していると述べたように、datapumpは、エクスポートジョブを実行しているユーザーのデフォルトのテーブルスペースにマスターテーブルを作成します。
here のように、マスターテーブルは状況に応じて保持または削除されます。 SYS
ユーザーを使用してエクスポートを実行した可能性があります。ジョブが失敗した場合、マスターテーブルは削除されません。
これで、次のクエリを使用して、このテーブルスペースのスペースのほとんどを消費しているオブジェクトを確認できます。
SELECT owner, segment_name, segment_type, extents, blocks, bytes
FROM dba_segments
WHERE tablespace_name='SYSTEM'
ORDER BY bytes;
更新:
監査証跡が必要な場合は、そのレコードを別のテーブル、必要に応じて別のテーブルスペースにコピーし、監査テーブルをエクスポートします。それ以外の場合は、それを切り捨てることができます。
sqlplus sys as sysdba
としてログイン
SQL> CREATE TABLE backup_aud$ AS SELECT * from sys.aud$;
SQL> truncate table aud$;
[〜#〜]または[〜#〜]
SYS.AUD$
を使用すると、監査証跡テーブルDBMS_AUDIT_MGMT
を別のテーブルスペースに移動できます
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
。を使用して監査証跡テーブルを移動しますSQL> BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => 'NEW TABLESPACE');
END;
/