8

テスト サーバーで Oracle 10g を使用して、データベースを静的なポイントにバックアップおよび復元する最も効率的で簡単な方法は何ですか。

ユースケースの例は次のとおりです。

  1. すべてのソフトウェアをインストールして構成する
  2. データをベース テスト ポイントに変更する
  3. どういうわけかバックアップを取ります(これは質問の一部です、これを行う方法)
  4. テストをする
  5. ステップ 3 の状態に戻る (バックアップ ポイントに復元します。これが質問の残りの半分です)

これは、sqlplus、rman、またはその他のスクリプト可能な方法で完了するのが最適です。

4

5 に答える 5

6

基準時間にバックアップを取る必要はありません。フラッシュバックデータベースを有効にし、保証された復元ポイントを作成し、テストを実行して、以前に作成した復元ポイントにフラッシュバックするだけです。

このための手順は次のとおりです。

  1. インスタンスをマウントモードで起動します。

    スタートアップフォースマウント;

  2. 復元ポイントを作成します。

    復元ポイントbefore_test保証フラッシュバックデータベースを作成します。

  3. データベースを開きます。

    データベースを開くように変更します。

  4. テストを実行します。

  5. インスタンスをシャットダウンしてマウントします。

    すぐにシャットダウンします。スタートアップマウント;

  6. 復元ポイントへのフラッシュバック。

    ポイントbefore_testを復元するためのフラッシュバックデータベース。

  7. データベースを開きます。

    データベースを開くように変更します。

于 2008-09-16T07:25:47.093 に答える
5

Flashbackと呼ばれる Oracle の機能を使用すると、復元ポイントを作成できます。これにより、テストの完了後に簡単に戻ることができます。

サイトより引用、

Flashback Database は、データベースの「巻き戻しボタン」のようなものです。データベースのバックアップを最初に復元する必要なく、データベースのポイント イン タイム リカバリを提供します。データベースのバックアップをテープから復元するのにかかる時間をなくせば、データベースのポイント イン タイム リカバリは高速になります。

于 2008-09-15T22:41:25.013 に答える
2

私の経験から、インポート/エクスポートはおそらく行くべき道です。エクスポートは DB の論理スナップショットを作成するため、大規模な DB や厳しいパフォーマンス要件には役に立ちません。ただし、スナップショットを作成したり、多くのマシンで使用したりしない場合はうまく機能します。

Rails プロジェクトでこれを使用して、統合テストのために開発者間で交換できる製品スナップショットを取得し、rake スクリプト内で作業を行いました。DB を破棄し、ダンプ ファイルをインポートする小さな sqlplus スクリプトを作成しました。

チェックしたい記事: OraFAQ Cheatsheet Oracle Wiki

Oracle は明らかに imp/exp を好まず、データ ポンプを支持しています。データ ポンプを使用したとき、私たちが持つことができなかったもの (つまり、共有環境では取得できなかった SYSDBA 権限) が必要でした。データポンプがあなたのバッグでなくてもがっかりしないでください。古いインプ/経験がまだそこにあります:)

RMAN は多くのセットアップを必要とし、DB で構成が必要になるため、このような場合には RMAN をお勧めできません (バックアップ用の独自のカタログ DB もあり、これはベア メタル リストアのことわざでは苦痛です)。

于 2008-09-16T11:05:07.223 に答える
1

コピーオンライトスナップショットをサポートするファイルシステムを使用している場合は、データベースを目的の状態に設定できます。次に、すべてをシャットダウンして、ファイルシステムのスナップショットを作成します。次に、テストを開始し、最初からやり直す準備ができたら、スナップショットをロールバックできます。スナップショットをサポートするファイルシステムがある場合、これは他のオプションよりも簡単な場合があります。

于 2008-09-15T22:44:57.953 に答える
0

@Michael Ridley ソリューションは完全にスクリプト化可能であり、どのバージョンのオラクルでも動作します。

これはまさに私がしていることです。毎週実行するスクリプトがあります

  1. ファイルシステムをロールバックする
  2. 本番アーカイブ ログの適用
  3. 新しい「Pre-Data-Masking」FS スナップショットを取得する
  4. ログをリセット
  5. 「本番前」のデータ マスキングを適用します。
  6. 新しい「Post-Data-Masking」スナップショットを取得します (マスクされたデータを投稿するロールバックを許可します)
  7. データベースを開く

これにより、開発データベースを本番データベースの近くに保つことができます。

これを行うには、ZFS を使用します。

この方法は、アプリケーションや「環境」全体にも使用できます (たとえば、単一の (スクリプト化された) コマンドで環境全体を「ロールバック」できます)。

ただし、10g を実行している場合は、データベースに組み込まれている Flashback を最初に確認する必要があります。

于 2008-09-16T11:41:42.470 に答える