Database OracleDB インフラ

DataPump(expdp/impdp)でバックアップ/リストアの方法と事前準備

投稿日:

こんにちは!シミダイ(@shimidai2100)です。

Oracle Databaseの論理バックアップ・リストアツール「DataPump」の使い方について紹介します。

Datapumpを利用するには準備が必要で使う時にも少々癖がありますが、この記事では丁寧に使い方と事前準備手順を紹介します。

またDatapumpは並列実行・暗号化・圧縮など様々な機能があり、使いこなすと強力なバックアップツールになります。

今後オススメの使い方をどんどん紹介したいと思います。

なおDatapumpはexpdpとimpdpの2つのツールの総称なので間違わないようにしましょう。

この記事の目的

  • Datapump(expdp/impdp)を行うための準備
  • Datapump(expdp/impdp)でバックアッ/リストアが出来るようになる
  • Datapumpでよく使うオプションとその使い所を紹介

Datapump(expdp/impdp)を行うための準備作業

まずはDatapumpを使うための準備作業ですが、大きく3つの設定が必要です。

  1. ディレクトリオブジェクトの作成
  2. ディレクトリオプジェクトへの読み書き権限付与
  3. Datapumpの実行権限付与

なお設定手順時のユーザはSYSユーザで実施します。

最初はディレクトリオブジェクトの作成です。

次に先ほど作成したディレクトリオブジェクトへ読み書き権限をDatapumpは実行ユーザへ付与します。

最後にDatapumpの実行権限の付与です。この権限は非常に強い権限であるため権限を付与するユーザは限定してください。

エクスポートは「DATAPUMP_EXP_FULL_DATABASE」、インポートは「DATAPUMP_IMP_FULL_DATABASE」権限をそれぞれ付与してください。

これでDatapumpに必要な設定は完了です。

expdpでダンプデータ(バックアップデータ)をエクスポート

expdpコマンドでダンプデータ(バックアップデータ)をエクスポートする手順を紹介します。

下が基本のコマンドになります。

何をエクスポートしたか分からなくなってしまうので、出力先ファイル名ログファイル名は必ず指定しましょう。

ではここからエクスポート対象を指定したexpdpの使い方を紹介します。

  • データベース全体

データベース全体をバックアップするには「full=y」オプションを使用します。

下がサンプルコマンドです。

  • スキーマ単位

スキーマ単位でバックアップするには「schemas=<スキーマ名>」オプションを使用します。

下がサンプルコマンドになります。

  • 表領域単位

下がサンプルコマンドになります。

  • テーブル単位

 カンマ区切りでテーブルを複数指定して、1回で複数のテーブルをエクスポートすることは可能です。

下がサンプルコマンドになります。

私の個人的な意見になりますが、最も利用するのは「テーブル単位」です。

理由は、Datapumpはアプリ担当がピンポイントでテーブルをバックアップするツールだからです。

データベース単位スキーマ単位表領域単位でバックアップするのはRMANを利用することをオススメします。

impdpでダンプデータ(バックアップデータ)をインポート

impdpコマンドでダンプデータ(バックアップデータ)をインポートする手順を紹介します。

インポートが正常に終了したのか分からなくなってしまうので、ログファイル名は必ず指定しましょう。

ではここからはインポート対象を指定したimpdpの使い方を紹介します。

インポートの時は注意が必要です、エクスポートした対象(スキーマ名・表領域名・テーブル名)インポートした対象が異なる場合は変換オプションが必要になります。

スキーマ名・表領域名・テーブル名が同じ時のインポート

  • データベース全体

下がサンプルコマンドになります。

  • スキーマ単位

下がサンプルコマンドになります。

  • 表領域単位

下がサンプルコマンドになります。

  • テーブル単位

 カンマ区切りでテーブルを複数指定して、1回で複数のテーブルをインポートすることは可能です。

下がサンプルコマンドになります。

スキーマ名・表領域名・テーブル名が異なる場合のインポート

ここからはスキーマ名・表領域名・テーブル名が異なる場合の紹介になります。

基本的には「remap_XXXXX」を利用して、コロンを使用して「<元の名前>:<対象の名前>」の形で指定します。

  • スキーマが異なる場合の変換方法

下がサンプルコマンドになります。

  • 表領域名が異なる場合の変換方法

下がサンプルコマンドになります。

  • テーブル名が異なる場合の変換方法

下がコマンドになります。複数のテーブルも指定する時は「カンマ」を使用して区切ってください。

本記事のまとめ

  • Datapump(expdp/impdp)を実行するためにディレクトリオブジェクトの作成権限の付与が必要
  • expdpでエクスポートする時はテーブル単位でバックアップを行う
  • impdpでインポート対象を変更する時は変換用のオプションを付ける

Oracle Databaseをもっと勉強したい方は↓の記事もオススメです。

OracleDBを勉強・理解する時のオススメ本を紹介

こんにちは!シミダイ(@shimidai2100)です。 Oracle Databaseを勉強・理解する上でオススメの本を紹介していきます。 RDBMSやSQLを勉強するための本ではなく、Oracle ...

スポンサードリンク

関連記事

-Database, OracleDB, インフラ

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.