【oracle】ORA-01652:一時セグメントを拡張できませんの対処方法
ORA-01652:一時セグメントを拡張できませんが出てしまった時の対処方法について。
原因
一時表領域は主にソート処理で使用されます。
レコード数の多いテーブルに対してORDER BYを実行した
レコード数の多いテーブルのインデックスを作成した
impdp実行時のインデックス作成時にも一時表領域が使われる
こういった時に一時表領域が枯渇して、ORA-01652エラーが発生することがあります。
対策
一時表領域が枯渇しないようにする
方法はいくつかあります。
自動拡張を設定する
ALTER DATABASE TEMPFILE 'TMPファイルフルパス' AUTOEXTEND ON
一時ファイルを追加する
ALTER TABLESPACE <表領域名> ADD TEMPFILE '追加するTMPファイルフルパス>' SIZE 4096M
一時ファイルを拡張する
ALTER DATABASE TEMPFILE 'TMPファイルフルパス' RESIZE 4096M
SQLをチューニングする
一時表領域のサイズが適切に設定されている場合、実行しているSQLに問題がある可能性があります。
見直しの観点。
WHERE文、JOINの条件が間違っていて想定よりも多くのテーブルがヒットしている
子テーブルなどで不要なORDER BYをしている
そもそもORDER BYは不要