株式会社コーソル

KNOWLEDGE

コーソルの技術情報

コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。

KNOWLEDGE検索人気のキーワード

Oracle DB Tips

ORA-01653: 表???.???を拡張できません(???分、表領域???)。

01.ORA-01653エラーとはどのようなエラーか?

テーブルへのデータ追加・更新により、データを格納している表セグメントの空き領域が不足した場合、表セグメントは拡張されます。表セグメントを格納している表領域に、拡張分に対応した空きがない場合、ORA-01653エラーが発生します。

02.ORA-01653エラーのエラー出力例

SQL> INSERT INTO TEST VALUES (60000,60000,60000);
INSERT INTO TEST VALUES (60000,60000,60000)
*
行1でエラーが発生しました。:
ORA-01653: 表SCOTT.TESTを拡張できません(8分、表領域USERS)。

エラーの数値、引数の意味は以下のとおりです。

SCOTT                  スキーマ名
TEST                  データを登録・更新しようとしたテーブル名
8                  データブロック数
USERS                  テーブルが格納されている表領域

03.ORA-01653の一般的な発生要因と対処

ORA-01653の発生要因は、表セグメントを格納している表領域に、拡張分に対応した空きがないことです。
このため、以下のいずれかの対処を行って、表領域のサイズを手動で拡張するか、または、自動での拡張を可能にします。

  • データファイルを追加して表領域のサイズを拡張する
  • データファイルを大きなサイズにリサイズし、表領域のサイズを拡張する
  • データファイル自動拡張設定を有効化して、自動での拡張を可能にする

 

データファイルの追加

以下のコマンドを実行して、データファイルを追加して表領域のサイズを拡張します。

ALTER TABLESPACE  ADD DATAFILE '' SIZE ;

 

データファイルのリサイズ

以下のコマンドを実行して、データファイルのサイズを拡張して、表領域のサイズを拡張します。

alter database datafile '' resize ;

 

データファイル自動拡張設定を有効化

以下のコマンドを実行して、データファイルの自動拡張設定を有効化して、表領域の空き領域が不足した場合に、自動的にデータファイルが拡張できるようにします。

ALTER DATABASE DATAFILE '' AUTOEXTEND ON;

04.ORA-01653に関するFAQ

ORA-01653発生時、ディスク領域不足で上記対処方法が不可能な場合は、どうすればよいのでしょうか?

ディスク領域が不足している場合、データファイルの追加・サイズ拡張という対処法がとれません。何らかの方法で空き領域を増やす必要があります。テーブルの不要データをTRUNCATEすることで、空き領域を増やすことが可能です。ただし、TRUNCATE処理はROLL BACKできませんので、作業前に十分な確認が必要になります。または、オンライン・セグメント縮小(Shrink Space)機能を使って、フラグメンテーションを解消し使用領域を縮小させることもできます。

05.キーワード

ORA-01653 ORA-01653 unable to extend table テーブル エクステント セグメント 自動拡張