[Oracle] オンライン中のデータファイル移動の方法”alter database move datafile”を紹介

オンライン状態のデータファイルを移動する方法を紹介します。

「データファイルのサイズが大きくなりすぎたので別の領域に退避したい」や、

「誤って違う領域にデータファイルを作成してしまった」時に大変便利なコマンドになります。」

なおこの機能はOracle Database 12c以降で使用できるコマンド

なので注意してください。

目次

オンライン中のデータファイル移動

オンライン中の移動方法は

alter database move datafile

で実施します。

alter database move datafile <ファイル番号orファイルパス> to <移動先>; 

以下が実施にオンライン中にデータファイルを移動しました実行結果になります。

15:38:17 SYS@orcl18c > set line 1000
15:38:29 SYS@orcl18c > col file_name for a80
15:38:29 SYS@orcl18c > col status for a20
15:38:29 SYS@orcl18c > select d.file_name,
15:38:29   2         t.status
15:38:29   3    from dba_data_files d
15:38:29   4    left outer join dba_tablespaces t on d.tablespace_name = t.tablespace_name
15:38:29   5   where d.tablespace_name = 'TESTTBS';

FILE_NAME                                                                        STATUS
-------------------------------------------------------------------------------- --------------------
/u01/app/oracle/oradata/orcl/testtbs001.dbf                                      ONLINE

経過: 00:00:00.00
15:38:29 SYS@orcl18c >
15:38:49 SYS@orcl18c > alter database move datafile '/u01/app/oracle/oradata/orcl/testtbs001.dbf' to
15:38:50   2                                        '/home/oracle/testtbs001.dbf';

データベースが変更されました。

15:38:29 SYS@orcl18c >
15:38:49 SYS@orcl18c > alter database move datafile '/u01/app/oracle/oradata/orcl/testtbs001.dbf' to
15:38:50   2                                        '/home/oracle/testtbs001.dbf';
データベースが変更されました。

経過: 00:00:03.39
15:39:46 SYS@orcl18c >
15:42:54 SYS@orcl18c >
15:42:54 SYS@orcl18c > select d.file_name,
15:42:55   2         t.status
15:42:55   3    from dba_data_files d
15:42:55   4    left outer join dba_tablespaces t on d.tablespace_name = t.tablespace_name
15:42:55   5   where d.tablespace_name = 'TESTTBS';

FILE_NAME                                                                        STATUS
-------------------------------------------------------------------------------- --------------------
/home/oracle/testtbs001.dbf                                                      ONLINE

経過: 00:00:00.00

12c以前のデータファイルの移動方法

ちなみにですが、12c以前のバージョンでデータファイルを移動するために以下の手順で行います。

  1. 表領域をオフラインにする(alter tablespace offline文)
  2. OSのコマンドを使ってデータファイルを移動する(mvコマンドなど)
  3. 制御ファイル内のデータファイルのパスを変更する(alter tablespace rename datafile文)
  4. 表領域をオンラインにする(alter tablespace online文)

Oracleの基本 ~データベース入門から設計/運用の初歩までposted with ヨメレバ

渡部 亮太,相川 潔,日比野 峻佑,岡野 平八郎,宮川 大地 技術評論社 2017-09-22

Amazonで探す

Kindleで探す

楽天ブックスで探す

楽天koboで探す

7netで探す

hontoで探す

e-honで探す

紀伊國屋書店で探す

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次