Welcome 微信登录

首页 / 数据库 / MySQL / Flashback Query查询操作的事务

Flashback Query:查询过去某个时间点对象中保存的记录信息,在当前时间与指定过去某个时间点之间。
 
SQL> conn scott/Oracle
 Connected.
 SQL> select dbms_flashback.get_system_change_number from dual;
 
GET_SYSTEM_CHANGE_NUMBER
 ------------------------
                  1196559
 
SQL> update flash_tbl set id=id+100 where id>15;
 
5 rows updated.
 
SQL> commit;
 
Commit complete.
 
SQL> delete flash_tbl where id<5;
 
4 rows deleted.
 
SQL> commit;
 
Commit complete.
 
SQL> desc flash_tbl
  Name                                      Null?    Type
  ----------------------------------------- -------- ----------------------------
  ID                                               NUMBER
  VL                                               VARCHAR2(1)
 
SQL> insert into flash_tbl values(300,"r");
 
1 row created.
 
SQL> insert into flash_tbl values(500,"t");
 
1 row created.
 
SQL> select dbms_flashback.get_system_change_number from dual;
 
GET_SYSTEM_CHANGE_NUMBER
 ------------------------
                  1196625
 SQL> select id,vl,versions_startscn,versions_endscn,versions_operation,versions_xid from flash_tbl versions between scn 1196559 and 1196625;
 
        ID V VERSIONS_STARTSCN VERSIONS_ENDSCN V VERSIONS_XID
 ---------- - ----------------- --------------- - ----------------
        120 S         1196576               U 0700290074010000
        119 R         1196576               U 0700290074010000
        118 Q         1196576               U 0700290074010000
        117 P         1196576               U 0700290074010000
        116 O         1196576               U 0700290074010000
       10 I
       11 J
       12 K
       13 L
       14 M
       15 N
 
        ID V VERSIONS_STARTSCN VERSIONS_ENDSCN V VERSIONS_XID
 ---------- - ----------------- --------------- - ----------------
       16 O                         1196576
       17 P                         1196576
       18 Q                         1196576
       19 R                         1196576
       20 S                         1196576
          4 C         1196588               D 08000B0096010000
          3 B         1196588               D 08000B0096010000
          2 A         1196588               D 08000B0096010000
          1 /         1196588               D 08000B0096010000
          1 /                         1196588
          2 A                         1196588
 
        ID V VERSIONS_STARTSCN VERSIONS_ENDSCN V VERSIONS_XID
 ---------- - ----------------- --------------- - ----------------
          3 B                         1196588
          4 C                         1196588
          5 D
          6 E
          7 F
          8 G
          9 H
 
29 rows selected.
 
 
根据记录,可以看到开始SCN和结束SCN,从操作列有I(插入),U(更新),D(删除),还有事务ID。
 
SQL> select dbms_flashback.get_system_change_number from dual;
 
GET_SYSTEM_CHANGE_NUMBER
 ------------------------
                  1200548
 
SQL> delete flash_tbl where id=116;
 
1 row deleted.
 
SQL> commit;
 
Commit complete.
 
SQL> select dbms_flashback.get_system_change_number from dual;
 
GET_SYSTEM_CHANGE_NUMBER
 ------------------------
                  1200555
 SQL> conn / as sysdba
 Connected.
 SQL> grant select any transaction to scott;
 
Grant succeeded.
 
SQL> conn scott/oracle
 Connected.
 
SQL> select xid,commit_scn,commit_timestamp,operation,undo_sql from flashback_transaction_query Q where Q.xid in(select versions_xid from flash_tbl versions between
 
scn 1200548 and 1200555);
 
XID              COMMIT_SCN COMMIT_TI OPERATION
 ---------------- ---------- --------- --------------------------------
 UNDO_SQL
 --------------------------------------------------------------------------------
 0A002F0062010000    1200554 31-MAR-14 DELETE
 insert into "SCOTT"."FLASH_TBL"("ID","VL") values ("116","O");
 
0A002F0062010000    1200554 31-MAR-14 BEGIN
 
通过上面可以看到,刚才所做的操作及时间,与LogMiner功能挺像。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle数据库中由于没有做任何约束,如何删掉表中重复的记录Oracle RAC无备份情况恢复ocr和olr相关资讯      Flashback Query  本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图