ORA-01144: ファイル・サイズが最大値4194303ブロックを超えています。の対処法

この記事ではORA-01144の対処法について解説します。

 ORA-01144とは

表領域の拡張を実施した際にORA-01144のエラーが発生しました。

SQL>ALTER DATABASE DATAFILE '+DATA/TESTCDB/DATAFILE/sysaux.269.1138207979' RESIZE 32G;
ALTER DATABASE DATAFILE '+DATA/TESTCDB/DATAFILE/sysaux.269.1138207979' RESIZE 32G;
*
ERROR at line 1:
ORA-01144: File size (4194304 blocks) exceeds maximum of 4194303 blocks

これは1つのデータファイルのサイズが Oracle の上限を超えたときに発生するエラーになります。

smallfileの表領域ではデータファイルの最大ブロック数は4194303 blocksになります。

一般的な db_block_size=8KB の場合は4194303×8192=31.999...GBとなります。

32GBにリサイズを指定すると、この値を超えてしまうためエラーとなります。


 対処法

bigfile表領域にするか、データファイルを追加することで回避ができます。

32GBにしたい場合は上限のブロック数に合わせた値にリサイズすることで、実質的に32GBに設定することができます。

SQL>ALTER DATABASE DATAFILE '+DATA/TESTCDB/DATAFILE/sysaux.269.1138207979' RESIZE 34359730176;
Database altered.

最大サイズである4194303×8192=34359730176とすることでリサイズすることができました。