【Flashback】Flashback Table功能實踐
1.Flashback Table功能描述
將資料表恢復到之前的一個時間點或SCN號。
注意:該功能將改變當前表及相關物件統一閃回到之前的一個狀態。
2.需要修改的系統引數
undo_management,引數需要是“AUTO”,保證回滾段使用模式是SMU mode
undo_retention,單位是秒,調整可回滾的時間範圍
確認系統的相關引數
sys@ora10g> show parameter undo
NAME TYPE VALUE
----------------- ---------- ----------------
undo_management string AUTO
undo_retention integer 2000
undo_tablespace string UNDOTBS1
3.10g的flashback table閃回特點
線上操作
恢復到指定時間點或者SCN的任何資料.
自動恢復相關屬性,如索引,觸發器等
滿足分散式的一致性
滿足資料一致性,所有相關物件將自動一致
4.Flashback Table語法
FLASHBACK TABLE tablename TO TIMESTAMP to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss');
FLASHBACK TABLE employee TO SCN 123456;
FLASHBACK TABLE t1 TO TIMESTAMP to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss'); ENABLE TRIGGERS;
5.閃回的前提條件
需要有flashback any table的系統許可權或者是該表的flashback物件許可權。
需要有該表的SELECT, INSERT, DELETE, ALTER許可權
必須保證該表ROW MOVEMENT
6.實驗內容及目的
使用flashback table閃回到之前某個時間點
驗證flashback table不能夠閃回被drop掉的索引
驗證flashback table不能夠閃回truncate的表內容
7.建立測試表
sec@ora10g> set time on
08:23:09 sec@ora10g> create table t1 as select * from dba_objects;
Table created.
08:23:13 sec@ora10g> create table t2 as select * from t1;
Table created.
08:23:19 sec@ora10g> select count(*) from t1;
COUNT(*)
----------
11413
08:23:30 sec@ora10g> select count(*) from t2;
COUNT(*)
----------
11413
08:23:34 sec@ora10g> create index inx_test1 on t1(object_name);
Index created.
08:23:40 sec@ora10g> create index inx_test2 on t1(object_id);
Index created.
08:23:43 sec@ora10g> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2011-05-07 08:23:48
8.模擬刪除:刪除表的索引,delete方式刪除資料,truncate方式刪除資料
08:24:11 sec@ora10g> drop index inx_test1;
Index dropped.
08:24:14 sec@ora10g> delete from t1;
11413 rows deleted.
08:24:24 sec@ora10g> commit;
Commit complete.
08:24:33 sec@ora10g> truncate table t2;
Table truncated.
08:24:38 sec@ora10g> select count(*) from t1;
COUNT(*)
----------
0
08:24:41 sec@ora10g> select count(*) from t2;
COUNT(*)
----------
0
9.Flashback Table閃回測試
08:24:45 sec@ora10g> alter table t1 enable row movement;
Table altered.
08:25:01 sec@ora10g> alter table t2 enable row movement;
Table altered.
08:25:04 sec@ora10g> flashback table t1 to timestamp to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss');
Flashback complete.
08:26:09 sec@ora10g> flashback table t2 to timestamp to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss');
flashback table t2 to timestamp to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss')
*
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed
08:26:22 sec@ora10g> select count(*) from t1;
COUNT(*)
----------
11413
08:26:34 sec@ora10g> select count(*) from t2;
COUNT(*)
----------
0
08:26:38 sec@ora10g> select index_name from user_indexes where table_name = 'T1';
INDEX_NAME
------------------------------
INX_TEST2
10.小結
使用flashback table可以將delete方式刪除的表閃回到之前某個時間點。
flashback table功能不能夠將被drop掉的索引恢復出來,因為drop索引的過程屬於DDL操作,不記錄undo資訊。
flashback table功能不能夠將被truncate的表內容恢復出來,原因也是truncate操作過程是不記錄undo資訊。
Good luck.
secooler
11.05.07
-- The End --
將資料表恢復到之前的一個時間點或SCN號。
注意:該功能將改變當前表及相關物件統一閃回到之前的一個狀態。
2.需要修改的系統引數
undo_management,引數需要是“AUTO”,保證回滾段使用模式是SMU mode
undo_retention,單位是秒,調整可回滾的時間範圍
確認系統的相關引數
sys@ora10g> show parameter undo
NAME TYPE VALUE
----------------- ---------- ----------------
undo_management string AUTO
undo_retention integer 2000
undo_tablespace string UNDOTBS1
3.10g的flashback table閃回特點
線上操作
恢復到指定時間點或者SCN的任何資料.
自動恢復相關屬性,如索引,觸發器等
滿足分散式的一致性
滿足資料一致性,所有相關物件將自動一致
4.Flashback Table語法
FLASHBACK TABLE tablename TO TIMESTAMP to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss');
FLASHBACK TABLE employee TO SCN 123456;
FLASHBACK TABLE t1 TO TIMESTAMP to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss'); ENABLE TRIGGERS;
5.閃回的前提條件
需要有flashback any table的系統許可權或者是該表的flashback物件許可權。
需要有該表的SELECT, INSERT, DELETE, ALTER許可權
必須保證該表ROW MOVEMENT
6.實驗內容及目的
使用flashback table閃回到之前某個時間點
驗證flashback table不能夠閃回被drop掉的索引
驗證flashback table不能夠閃回truncate的表內容
7.建立測試表
sec@ora10g> set time on
08:23:09 sec@ora10g> create table t1 as select * from dba_objects;
Table created.
08:23:13 sec@ora10g> create table t2 as select * from t1;
Table created.
08:23:19 sec@ora10g> select count(*) from t1;
COUNT(*)
----------
11413
08:23:30 sec@ora10g> select count(*) from t2;
COUNT(*)
----------
11413
08:23:34 sec@ora10g> create index inx_test1 on t1(object_name);
Index created.
08:23:40 sec@ora10g> create index inx_test2 on t1(object_id);
Index created.
08:23:43 sec@ora10g> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2011-05-07 08:23:48
8.模擬刪除:刪除表的索引,delete方式刪除資料,truncate方式刪除資料
08:24:11 sec@ora10g> drop index inx_test1;
Index dropped.
08:24:14 sec@ora10g> delete from t1;
11413 rows deleted.
08:24:24 sec@ora10g> commit;
Commit complete.
08:24:33 sec@ora10g> truncate table t2;
Table truncated.
08:24:38 sec@ora10g> select count(*) from t1;
COUNT(*)
----------
0
08:24:41 sec@ora10g> select count(*) from t2;
COUNT(*)
----------
0
9.Flashback Table閃回測試
08:24:45 sec@ora10g> alter table t1 enable row movement;
Table altered.
08:25:01 sec@ora10g> alter table t2 enable row movement;
Table altered.
08:25:04 sec@ora10g> flashback table t1 to timestamp to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss');
Flashback complete.
08:26:09 sec@ora10g> flashback table t2 to timestamp to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss');
flashback table t2 to timestamp to_timestamp('2011-05-07 08:23:48','yyyy-mm-dd hh24:mi:ss')
*
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed
08:26:22 sec@ora10g> select count(*) from t1;
COUNT(*)
----------
11413
08:26:34 sec@ora10g> select count(*) from t2;
COUNT(*)
----------
0
08:26:38 sec@ora10g> select index_name from user_indexes where table_name = 'T1';
INDEX_NAME
------------------------------
INX_TEST2
10.小結
使用flashback table可以將delete方式刪除的表閃回到之前某個時間點。
flashback table功能不能夠將被drop掉的索引恢復出來,因為drop索引的過程屬於DDL操作,不記錄undo資訊。
flashback table功能不能夠將被truncate的表內容恢復出來,原因也是truncate操作過程是不記錄undo資訊。
Good luck.
secooler
11.05.07
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-588847/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Flashback】Flashback Query功能實踐
- 【實驗】【Flashback】Flashback EXP功能實踐
- 【實驗】【Flashback】Flashback Transaction Query功能實踐
- 【Flashback】Flashback Drop閃回刪除功能實踐
- 【Flashback】Flashback Database閃回資料庫功能實踐Database資料庫
- flashback技術之---flashback table
- 【實驗】【Flashback】Flash Version Query功能實踐
- oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- Flashback Drop閃回刪除功能實踐
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- Flashback database與flashback table使用條件區別Database
- 【徵文】應用oracle flashback(2.1)--Flashback Table之RECYCLEBINOracle
- 全面學習oracle flashback特性(2.1)--Flashback Table之RECYCLEBINOracle
- oracle flashback特性(2.2)--Flashback Table之從UNDO中恢復Oracle
- 【徵文】應用oracle flashback(2.3)--Flashback Table之注意事項Oracle
- flashback drop/query/table/database/archiveDatabaseHive
- 影響flashback table的操作!
- Oracle的flashback功能Oracle
- 全面學習oracle flashback特性(2.3)--Flashback Table之注意事項Oracle
- Oracle中flashback table功能為什麼需要開啟row movement功能Oracle
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 【徵文】應用oracle flashback(2.2)--Flashback Table之從UNDO中恢復Oracle
- 啟用flashback database 功能Database
- Flashback Drop閃回刪除功能實踐(基於回收站)
- 全面學習oracle flashback特性(2.2)--Flashback Table之從UNDO中恢復Oracle
- [Flashback]Flashback Database閃回資料庫實驗Database資料庫
- sys使用者不支援flashback table特性!
- flashback技術之---flashback query
- flashback技術之---flashback drop
- flashback技術之---flashback databaseDatabase
- 【FLASHBACK】Oracle flashback data archive 介紹OracleHive
- flashback系列文章三(flashback database)Database
- [Flashback]Oracle flashback儲存過程Oracle儲存過程
- flashback技術之---flashback Transaction Query
- flashback技術之---flashback version query
- Flashback table with foreign key constraint.AI
- oracle 10g flashback version query 和 flashback transaction query實驗Oracle 10g