0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracleテーブルスペースの拡張

Posted at

はじめに

やや性能が低いサーバにOracle DBをデスクトップクラスでインストールした後、データを大量投入したところ、容量不足となり、以下のようなエラーが出力されてしまった。

  • ORA-01653: (表領域USERS)で拡張できません
  • ORA-01658: 表領域USERSにセグメント用のINITIALエクステントを作成できません
  • ORA-01652: 一時セグメントを拡張できません

このインストールオプションでは、テーブルスペースは、データファイルというファイルで管理されており、この限界に達してしまった。これに対してはデータファイルを拡張することで、対応できたので、それをまとめておく。

対応手順

データファイルの確認

データファイルの対応はコマンドで行う。
コマンドを実行するため、SQLPLUSで対応するDBにSYSDBAで接続する。

sqlplus ユーザID/パスワード@接続先アドレス:ポート番号/DB名 as sysdba

DBへの接続 例
sqlplus admin/password@localhost:1521/hogedb as sysdba

次にデータファイルの所在(フルパス)を確認する。
(これから対応するコマンドで指定することが多い)

DBファイルの確認
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ずつ増加し、最大サイズの指定はしていない)

USERSへのデータベースファイルの追加
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;

おわりに

ここでの対応は、検証環境での対応につき、同じような立場の方の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?