oracle 閃回 flashback
--flashback 功能
flashback database:將整個資料庫倒退到一個特定的時刻。
flashback table:將表返回到過去的一個狀態。
flashback drop:撤銷 drop table 命令並恢復被刪除的表。
flashback query、flashback version query、flashback transaction query:檢索過去某一時刻(或時間間隔)的資料。
flashback transaction backout:撤銷一個事務以及它依賴的所有事務。
flashback data archive:儲存對一個表所做更改的歷史,可用它來構造舊版本資料的查詢和用於審計用途。
--閃回查詢技術
閃回查詢
閃回版本查詢
閃回事務查詢
--閃回錯誤操作技術
閃回表
閃回刪除
閃回資料庫
--使用條件
undo_management 引數必須是auto
閃回功能開啟
啟用回收站
應該為撤銷資料指定 retention guarantee 子句。僅設定較大的 undo_retention 值並不能保證 Oracle 不丟棄未過期的撤銷資料。
alter tablespace undotbs1 retention guarantee;
為保證資料一致性,在使用任何種類的閃回操作前,應該發出一條commit或者rollback語句。
--檢視閃回功能是否開啟
select flashback_on from v$database;
開啟閃回功能(mount狀態下)
alter database flashback on;
--檢視回收站是否啟用
show parameter recyclebin;
開啟回收站功能
alter system set recyclebin=on;
--查詢最大事務時間
select maxquerylen from v$undostat
order by maxquerylen;
--閃回查詢許可權
grant flashback on employees to ikki;
或者
grant flashback any table to ikki;
--閃回查詢
select 列名
from 表名
as of scn|timestamp 表示式
where 條件
sql>set time on;
14:02:58 SQL> select empno,sal
14:03:11 2 from emp
14:03:16 3 as of timestamp sysdate-1/24 (一個小時前的,1天除24)
14:03:53 4 where empno=7844;
14:04:01 SQL> select empno,sal
14:08:43 2 from emp
14:08:47 3 as of timestamp to_timestamp('2012-7-28 14:01:20','yyyy-mm-dd hh24:mi:ss')
14:09:56 4 where empno=7844;
select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') time_dp
from smon_scn_time
select scn_to_timestamp(2335368) from dual
select timestamp_to_scn(to_date('2012-7-28 14:01:26','yyyy-mm-dd hh24:mi:ss')) from dual
14:35:39 SQL> select current_scn from v$database;
2335368
14:39:55 SQL> select empno,sal from scott.emp
14:40:53 2 where empno=7844;
7844 4000
create bak_table as select * from table_name as of timestamp|scn;
insert into bak_table select * from table_name as of timestamp|scn;
--閃回版本查詢
select 列名
from 表名
versions between scn|timestamp
minvalue|表示式 and maxvalue|表示式
where 條件
versions_starttime
versions_startscn
versions_endtime
versions_endscn
versions_xid
versions_operation(i,d,u)
update scott.emp set sal=6000 where empno=7844;
update scott.emp set sal=6500 where empno=7844;
update scott.emp set sal=7000 where empno=7844;
commit;
update scott.emp set sal=7500 where empno=7844;
commit;
set linesize 600
col starttime format a30
col endtime format a30
col operation format a10
select versions_xid xid,versions_starttime starttime,versions_endtime endtime,
versions_operation operation,sal 表欄位
from scott.emp
versions between timestamp minvalue and maxvalue
where empno=7844
order by starttime;
select versions_xid xid,versions_startscn startscn,versions_endscn endscn,
versions_operation operation,sal
from scott.emp
versions between scn minvalue and maxvalue
where empno=7844
order by startscn;
閃回版本查詢的一些限制:
1)只能用此特性來查詢實際的表,不能查詢檢視。
2)不能跨DDL操作應用versions子句。
3)查詢將忽略純粹的行物理更改,如段收縮中發生的行物理更改。
4)如果處理外部表或臨時表,則不能使用此特性。
--閃回事務查詢
set pause on;
select versions_xid,sal
from scott.emp
versions between scn minvalue and maxvalue
where empno=7844;
select operation,undo_sql
from flashback_transaction_query
where xid=HEXTORAW('04001e002e010000');
--閃回表(不適合system表空間, 不能跨DDL操作)
flashback table 表名 to
scn|timestamp 表示式
[enable|disable triggers]
使用者具有flashback any table許可權
使用者具有物件許可權
合理設定undo_retention引數值
閃回表前先執行下面的語句:
alter table t enable row movement;
這是因為閃回操作是使用DML操作來完成工作,這些DML操作更改了影響到行的ID,因此你必須保證已經啟用用於閃回表特性的表中的行移動。
閃回表命令:
flashback table t to scn 675371;
或者
flashback table t to timestamp
to_timestamp('20131121 15:35:00','yyyymmdd hh24:mi:ss');
閃回表的一些限制:
1)不能閃回SYS擁有的表,恢復物件或遠端表。
2)不能將表閃回到涉及表結構更改(如修改或刪除列、擷取一個表、新增約束、執行與分割槽有關的操作如新增或刪除一個分割槽)
3)flashback語句涉及單個事務,閃回操作要麼完全成功,要麼完全失敗。如果閃回操作涉及多個表,所有的表都必須閃回或者不閃回。
4)如果在閃回操作中Oracle發現違背了約束,則放棄操作,使表保留原來的狀態。
5)如果收縮一個表或更改一個表的任意非儲存屬性(除了pctfeee、inittrans和maxtrans等屬性),則不能閃回到做出這些更改前的時刻。
--閃回刪除(只適合本地管理,非系統表空間的表)
flashback table 表名 to before drop[rename to 表名1]
show parameter recyclebin
alter system set recyclebin=on
select object_name,original_name,type from user_recyclebin;
--清除回收站
purge [table 表名]|[index 索引名]|
[recyclebin|dba_recyclebin]|
[tablespace 表空間名 [user 使用者名稱]]
purge recyclebin
--閃回資料庫
flashback [standby] database 資料名
to [scn|timestamp 表示式]
[before scn|timestamp 表示式]
歸檔模式
設定了閃回恢復區
啟用了flashback database特性
(mount狀態)alter database flashback on;
db_flashback_retention_target 設定閃回日誌保留時間
不適用於:
已還原或重建控制檔案
已刪除了表空間
已收縮了資料檔案
SQL> select oldest_flashback_scn,oldest_flashback_time,retention_target
2 from v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASH RETENTION_TARGET
-------------------- ------------ ----------------
2327829 28-JUL-12 1440
alter database to scn 2327829;
alter database open resetlogs;
select * from v$flashback_database_logfile
閃回表
alter table test.tbs enable row movement;
flashback table test.tbs to timestamp to_timestamp('2012-8-4 09:39:22','yyyy-mm-dd hh24:mi:ss');
select object_name,original_name,type from user_recyclebin;
select object_name,original_name,type from dba_recyclebin;
show recyclebin
select OBJECT_NAME,OBJECT_TYPE from user_objects;
alter index rename "BIN$xmfpWkYzIJPgQKjAJQARMA==$0" to "idx_a"
v$flashback_database_log
--閃回資料歸檔
11:30:46 SYS@dbtest> create tablespace fla
11:30:58 2 datafile '/u01/app/oracle/oradata/fla01.dbf' size 10m;
11:31:50 SYS@dbtest> create flashback archive default flaarea
11:32:37 2 tablespace fla quota 8m
11:32:55 3 retention 1 year;
11:33:05 SYS@dbtest> create tablespace fla1
11:35:47 2 datafile '/u01/app/oracle/oradata/fla101.dbf' size 20m;
11:36:17 SYS@dbtest> alter flashback archive flaarea
11:36:37 2 add tablespace fla1
11:36:47 3 quota 10m;
11:36:53 SYS@dbtest> alter flashback archive flaarea
11:38:24 2 modify retention 2 year;
11:38:37 SYS@dbtest> alter flashback archive flaarea
11:39:06 2 modify tablespace fla1
11:39:16 3 quota 12 m;
11:39:24 SYS@dbtest> alter flashback archive flaarea
11:39:39 2 set default;
11:39:44 SYS@dbtest> create tablespace fla2
11:41:44 2 datafile '/u01/app/oracle/oradata/fla201.dbf'
11:42:09 3 size 10m;
11:42:15 SYS@dbtest> create flashback archive flaarea1
11:42:31 2 tablespace fla2
11:42:36 3 quota 5m
11:42:42 4 retention 1 year;
--手動刪除閃迴歸檔區的資料
alter flashback archive flaarea
purge before timestamp to_timestamp('2012-8-4 15:00:00','yyyy-mm-dd hh24:mi:ss')
--授予使用者scott閃回區管理許可權和flaarea區上的閃回許可權
grant flashback archive administer to scott
grant flashback archive on flaarea to scott
grant flashback archive on flaarea1 to scott
--指定表到閃迴歸檔區
create table t1(c1 int) flashback archive
create table t2(c1 int) flashback archive flaarea1
create table t3(c1 int)
select * from t3 as of timestamp to_timestamp()
ORA-01548: active rollback segment '_SYSSMU2_2232571081$' found, terminate
dropping tablespace
--清除特定scn之前的資料
alter flashback archive flaarea purge before scn 728969
--將指定的表不再設定資料歸檔
alter table t1 no flashback archive
--刪除資料歸檔區
drop flashback archive flaarea
dba_flashback_archive
dba_flashback_archive_ts --表空間
dba_flashback_archive_tables
user_flashback_archive
user_flashback_archive_tables
--rman下的閃回
(mount下)
rman> flashback database to time="to_date('2012-8-4 15:00:00','yyyy-mm-dd hh24:mi:ss')";
rman> flashback database to scn=273533;
rman> flashback database to sequence=3 thread=1;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27633655/viewspace-1081551/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 閃回特性(FLASHBACK DATABASE)OracleDatabase
- Oracle閃回技術--Flashback Version QueryOracle
- 開啟oracle的flashback閃回功能Oracle
- Flashback_oracle閃回功能的使用Oracle
- Flashback閃回技術
- Oracle 11g開啟閃回功能FlashbackOracle
- Oracle Database 11g閃回技術flashbackOracleDatabase
- oracle flashback特性(1.2)--閃回查詢之As of scnOracle
- flashback query閃回資料
- Flashback Query閃回查詢
- [閃回特性之閃回版本查詢]Flashback Version Query
- ORACLE 閃回檢視v$flashback_database_log/statOracleDatabase
- oracle flashback特性(1.1)--閃回查詢之As of timestampOracle
- oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- [Flashback]Flashback Database閃回資料庫實驗Database資料庫
- 【Flashback】Flashback Drop閃回刪除功能實踐
- Flashback Database 閃回資料庫Database資料庫
- 【Mysql】mysql閃回flashback-5.7MySql
- oracle flashback特性(1.5)--閃回查詢之制約因素Oracle
- Oracle9i,.10g 閃回查詢(flashback)Oracle
- 【Flashback】Flashback Database閃回資料庫功能實驗Database資料庫
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 【Flashback】Flashback Database閃回資料庫功能實踐Database資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- 利用flashback閃回表和資料
- flashback閃回技術應用解析
- 閃回版本查詢(Flashback Version Query)
- 閃回區滿的處理 - flashback
- 【FLASHBACK】Oracle閃回及回收站相關語句參考Oracle
- 全面學習oracle flashback特性(1.2)--閃回查詢之As of scnOracle
- 【閃回特性之閃回事務查詢】Flashback Transaction Query
- 閃回資料歸檔-- Flashback Data ArchiveHive
- 聊聊閃回版本查詢Flashback Version Query
- Flashback Drop閃回刪除功能實踐
- Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)Oracle資料庫
- 全面學習oracle flashback特性(1.4)--閃回查詢之Transaction queryOracle
- 全面學習oracle flashback特性(1.1)--閃回查詢之As of timestampOracle
- 【徵文】全面學習oracle flashback特性(1.2)--閃回查詢之As of scnOracle