Oracle閃回數據庫
做用:自動基於磁盤的備份與恢復,能把表恢復到過去的某個時間點或者SCN。
ide
1.查看閃回區索引
SQL> show parameter db_recovery_file_dest; 查看閃回區詳細信息事件
SQL> select flashback_on from v$database; 查看閃回區是否開啓get
2.修改閃回功能flash
SQL> startup mount; 數據庫啓動到mount下it
SQL> alterdatabase flashback on (off); 開啓關閉閃回區io
注:如遇到38706事件錯誤,多是由於歸檔不正確。先啓用數據庫歸檔。編譯
SQL> alter database archivelog;table
SQL> alter systemset db_flashback_retention_target=2880;
修改閃回時間,默認是1440分鐘(1天),閃回時間是指數據庫能回退的時間。
3.閃回使用實例:(注:sys用戶下不可用閃回)
3.1 閃回drop的表
在非sys用戶下建立表和表上索引,插入相關數據
create table abc (fnumber(9));
create index idx_teston abc(f);
insert into abc values(1);
insert into abc values(2);
insert into abc values(3);
3.2 刪除表
drop table abc;
3.3 刪除表以後,表並無被真正刪除,而是重命名以後放在同一用戶下的回收站內,同時表上的索引等也會被如此處理。回收站滿後以先進先出的原則管理。
查看錶語句 select* from tab;
查看索引語句 select index_name, index_type, table_name from ind;
查看回收站語句 show recyclebin;
清空回收站語句 PURGE RECYCLEBIN;
注:沒有放入回收站的表不能被閃回
3.4 閃回以後,便可再次看到表,可是表閃回後相應的索引等須要從新編譯。
flashback table abc to before drop;
3.5 閃回DML語句
Flashback table abc to timestamp to_timestamp(‘2014-02-14 16:00:00’,’yyyy-mm-dd hh24:mi:ss’)
閃回可能會遇到08189錯誤,執行下列語句
alter table test varchar enable row movement;
意思是容許Oracle修改rowid。Oracle插入數據時會爲該條數據分配惟一rowid而且不變,要啓用閃回功能必須開啓可修改rowid功能
閃回DML數據是使用回滾段進行恢復
附:查詢全部能夠撤消的操做,該操做依賴於undo_retention
SELECT versions_xidas xid,
versions_startscn,
versions_endscn,
versions_operation
FROM scott.abcVERSIONS between scn minvalue and maxvalue
查詢undo_retention參數
該參數保存了回滾段數據保存的秒時間,超過該時間則沒法閃回。默認爲15分鐘
修改該參數 alter system set undo_retention=3600;