【Oracle】DUMPファイルのリストア方法を徹底解説!

スポンサーリンク

Oracleデータベースを運用していると、データのバックアップや他の環境へのデータ移行が必要になることがあります。その際に役立つのが、Oracle Data Pumpを使用したDUMPファイルのエクスポート・インポート機能です。

本記事では、DUMPファイルを使用したデータのリストア方法について、初心者にもわかりやすく解説します。

本記事を読めば、OracleのDUMPファイルを適切にリストアする方法が理解できるようになると思います。ぜひ最後までご覧ください!

DUMPファイルとは?

OracleのDUMPファイルは、データベースのバックアップや移行に使用されるエクスポート(export)データを格納したファイルです。

DUMPファイルは、以下のような場面で活用されます。

  1. データベースのバックアップ
    • 定期的なバックアップとして利用でき、データの復元が可能。
  2. 本番環境から開発環境へのデータ移行
    • テストや開発用に、本番環境のデータを別の環境へコピーする際に便利。
  3. 特定のスキーマやテーブルのエクスポート・インポート
    • 一部のデータだけを移行したい場合に使用。

DUMPファイルはバイナリ形式で保存されるため、通常のテキストエディタでは内容を直接確認できません。そのため、リストア時にはOracle Data Pumpのimpdpコマンドを使用して適切にデータを復元する必要があります。

事前準備

DUMPファイルをリストアする前に、以下の事前準備を行いましょう。適切な準備をすることで、リストアの失敗を防ぎ、スムーズなデータ復元が可能になります。

必要な環境の確認

リストアを実行するには、以下の環境が整っていることを確認してください。

Oracle Database(リストア先のデータベースが稼働していること)
✅ Oracle Data Pumpが使用可能であること
リストアするスキーマが存在していること(必要に応じて作成)
適切な権限を持つユーザーで実行すること(DBA権限が必要な場合あり)

特に、impdpを実行するユーザーには、以下の権限が必要です。

GRANT DBA TO username;  -- DBA権限(すべての操作が可能)
GRANT IMP_FULL_DATABASE TO username;  -- フルインポートの実行権限

DUMPファイルの確認

DUMPファイルに含まれるスキーマやテーブルの一覧を確認するには、以下のコマンドを実行します。

impdp system/password@orcl \
  dumpfile=backup.dmp \
  logfile=check.log \
  sqlfile=check.sql

このコマンドでは、DUMPファイルの内容を実際にリストアせず、SQLスクリプトとして出力できます。
check.sqlを開き、どのスキーマやテーブルが含まれているか確認しましょう。

リストア先のスキーマと表領域の確認

DUMPファイルをインポートする前に、リストア先のスキーマや表領域が適切に設定されているか確認します。

①リストア先のスキーマが存在するか確認

SELECT username FROM dba_users WHERE username = 'TARGET_SCHEMA';

スキーマが存在しない場合は、以下のコマンドで作成します。

CREATE USER TARGET_SCHEMA IDENTIFIED BY password;
GRANT CONNECT, RESOURCE TO TARGET_SCHEMA;
ALTER USER TARGET_SCHEMA QUOTA UNLIMITED ON USERS;

②表領域の確認

リストア先の表領域がDUMPファイルの表領域と異なる場合、remap_tablespaceオプションを使用して変更できます。
事前に、現在の表領域を確認しておきましょう。

SELECT tablespace_name FROM dba_tablespaces;

表領域を変更する場合の例は以下のようになります。

impdp system/password@orcl \
  dumpfile=backup.dmp \
  logfile=import.log \
  remap_tablespace=old_ts:new_ts

リストアの手順

ここでは、Oracle Data Pumpのimpdpコマンドを使用して、DUMPファイルをリストアする方法を解説します。

impdpコマンドの基本コマンド

Oracleのimpdpコマンドは、DUMPファイルからデータをインポートする際に使用されます。基本的な構文は以下の通りです。

impdp username/password@dbname \
  dumpfile=ファイル名.dmp \
  logfile=リストアログ.log \
  schemas=リストア対象スキーマ

主要なオプションの解説

オプション説明
dumpfileインポート対象のDUMPファイル名(複数指定可能)
logfileインポート処理のログを出力するファイル名
schemasインポートするスキーマ(複数指定可)
table_exists_action既存のテーブルがある場合の処理(後述)

リストアの実行手順

DUMPファイルの配置を確認

まず、DUMPファイルが格納されているディレクトリを確認します。Oracleでは、デフォルトでDATA_PUMP_DIRというディレクトリが指定されています。

以下のSQLコマンドで、DATA_PUMP_DIRのパスを確認できます。

SELECT * FROM dba_directories WHERE directory_name = 'DATA_PUMP_DIR';

通常、DATA_PUMP_DIR/u01/app/oracle/admin/DBNAME/dpdump/などに設定されています。

DUMPファイルが適切なディレクトリに配置されていることを確認しましょう。

リストアの実行

基本的なスキーマ単位でのリストアを行う場合、以下のようなコマンドを実行します。

impdp system/password@orcl \
  dumpfile=backup.dmp \
  logfile=import.log \
  remap_schema=old_schema:new_schema

オプションの説明

  • remap_schema=old_schema:new_schema
    • スキーマ名を変更してインポートしたい場合に使用。
  • remap_tablespace=old_ts:new_ts
    • 表領域を変更したい場合に使用。

実行後、ログファイル(import.log)を確認し、エラーがないかチェックします。

特定のスキーマ・テーブルのみをリストアする場合

特定のテーブルのみをリストアしたい場合は、includeオプションを使用します。

impdp system/password@orcl \
  dumpfile=backup.dmp \
  logfile=import.log \
  tables=table1,table2

この方法を使えば、大量のデータがあるDUMPファイルから、必要なテーブルのみを復元できます。

まとめ

本記事では、OracleのDUMPファイルを使用したデータのリストア方法について詳しく解説しました。

DUMPファイルのリストアは、バックアップやデータ移行時に非常に重要な作業です。
実際に試しながら、さまざまなオプションを活用して最適なリストア手順を身につけましょう!

コメント