Oracle閃回


Oracle閃回作用:自動基於磁盤的備份與恢復,能把表恢復到過去的某個時間點或者SCN。

 

1.查看閃回區

SQL> show parameter db_recovery_file_dest;  查看閃回區詳細信息

SQL> select flashback_on from v$database;  查看閃回區是否開啓

 

2.修改閃回功能

SQL> startup mount;               數據庫啓動到mount下

SQL> alterdatabase flashback on (off);   開啓關閉閃回區

注:如遇到38706事件錯誤,可能是因爲歸檔不正確。先啓用歸檔.

SQL> alter database archivelog;

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;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章