Oracleデータベースを運用していると、ディスク容量の整理やストレージの構成変更に伴い、表領域の物理ファイル(データファイル)を別ディレクトリへ移動したいケースがあります。
本記事では、Oracleのオンライン機能を活用し、サービス停止の最小化を目指した表領域ファイルの移動手順について解説します。
表領域ファイルを移動する主な理由
表領域ファイルを別ディレクトリへ移動する背景として、以下のような目的が考えられます。
- ディスクの空き容量を調整したい
- 高速なストレージへ移行したい
- ディレクトリ構成を整理・標準化したい
オンラインで移動可能な条件
Oracle Database 12c以降では、一部の表領域に対してオンラインのままファイルの移動が可能です。ただし、条件があります。
- 表領域が
READ WRITE
モードである - ファイルシステムがオンライン移動をサポートしている
- 該当のデータファイルが
AUTOEXTEND
でない、または再設定できること
オンラインでファイルを移動する手順
ここでは、表領域users
に紐づくデータファイルを/u01/oradata
から/u02/oradata
へ移動する例を紹介します。
① 現在のファイルパスを確認
SELECT file_name FROM dba_data_files WHERE tablespace_name = 'USERS';
② データファイルを移動
RMANを使用し、オンラインのまま物理ファイルを新しい場所へ移動します。
RMAN> MOVE DATAFILE '/u01/oradata/ORCL/users01.dbf' TO '/u02/oradata/ORCL/users01.dbf';
このコマンドを実行すると、Oracleが内部的にファイルの移動とデータ辞書の更新を行います。
③ 自動拡張の再設定(必要に応じて)
ALTER DATABASE DATAFILE '/u02/oradata/ORCL/users01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
④ 古いファイルの削除
RMANで移動した場合、Oracleが自動で旧ファイルを削除します。ただし、ファイルシステム上に残っているか確認し、安全に削除してください。
RMANが使えない場合のオフライン移動手順
オンライン移動ができない環境では、以下のように一時的にデータベース操作を止める手法が取られます。
- 対象の表領域をオフラインにする
- OSレベルでファイルを移動する
- 移動先のパスをデータベースに登録し直す
- 表領域をオンラインに戻す
ALTER TABLESPACE users OFFLINE;
-- OSコマンドでファイルを移動
ALTER DATABASE RENAME FILE '/u01/oradata/ORCL/users01.dbf' TO '/u02/oradata/ORCL/users01.dbf';
ALTER TABLESPACE users ONLINE;
注意点
- 事前に完全バックアップを取得しておくこと
- RMANオンライン移動はEnterprise Edition限定機能
- データベースアクセスが活発な時間帯は避ける
まとめ
OracleではRMANを活用することで、表領域のデータファイルをオンラインのまま別ディレクトリへ安全に移動できます。対応していない環境でも、オフラインでの移動手順を活用すれば柔軟なストレージ構成が可能です。用途や環境に応じた最適な方法で移動を行い、データベース運用を効率化しましょう。