-1

私はoracle11gr1を使用しています。プロジェクトの一環として、いくつかの制約(トリガーとチェック制約)を無効にして、複数の更新ステートメントを実行する必要があります。これにより、データベースが破損します。

データベースが破損した場合、データベース全体を再インポートする必要があります。これは、時間がかかる追加のタスクになります。

オラクルのフラッシュバック機能についてはほとんど知識がありません。フラッシュバックは、これらの不要なインポートを回避するのに役立ちますか。安定したポイントを設定して、問題が発生したときにそこに戻ることができるようにします。

それが私の要件に合うなら、私は学ぼうとします。私を助けてください。

この機能の概要を教えてください。

4

1 に答える 1

4

復元ポイント(おそらく保証された復元ポイント)を作成し、テストしたい変更を実装してから、その復元ポイントにフラッシュバックすることを望んでいるようです。

何かのようなもの

CREATE RESTORE POINT some_name GUARANTEE FLASHBACK DATABASE;

次に、必要な変更を加えます。復元ポイントを作成した時点のデータベースの状態に戻したい場合

FLASHBACK DATABASE TO RESTORE POINT 'some_name'

復元ポイントが終了し、フラッシュバックできなくなった場合

DROP RESTORE POINT some_name

しかし、それが本当にあなたが望むものであるかどうかは実際には明らかではありません。一連の変更を行った後、制約が検証に失敗するだけの問題である場合は、制約を延期可能として作成し、変更を行う前に制約を延期し、単一の一部として変更を行う方がはるかに理にかなっています。トランザクションを実行し、制約の検証に失敗した場合は変更をロールバックします(スクリプトをより効果的にデバッグできるように、検証に失敗した行をログに記録することに加えて)。

于 2012-07-06T06:27:54.797 に答える