はじめに
やや性能が低いサーバにOracle DBをデスクトップクラスでインストールした後、データを大量投入したところ、容量不足となり、以下のようなエラーが出力されてしまった。
- ORA-01653: (表領域USERS)で拡張できません
- ORA-01658: 表領域USERSにセグメント用のINITIALエクステントを作成できません
- ORA-01652: 一時セグメントを拡張できません
このインストールオプションでは、テーブルスペースは、データファイルというファイルで管理されており、この限界に達してしまった。これに対してはデータファイルを拡張することで、対応できたので、それをまとめておく。
対応手順
データファイルの確認
データファイルの対応はコマンドで行う。
コマンドを実行するため、SQLPLUSで対応するDBにSYSDBAで接続する。
sqlplus ユーザID/パスワード@接続先アドレス:ポート番号/DB名 as sysdba
sqlplus admin/password@localhost:1521/hogedb as sysdba
次にデータファイルの所在(フルパス)を確認する。
(これから対応するコマンドで指定することが多い)
select tablespace_name, file_name,bytes/1024/1024 "SIZE(MB)", autoextensible,increment_by from dba_data_files;
応答は、各テーブルスペースを構成するデータファイルのファイル名(フルパス)、自動拡張、増分が返ってくる。
各ファイル名を見ると、対応するテーブルスペースが判る文字列(USERS, SYSTEM, UNDOTBS1, SYSAUX)が含まれている。
容量不足になったテーブルスペースに対し、データファイルの増加、追加等で対応を行うことで対応する。
DBファイルを自動拡張可能に変更
前のステップで、テーブルファイルが自動拡張になっていない場合は、自動拡張に設定変更する。
ALTER DATABASE DATAFILE 'ファイル名(フルパス)' AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;
例えば、データファイル「C:\WORK\ORCL\ORADATA\ORCL\DBSAMPLE\USERS01.DBF」を自動拡張、最大サイズを指定しないに変更する場合は以下のようなコマンドを打鍵する。
alter database datafile 'C:\WORK\ORCL\ORADATA\ORCL\DBSAMPLE\USERS01.DBF' AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;
データファイルのサイズ変更
データファイルのサイズを変更するには以下のコマンドを実行する。
alter database datafile 'データファイル(フルパス指定)' resize 変更後のサイズ;
具体的には以下のようなコマンドで実施する。
alter database datafile 'C:\APP\ADMINISTRATOR\ORADATA\DBSAMPLE\DATAFILE\O1_MF_USERS_LYWYPO7X_.DBF' resize 32767M;
データファイルの追加
1つのデータファイルのサイズには限界(最大32767M)があり、これを超えた場合、各テーブルスペースに対し、データファイル自体を追加する必要がある。
以下は、USERSへのデータベースファイルの追加例。
(自動拡張ありで、初期サイズ1024M、不足した場合は10Mずつ増加し、最大サイズの指定はしていない)
set timing on;
ALTER TABLESPACE USERS ADD DATAFILE SIZE 1024M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;
set timing off;
コマンド実行後は、サイズを確認しておく。
select tablespace_name, ROUND(BYTES / 1024 / 1024,1), file_name from dba_temp_files;
一時テーブルスペースのサイズ変更
一時データベースが不足している場合のエラー「ORA-01652: 一時セグメントを拡張できません」等が出力されている場合、コマンドが異なる。
select tablespace_name, ROUND(BYTES / 1024 / 1024,1), file_name from dba_temp_files;
上記で表示されたファイルに対し、コマンドを打鍵する。
ALTER DATABASE TEMPFILE 'C:\WORK\ORCL\ORADATA\ORCL\DBSAMPLE\TEMP012023-12-29_14-10-42-670-PM.DBF' RESIZE 2048M;
おわりに
ここでの対応は、検証環境での対応につき、同じような立場の方の参考になれば幸いです。