Oracleフラッシュバック問合せ

我々はバージョン9i以降のOracle DB Managerに用意されてこの後のフラッシュバック問合せ機能に簡単に確認。

基本的には、以前の時点でデータベースに存在していたが、実行時にSQLが存在しない可能性がありますまたは変更されているデータにアクセスするSQLの一種です。これを行うには、Oracleでは、UNDOの時間セグメントの間に利用可能なデータを使用しています。このセグメントは、知られているように、データは一連の変更前に保存されます。それは以前の変更(コミット)の確認に相談の読み取りの一貫性を確保するために使用され、可能な限り回復(ロールバック)で使用することができます。

Oracleフラッシュバック問合せのグラフィック実行

判決は、私たちは、削除または変更されているテーブル内のフラッシュバック問合せのデータを参照することができます。特定のポイント、システム、またはシステム変更番号(SCN)に指定し、この時点で一貫性のあるデータの画像からデータにアクセスするためのフラッシュバック問合せの実行。データベースが自動UNDO管理の仕事(AUM)に設定する必要があります。このレビューに次のパラメータ:
UNDO_MANAGEMENT =自動
UNDO_TABLESPACE = UNDOTBS001(セグメントは、UNDO表領域をホストする)
UNDO_RETENTION = 3600(我々はUNDOセグメントにデータを保持する時間を秒単位で)
UNDO_RETENTIONの表領域が時間が、データベースマネージャーがオーバーライドしようとしていることすべてのトランザクションを維持するのに十分な大きさでないUNDOの場合は、パラメータを基準にして考慮する必要があります。また、コマンドのフラッシュバック問合せは、パッケージのBDMS_FLASHBACKに対する権限を持っている必要があります実行するためにそれを検討してくださいこれを行うには:

SYS>助成金はuser1にDBMS_FLASHBACKの実行;

以下に例を示します。もし法案CLを含むテーブルについてお問い合わせしたいとしましょうlowingと我々が以前に削除された顧客データにアクセスする場合:

SYS> CHAR(SYSDATE、'DD - MM - YYYY HH24:MI')に選択するデュアルfecha_sistemaから。

fecha_sistema
-------------------------
2011年12月9日午前12時05分
SYS>削除t_facturasからWHERE cod_cliente = '00125';
4行は削除
SYS>コミット。

  

後で実行することで半時間:

SYS> CHAR(SYSDATE、'DD - MM - YYYY HH24:MI')を選択デュアルfecha_sistemaから
fecha_sistema
------------------------- 2011年12月9日12時35

SYS> execのDBMS_FLASHBACK.ENABLE_AT_TIME(TO_DATE('12 - 09から2011 12:05、'DD - MM - YYYY HH24:MI'));

SYS> CHAR(SYSDATE、'DD - MM - YYYY HH24:MI')を選択デュアルfecha_sistemaから
fecha_sistema
-------------------------
2011年12月9日12時35

SYS> execのDBMS_FLASHBACK.ENABLE_AT_TIME(TO_DATE('12 - 09から2011 12:05、'DD - MM - YYYY HH24:MI'));

PL / SQLプロシージャが正常に完了しました。

SYS> SELECT * FROM WHERE t_facturas cod_cliente = '00125';

... ...

... ...

... ...

...&HelliP;

4選択したレコードを。

SYS> dbms_flasback.disable実行;

SYS t_facturasから> SELECT COUNT(*)WHERE cod_cliente = '00125';

COUNT(*)

------

0

同じ変更番号のSCNにアクセスして取得することができます。

SYS> dbms_flashback.get_system_change_numberはデュアルから選択します。

GET_SYSTEM_CHANGE_NUMBER

------------------------

1307125

SYS> execのdbms_flashback.enable_at_system_change_number(1307125);

PL / SQLプロシージャが正常に完了しました

 

それは文の"選択を使用することも可能です...のように...":

SYS> SELECT * t_facturas cod_cliente = '00125'タイムスタンプのようにTO_TIMESTAMP('12 - 09から2011 12:05'、'DD - MM - YYYY HH24:MI')から;

SYS> SELECT * FROM WHERE t_facturas cod_cliente SCN 1307125のように= '00125';

セッションがフラッシュバック問合せモードときに、我々は唯一のSELECTステートメントを実行できることに留意してください。更新ステートメントは、(挿入、削除および更新)許可されていません。

このオプションを使用して日常業務の中で取得したデータで動作するように一時テーブルを使用すると便利です。

SYS>テーブルのt_facturas_antを作成する、MI'):(t_facturas cod_cliente = '00125'タイムスタンプのようにTO_TIMESTAMP('12 - 09から2011 12:05、'DD - MM - YYYY HH24から*を選択しとして

その他のオプションのフラッシュバック問合せ

以下のOracleがフラッシュバック問合せに関連する操作を提供するいくつかの機能は以下のとおりです
  • フラッシュバックバージョン問合せ:テーブルへの歴史的変化へのアクセス。
  • フラッシュバックトランザクション問合せ:特定のトランザクションの歴史的な変化へのアクセス。
  • フラッシュバック表:上記の、しかし単一のテーブルのデータへのアクセス。
  • フラッシュバックドロップ:('ごみ箱")削除されたテーブルを取得する。
  • フラッシュバックデータベースは:それは過去の時間にあったようにDBを残したりできる。バックアップを復元するために類似しているが、プロセスのフラッシュバックの時間の制約があるが、バックアップコピーを取得するために、はるかに高速。あなたはフラッシュバックモードとフラッシュリカバリ領域を有効にしておく必要があります。

これらのオプションの一部は、マネージャーが"エンタープライズエディション"であることが必要です。

それは、、複数のオプション"巻き戻し"を持つと我々はピンチ以上かかることができる非常に便利なステートメントとして記載されている。