【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は不要

 

スポンサーリンク

Oracle