web-dev-qa-db-ja.com

いっぱいになるSYSTEMテーブルスペース

私の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;

enter image description here

2
akr

まず、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;
      /
      
  • 2
    JSapkota