sqlplus または rman を使用した Oracle 10g テスト用のデータベースのバックアップ/復元
質問
テスト サーバーで Oracle 10g を使用することは、データベースを静的なポイントにバックアップして復元する最も効率的かつ簡単な方法です。バックアップの作成後に常に指定されたポイントに戻りたいと仮定した場合です。
使用例の例は次のとおりです。
- すべてのソフトウェアをインストールして構成する
- 基本テストポイントに合わせてデータを変更します
- 何らかの方法でバックアップを作成します(これは質問の一部であり、その方法)
- テストをする
- ステップ 3 の状態に戻ります (バックアップ ポイントに復元します。これが質問の残りの半分です)。
最適には、これは sqlplus または rman またはその他のスクリプト可能なメソッドを通じて完了します。
解決
基本時刻にバックアップを取得する必要はありません。フラッシュバック データベースを有効にし、保証された復元ポイントを作成し、テストを実行して、以前に作成した復元ポイントにフラッシュバックするだけです。
その手順は次のようになります。
- インスタンスをマウント モードで起動します。
起動強制マウント。
- 復元ポイントを作成します。
テスト前に復元ポイントを作成し、フラッシュバック データベースを保証します。
- データベースを開きます。
データベースを変更して開きます。
- テストを実行します。
- インスタンスをシャットダウンしてマウントします。
即時にシャットダウンします。スタートアップマウント。
- 復元ポイントへのフラッシュバック。
before_test ポイントを復元するデータベースをフラッシュバックします。
- データベースを開きます。
データベースを変更して開きます。
他のヒント
Oracle の機能を使用できます。 フラッシュバック これにより復元ポイントを作成でき、テスト終了後に簡単に復元ポイントに戻ることができます。
サイトから引用すると、
フラッシュバックデータベースは、データベースの「巻き戻しボタン」のようなものです。データベースのバックアップを最初に復元する必要なく、データベースポイントの回復を提供します。テープからデータベースのバックアップを復元するのにかかる時間を排除すると、データベースの時刻回復は速くなります。
私の経験から言えば、インポート/エクスポートがおそらく最適な方法です。エクスポートでは DB の論理スナップショットが作成されるため、大規模な DB や厳しいパフォーマンス要件には役に立ちません。ただし、スナップショットの作成など、多数のマシンで使用する場合には最適です。
私はこれを Rails プロジェクトで使用して、統合テストのために開発者間で交換できる本番スナップショットを取得し、その作業を rake スクリプト内で実行しました。DB を破壊し、その上にダンプ ファイルをインポートする小さな sqlplus スクリプトを作成しました。
チェックしておきたい記事:OraFAQ チートシート オラクルウィキ
Oracle は明らかに imp/exp を好まず、 データポンプ, 、データポンプを使用したとき、私たちには手に入らないものが必要でした(つまり、SYSDBA 権限は共有環境では取得できませんでした)。見てください。ただし、データポンプが手元になくてもがっかりしないでください。古い imp/exp はまだそこにあります :)
RMAN はセットアップに多くの時間がかかり、DB での設定が必要になるため、この種の用途には RMAN をお勧めできません (バックアップ用の独自のカタログ DB もあり、ベアメタルのリストアでは面倒です)。
コピーオンライト スナップショットをサポートするファイル システムを使用している場合は、データベースを希望の状態にセットアップできます。次に、すべてをシャットダウンし、ファイルシステムのスナップショットを作成します。その後、テストを開始し、最初からやり直す準備ができたら、スナップショットをロールバックできます。スナップショットをサポートするファイルシステムがあると仮定すると、これは他のオプションよりも簡単かもしれません。
@Michael Ridley ソリューションは完全にスクリプト化可能であり、Oracle のどのバージョンでも動作します。
これはまさに私がやっていることです。毎週実行するスクリプトがあります。
- ファイルシステムをロールバックする
- 運用アーカイブログを適用する
- 新しい「データマスキング前」FS スナップショットを取得します
- ログをリセットする
- 「実稼働前」データ マスキングを適用します。
- 新しい「データマスキング後の」スナップショットを取得します (マスクされたデータをポストにロールバックできます)
- オープンデータベース
これにより、開発データベースを運用データベースの近くに保つことができます。
これを行うには ZFS を使用します。
この方法は、アプリケーションや「環境」全体にも使用できます (たとえば、単一の (スクリプト化された) コマンドで環境全体を「ロールバック」できます。
ただし、10g を実行している場合は、データベースに組み込まれているフラッシュバックを最初に検討することになるでしょう。