1.未提交 直接 rollback
2.已提交
步驟 查詢指定時間內修改前數據庫數據:
-- 查詢誤操作前的數據(例如 10 分鐘前)
SELECT * FROM 表名 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE)
WHERE 條件;-- 將數據恢復(需確保有足夠權限)
FLASHBACK TABLE 表名 TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);
但是如果出現問題請 直接允許行移動
-- 啟用表的行移動功能(需有 ALTER TABLE 權限)
ALTER TABLE 表名 ENABLE ROW MOVEMENT;-- 閃回到指定時間點(例如 10 分鐘前)
FLASHBACK TABLE 表名 TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);-- 或閃回到特定 SCN(系統變更號)
FLASHBACK TABLE 表名 TO SCN <scn_number>;
完整示例:
-- 1. 檢查當前行移動狀態
SELECT table_name, row_movement
FROM user_tables
WHERE table_name = 'YOUR_TABLE';-- 2. 啟用行移動
ALTER TABLE your_table ENABLE ROW MOVEMENT;-- 3. 執行閃回(例如恢復到 15 分鐘前)
FLASHBACK TABLE your_table TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '15' MINUTE);-- 4. 驗證數據是否恢復
SELECT * FROM your_table WHERE ...;-- 5. 可選:禁用行移動
ALTER TABLE your_table DISABLE ROW MOVEMENT;