Backup And Recovery User's Guide-使用閃回表來回退一個表-執行閃回表操作

LuiseDalian發表於2014-02-27

執行閃回表操作

場景:假設想閃回scott.emp1表,因為使用者錯誤地更新了資料。

--1.  連線SQL*Plus到目標資料庫並識別當前的SCN.

--    不能回滾FLASHBACK TABLE的操作,但可以執行另一個FLASHBACK語句,指定時間剛好在當前時間之前。

SELECT CURRENT_SCN FROM V$DATABASE;

--2. 識別你想還原表到的時間、SCN、還原點. 如果已經建立了還原點,則可以檢視可用的還原點

SELECT NAME, SCN, TIME FROM V$RESTORE_POINT;

--3. 確定有足夠的undo資料存在,來回退表到特定的目標時間.如果undo_retention初始化引數被設定了,並且undo保留期保證被開啟

--   可以通過下面的查詢來確定有多少undo資料被保留了

SELECT NAME, VALUE/60 MINUTES_RETAINED FROM V$PARAMETER WHERE  NAME = 'undo_retention';

--4. 對於打算使用FLASHBACK TABLE回退的所有的物件開啟行移動

ALTER TABLE table ENABLE ROW MOVEMENT;

--5. 確定你打算閃回的表是否對其它表有依賴,如果依賴存在,則要決定是否也閃回這些表.

SELECT t2.owner, t2.table_name

FROM   all_constraints t1, all_constraints t2

WHERE  t1.r_owner = t2.owner AND t1.r_constraint_name = t2.constraint_name

AND t1.owner = schema_name

AND t1.table_name = table_name

AND t1.constraint_type='R';

--6. 對要閃回的物件執行FLASHBACK TABLE操作

--6.1 閃回到還原點

FLASHBACK TABLE hr.temp_employees TO RESTORE POINT temp_employees_update;

--6.2 閃回到指定的SCN

FLASHBACK TABLE hr.temp_employees TO SCN 123456;

--6.3 閃回到指定的時間戳.注意時間戳到SCN的對映不問題精確的.使用時間戳來執行FLASHBACK TABLE語句,閃回到的時間最多會有3秒鐘的差異.

--    如果需要精確的時間點,則使用SCN而不是時間。

FLASHBACK TABLE hr.temp_employees TO TIMESTAMP TO_TIMESTAMP('2007-10-17 09:30:00', 'YYYY-MM-DD HH:MI:SS');

--7. 查詢表檢查資料

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1095800/,如需轉載,請註明出處,否則將追究法律責任。

相關文章