1. 程式人生 > >Oracle閃回

Oracle閃回

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;


本文出自 “花之旭's Blog” 博客,謝絕轉載!

Oracle閃回