フラッシュバック表の操作を実行するには、次の手順を実行します。
次のSQL問合せを使用すると、hr.employeesの依存性を確認できます。
SELECT other.owner, other.table_name
FROM sys.all_constraints this, sys.all_constraints other
WHERE this.owner = 'HR'
AND this.table_name = 'EMPLOYEES'
AND this.r_owner = other.owner
AND this.r_constraint_name = other.constraint_name
AND this.constraint_type='R';
OWNER TABLE_NAME
------------------------------ ------------------------------
HR EMPLOYEES
HR JOBS
HR DEPARTMENTS
この例では、「表における行の移動の有効化」に記載されている手順を使用して、hr.employees、hr.jobsおよびhr.departmentsの各表に対して行の移動を有効化する必要があります。
この例では、5分前に行を誤って挿入したと想定しています。したがって、現在の時刻より5分前のタイムスタンプにロールバックする必要があります。
注意:
不要な変更がどの時点で行われたかが不明な場合、Oracle Flashback Version Queryを使用して、ターゲット表に対して最近行われたすべての変更を確認できます。この機能の使用方法については、このマニュアルでは説明しません。
次の問合せを使用すると、UNDOデータが保持される期間を確認できます。
SELECT NAME, VALUE/60 MINUTES_RETAINED
FROM V$PARAMETER
WHERE NAME = 'undo_retention';
NAME MINUTES_RETAINED
--------------- ----------------
undo_retention 15
FLASHBACK TABLE文を使用して、必要な表に対してフラッシュバック操作を実行します。次のSQL文は、表hr.employees、hr.jobsおよびhr.departmentsを指定した時間に戻します。
FLASHBACK TABLE hr.employees TO TIMESTAMP TO_TIMESTAMP('2012-03-27 09:30:00', 'YYYY-MM-DD HH:MI:SS');
FLASHBACK TABLE hr.jobs TO TIMESTAMP TO_TIMESTAMP('2012-03-27 09:30:00', 'YYYY-MM-DD HH:MI:SS');
FLASHBACK TABLE hr.departments TO TIMESTAMP TO_TIMESTAMP('2012-03-27 09:30:00', 'YYYY-MM-DD HH:MI:SS');



