Oracle運用について バックアップ編(Data Pump)

こんにちは。GMO NIKKO エンジニアのN.I.です。

みなさんデータベースは何を使っていますか?

弊社ではRDBMSはMariaDBとOracleをメインで使用しています。

アドテク業界でOracleDBを使用しているのは珍しいという話をたまに聞いたりしますが…現役で使用しています。

今回は、弊社のシステムで使用しているOracleDBのバックアップ方法について紹介させていただこうと思います。

はじめに

バックアップはOracle標準のOracle Data Pumpを使用して行っています。Oracleのバックアップとリストアをする時に便利でこの方法に統一して運用しています。

性能としては1TBのOracleDBをデータベース を約3時間でバックアップ出来ます。

アクセスが少し遅くなりますが、バックアップ中もSelect文、Insert文の発行を問題なく出来ますので、週1回深夜帯に3時間半かけてデータベース全体のバックアップを取得しています。

また、フルバックアップを取得しておけば一部テーブルデータだけを復旧するなんてことも出来ます。

 

実際の使用方法について

expdp/impdpコマンドで指定してバックアップを取得します。手順としては以下の流れになります。

1.事前準備

バックアップファイルの出力フォルダの設定を行います。

デフォルトの場所にも出力出来ますが、Oracleインストールされたフォルダ内に出力為、出力フォルダーを別途設定することをお勧めします。

CREATE DIRECTORY文で出力フォルダの指定が出来ます。

出力フォルダー作成

 

2.データベースのバックアップ

実際にデータベース全体のバックアップファイルを作成する場合は以下expdpコマンドを実行します。

フルバックアップのバックアップ

そんなに難しくは無いかなと思います。

他にも特定のユーザーデータのみエクスポートや、表を選択していエクスポートすることも出来ます。

 

3.データベースのリストア

リストアする場合、impdpコマンドを実行しインポート出来ます。

リストア時注意点:DROPは自動的に行われない為、リストアするデータベースに同じ名前のSEQUENCE、VIEWがある場合はインポートされません。

SEQUENCE、VIEWもインポートしたい場合は事前にDROPが必要です。

おわりに

今回はOracleDBのバックアップについて紹介させていただきました。

Oracle Data Pumpを使用すれば本番DBのデータをテストDBにそのままコピーしたい場合も対応出来ますので運用が楽になると思います。

意外と使いやすいと思いますのでOracleを使用している方はぜひ使用してみてください。