0

この質問は、 oracle rman simple backupとほとんど同じです。

しかし、そこには受け入れられる答えはありません。この質問は 11g に関するものです。だから私は尋ねます:

Oracle スキーマでいくつかのテーブル初期化 DDL テストを実行したいのですが、実行間でデータベースをテスト前の状態に戻したいと考えています。RMAN で以下を実行しています。

shutdown immediate;
startup mount
backup database;
sql 'alter database open';

正常に動作しているように見えますが、list backup にはバックアップが表示されます。

いくつかの変更を加えて(ユーザーを追加し、テーブルを追加し、データを追加しました)、バックアップを復元しようとしました:

shutdown immediate;
startup mount
restore database;
recover database;
sql 'alter database open resetlogs';

期待される結果: データベースは、最初のバックアップが作成されたときとまったく同じ状態に復元されるはずです。

実際の結果: テスト DDL で作成したすべての新しいテーブルとユーザーは引き続き存在します。接続を閉じ、セッションを再起動し、テーブルから選択することでこれを確認しました! 復元後もテーブルは残っています。

これとの取引は何ですか?MSSQL と Postgres では、バックアップとはデータベースの状態を保存することを意味し、それを復元するとはバックアップの時点に戻ることを意味します。しかし、Oracle 11g の RMAN では、復元が成功したと「主張」しますが、証拠は明らかにそうではないことを示しています。

Oracle にデータベースの状態をそのまま保存してから変更を加えるにはどうすればよいです?

これはオラクルで可能ですか?

4

1 に答える 1

0

はい、可能です。いくつかのオプションがあります。

  1. データベース(データファイル、制御ファイル、オンラインREDOログ)のコールド・バックアップを作成し、必要に応じてそれらをリストアする
  2. いわゆる「ポイント イン タイム リカバリ」を実行します (DB がアーカイブ ログ モードであると仮定します)。RMAN を使用して DB バックアップを作成し、「時刻」、「SCN」、または「アーカイブ ログ シーケンス」を記録します。しばらくすると、DB を復元し、以前に記録した時刻/SCN/LOG SEQUENCE まで回復できます。
  3. この目的のためにオラクルによって特別に設計されたものであり、あなたのケースでは「フラッシュバックデータベース」をお勧めします(Oracleのドキュメントを参照して、これが何であるかを確認してください)。

Oracleは、可能であれば、データベースを最後にコミットされたトランザクションまで常に復元/回復しようとします。そのため、上記の結果が得られますが、特定の時間/ SCN / SEQUENCEまで復元したい場合は、Oracleに伝えてくださいこれ :)

于 2015-12-09T09:04:52.067 に答える