Oracleデータベースを運用していると、SQLの実行中に突然エラーが発生することがあります。その中でも比較的よく見かけるのが ORA-01653 です。
私自身もバッチ処理や大量データの投入処理を実行した際に、このエラーで処理が止まった経験があります。原因を確認すると、SQL自体の問題ではなく 表領域(Tablespace)の空き容量不足 が原因でした。
ORA-01653は、テーブルやインデックスなどのオブジェクトを拡張しようとした際に、データベースが新しい領域を確保できない場合に発生します。つまり、ストレージの設定や表領域の容量に問題があるケースがほとんどです。
この記事では ORA-01653の原因、確認方法、具体的な対処方法 を実務で使える形で解説します。

ORA-01653とは
ORA-01653は、Oracle Databaseで 表領域(Tablespace)の空き領域が不足した場合 に発生するエラーです。
主に以下のようなメッセージが表示されます。
|
1 2 |
ORA-01653: unable to extend table ORA-01653: unable to extend index |
これは、テーブルやインデックスのデータが増えた際に 新しいエクステント(Extent)を確保できない状態 を意味します。
ORA-01653が発生する原因
ORA-01653の原因はほぼ 表領域の容量不足 です。具体的には次のようなケースが考えられます。
| 原因 | 内容 |
|---|---|
| 表領域の空き容量不足 | Tablespace内の空き領域がなくなっている |
| データファイルが上限に到達 | Datafileのサイズが最大サイズに達している |
| AUTOEXTENDが無効 | データファイルの自動拡張が設定されていない |
| インデックスの肥大化 | インデックスサイズが急激に増加している |
| 大量データの挿入 | バッチ処理などで急激にデータが増えた |
特に多いのは AUTOEXTENDが設定されていないデータファイル です。
運用環境では容量が固定されているケースも多く、ある日突然エラーが発生することがあります。
Oracleでは表領域不足が原因となるエラーがいくつか存在します。特にTEMP表領域の容量不足で発生する ORA-01652(TEMP表領域不足エラー) もよく発生するトラブルです。
TEMP領域が不足した場合の対処方法については、以下の記事で詳しく解説しています。

ORA-01653が発生したときの確認方法
まずは どの表領域で容量不足が発生しているか を確認します。
表領域の空き容量を確認
次のSQLでTablespaceの空き容量を確認できます。
|
1 2 3 4 |
SELECT tablespace_name, SUM(bytes)/1024/1024 AS free_mb FROM dba_free_space GROUP BY tablespace_name; |
これにより、各表領域の空き容量(MB)が確認できます。
データファイルのサイズ確認
次に、データファイルのサイズを確認します。
|
1 2 3 4 |
SELECT tablespace_name, file_name, bytes/1024/1024 AS size_mb FROM dba_data_files; |
この結果から
- 現在のサイズ
- どのTablespaceのデータファイルか
を確認できます。
ORA-01653の対処方法
ORA-01653の対処方法は主に3つあります。
- 表領域を拡張する
- データファイルを追加する
- AUTOEXTENDを有効にする
順番に解説します。
対処方法① 表領域のデータファイルを拡張する
既存のデータファイルのサイズを拡張する方法です。
|
1 2 3 |
ALTER DATABASE DATAFILE '/u01/oradata/users01.dbf' RESIZE 2048M; |
このコマンドでデータファイルを指定サイズまで拡張できます。
ただし、次の点に注意してください。
- OSのディスク容量
- 最大サイズ制限
- ASM環境の場合の制限
対処方法② データファイルを追加する
表領域に新しいデータファイルを追加する方法です。
|
1 2 3 |
ALTER TABLESPACE users ADD DATAFILE '/u01/oradata/users02.dbf' SIZE 1024M; |
この方法は 運用環境で最もよく使われる対処法 です。
メリット
- 既存データファイルを変更しない
- 拡張が簡単
デメリット
- ファイル数が増える
対処方法③ AUTOEXTENDを有効にする
データファイルの自動拡張を有効にすると、容量不足を防ぎやすくなります。
|
1 2 3 4 5 |
ALTER DATABASE DATAFILE '/u01/oradata/users01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; |
設定内容は以下の通りです。
| 設定 | 意味 |
|---|---|
| AUTOEXTEND ON | 自動拡張を有効化 |
| NEXT | 拡張単位 |
| MAXSIZE | 最大サイズ |
ただし、ディスク容量が不足すると別の問題が発生するため注意が必要です。
ORA-01653を防ぐ運用対策
ORA-01653は 事前の容量監視 によって防げるケースが多いです。
おすすめの運用対策を紹介します。
| 対策 | 内容 |
|---|---|
| Tablespace監視 | 定期的に空き容量を確認 |
| AUTOEXTEND設定 | 自動拡張を有効化 |
| アラート設定 | 容量が80%を超えたら通知 |
| インデックス整理 | 不要インデックスの削除 |
| ログ管理 | 大量データ処理の監視 |
特に本番環境では 容量監視スクリプト を作成しておくと安全です。
よくある質問(Q & A)
- ORA-01653はSQLの問題ですか?
-
いいえ。SQLの文法エラーではなく、表領域の容量不足によって発生するエラーです。
- AUTOEXTENDを設定すれば解決しますか?
-
多くの場合は解決します。ただしOSディスク容量が不足している場合は別のエラーが発生する可能性があります。
- TEMP表領域でもORA-01653は発生しますか?
-
はい。ソート処理などでTEMP Tablespaceが不足した場合にも発生します。
- インデックスでもORA-01653は発生しますか?
-
はい。インデックス作成や再構築時にもエラーが発生することがあります。
まとめ
ORA-01653は 表領域(Tablespace)の容量不足 によって発生するOracleエラーです。
主な原因
- Tablespaceの空き容量不足
- Datafileのサイズ上限
- AUTOEXTEND未設定
主な対処方法
- データファイルの拡張
- 新しいデータファイルの追加
- AUTOEXTENDの有効化
Oracle運用では、データ増加に伴って表領域の容量不足が発生することは珍しくありません。
そのため、定期的な容量監視と適切なTablespace管理を行うことで、ORA-01653の発生を未然に防ぐことが重要です。



