各种闪回的使用
1、應(yīng)用Flashback Query查詢過去的數(shù)據(jù)
select * from t1 as of scn 44545454;
select * from t1 as of timestamp to_timestamp('2012-09-28:09:20:13','yyyy-mm-dd:hh24:mi:SS');
select * from t1 as of timestamp sysdate-5/1440;??
--select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss') sys_time,to_char(scn_to_timestamp(current_scn),'yyyy-mm-dd:hh24:mi:ss') scn_to_time,timestamp_to_scn(sysdate) date_to_scn,dbms_flashback.get_system_change_number scn1,current_scn scn2 from v$database;
??(1)使用Flashback Version Query 查詢記錄修改版本
? ?? ? select current_scn from v$database;
? ?? ? DML操作........
? ?? ???insert into t1 values(20,'gyj20');
commit;
update t1 set name='gyj200000' where id=20;
commit;
delete from t1 where id=20;
commit;
? ?? ? select current_scn from v$database;
? ?? ? SELECT ID,NAME,VERSIONS_STARTSCN STARTSCN,VERSIONS_ENDSCN ENDSCN,VERSIONS_OPERATION OPERATION,VERSIONS_XID XID
? ?? ???FROM T1 VERSIONS BETWEEN SCN 2942841 AND 2942947;
? ? --VERSIONS_STARTSCN:該條記錄操作時的SCN,如果為空,表示該行記錄是在查詢范圍外創(chuàng)建的
? ? --VERSIONS_ENDSCN:該條記錄失效時的SCN,如果為空,說明記錄在這段時間無操作,或者已經(jīng)被刪數(shù),配合VERSIONS_OPERATION
? ? --VERSIONS_OPERATION:I表示insert、D表示delete、U表示update
? ? --VERSIONS_XID:該操作的事務(wù)ID
? ??? alter database add supplemental log data; //Oracle11g禁用了supplemental logging
? ?? ? select current_scn from v$database;
? ?? ???DML操作........
? ?? ? select current_scn from v$database;
? ?? ?select xid,commit_scn,commit_timestamp,operation,undo_sql?
? ?? ? from flashback_transaction_query q where q.xid in (select?
? ?? ? versions_xid from t1 versions between SCN??2943656 and 2943676);
SQL> DESC FLASHBACK_TRANSACTION_QUERY --能獲得這個事務(wù)執(zhí)行時的很多信息,包括UNDO語句
Name? ?? ?? ?? ???Null?? ? Type
----------------- -------- ------------
XID? ?? ?? ?? ?? ???RAW(8) --事務(wù)ID,對應(yīng)Versions Query中的VERSIONS_XID
START_SCN? ?? ?? ???NUMBER? ?? ? --事務(wù)開始時的SCN
START_TIMESTAMP? ???DATE? ?? ?? ?--事務(wù)開始時間
COMMIT_SCN? ?? ?? ? NUMBER --事務(wù)提交時的SCN,該列為空的話,說明事務(wù)為活動事務(wù)
COMMIT_TIMESTAMP? ? DATE --事務(wù)提交時間
LOGON_USER? ?? ?? ? VARCHAR2(30) --操作用戶
UNDO_CHANGE#? ?? ???NUMBER --UNDO SCN
OPERATION? ?? ?? ???VARCHAR2(32) --執(zhí)行操作,有幾個值:Delete、Insert、Update、B、UNKNOWN
TABLE_NAME? ?? ?? ? VARCHAR2(256)--DML操作對象的表名
TABLE_OWNER? ?? ?? ?VARCHAR2(32) --表的屬主
ROW_ID? ?? ?? ?? ???VARCHAR2(19) --DML操作記錄的行地址
UNDO_SQL? ?? ?? ?? ?VARCHAR2(4000)--撤銷該操作對應(yīng)的SQL
1、從undo表空間恢復(fù)
? ?? ?select row_movement from user_tables where table_name='T1';
? ?? ?alter table t1 enable row movement;
? ?? ?select * from t1;
? ?? ?select current_scn from v$database;
? ?? ?delete from t1;
? ?? ?commit;
? ?? ?select * from t1;
? ?? ?select * from t as of scn 9999;
? ?? ?flashback table t1 to scn 9999;
? ?? ?flashback table t1 to timestamp sysdate-5/1440;?
? ?? ?--create temporary tablespace temp2 tempfile '/u01/app/oracle/oradata/bxdb/temp02.dbf' size 50M;
? ?? ?--alter user gyj??temporary tablespace temp2;
? ?? ?drop table t1;
? ?? ?select object_name,original_name,droptime from recyclebin;
? ?? ?flashback table t1 to before drop;
? ?? ?--flashback table t1 to before drop rename to t1_old;
? ?實驗:多個名為t1的表恢復(fù)會是什么順序???
? ? 回收站清除是按什么規(guī)則的??????
? ?? ?? ?恢復(fù)表時索引也同時被恢復(fù),但索引名稱是????
? ? drop table t1 purge; --真正刪除表
三、數(shù)據(jù)庫閃回配置:Books-->BAK-->Backup and Recovery Advanced User's Guide-->flashback
v$flashback_database_log
1、閃回區(qū)的大小
? ?? ?db_recovery_file_dest
? ?? ?db_recovery_file_dest_size
? ???db_flashback_retention_target
3、設(shè)閃回
? ?? ?startup mount
? ?? ?alter database flashback on;
? ?? ?alter database open;
? ?? ?一般在備庫中做完測試,用閃回恢復(fù)到測度前狀態(tài)
? ?? ?flashbackup database TO TIMESTAMP(SYSDATE-1/24);?
? ?? ?alter database open;
? ???create restore point 恢復(fù)點名字 [guarantee flashback database]
? ???drop restore point 恢復(fù)點名字
? ???flashback database to??restore point re_data;
? ? show parameter db_recover
? ? arcive log list;
? ? select flashback_on,force_logging from v$database;
? ? alter database force logging;
? ? select dbms_flashback.get_system_change_number from dual;
? ? drop table t1 purge;
? ? shutdown immediate;
? ? startup mount;
? ? flashback database to??restore point re_data;
??--flashback database to scn 1511225;
? ? alter database open resetlogs;
? ? select * from t1;
**********本博客所有內(nèi)容均為原創(chuàng),如有轉(zhuǎn)載請注明作者和出處!!!**********
Name: ? ?guoyJoe
QQ: ? ? ? ?252803295
Email: ? ?oracledba_cn@hotmail.com
Blog: ? ? ?http://blog.csdn.net/guoyJoe
ITPUB: ??http://www.itpub.net/space-uid-28460966.html
OCM: ? ??http://education.oracle.com/education/otn/YGuo.HTM
?_____________________________________________________________
加群驗證問題:哪些SGA結(jié)構(gòu)是必需的,哪些是可選的?否則拒絕申請!!!
答案在:http://blog.csdn.net/guoyjoe/article/details/8624392
Oracle@Paradise 總?cè)?127149411
Oracle@Paradise No.1群:177089463(已滿)
Oracle@Paradise No.2群:121341761
Oracle@Paradise No.3群:140856036
轉(zhuǎn)載于:https://blog.51cto.com/guoyjoe/1429057
總結(jié)
- 上一篇: 数据库中字段类型对应C#中的数据类型
- 下一篇: 码农在墨尔本首次求职有感