オラクルで一時表領域をクリーンアップする方法は何ですか?
Oracleの一時表領域をクリーンアップする必要がある場合は、以下の手順に従って操作できます。
- まず、Oracleデータベースインスタンスに接続します。
- 現在の一時表領域を占有しているセッションを確認してください。
- 次のクエリを日本語で表現すると、「v$session」と「v$sort_usage」から、「s.saddr」と「t.session_addr」が一致するレコードの、「s.sid」、「s.serial#」、「s.username」、「t.tablespace」、「t.blocks」を選択する。
- 一時表領域を使用しているセッションのSID、シーケンス番号、ユーザー名、表領域、およびブロック数が表示されます。
- 一時表領域を使用している会話がある場合は、その会話を終了させることができます。
- ALTER SYSTEM KIDDLESSION ‘sid, serial#’を実行してください。
- ‘sid’と’serial#’は、ステップ2でクエリされるセッションのSIDとシーケンス番号です。
- 使用されていない一時表領域の一時セグメントを検索して削除してください。
- dba_segments テーブルから owner、segment_name、segment_type 列を選択します。
tablespace_name が ‘TEMP’ の場合に限ります。 - この操作により、一時テーブルスペースに属する一時セグメントの所有者、セグメント名、セグメントタイプが表示されます。
- テーブルスペースTEMPからテンポラリファイル’tempfile_path’を削除する。
- ‘tempfile_path’ は削除したい一時ファイルのパスです。
- 必要なサイズに一時表領域のサイズを設定してください。
- テーブルスペースTEMPのスペースを100Mを保持したまま縮小します。
- このコマンドは一時表領域のサイズを100MBに調整し、そのサイズを維持します。
- 最後に、一時的なテーブルスペースを再構築してください。
- ALTER TABLESPACE TEMP に TEMPFILE ‘tempfile_path’ サイズ 1G で追加してください。
- ‘tempfile_path’は追加する一時ファイルのパスであり、’1G’はファイルの初期サイズです。
Oracleの一時表領域のクリーンアッププロセスが完了しました。操作を行う前にデータベースのバックアップを取り、一時表領域のクリーンアップが他の進行中のプロセスに影響を与えないようにしてください。