Bo's Oracle Station

查看: 1205|回复: 1

课程第19次

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2019-6-22 09:14:16 | 显示全部楼层 |阅读模式
  1. SQL> select  uvalue from t04209_uname where uname='g1';

  2.     UVALUE
  3. ----------
  4.          1

  5. SQL> update t04209_uname  set uvalue=2 where uname='g1';

  6. 1 row updated.

  7. SQL> commit;

  8. Commit complete.

  9. SQL>  update t04209_uname  set uvalue=3 where uname='g1';

  10. 1 row updated.

  11. SQL> commit;

  12. Commit complete.

  13. SQL>  update t04209_uname  set uvalue=4 where uname='g1';

  14. 1 row updated.

  15. SQL> commit;

  16. Commit complete.

  17. SQL> update t04209_uname  set uvalue=5 where uname='g1';

  18. 1 row updated.

  19. SQL> commit;

  20. Commit complete.

  21. SQL>
复制代码
  1. select * from dba_rollback_segs;

  2. select  * from v$transaction;
  3. --1000190010000000

  4. select  * from flashback_transaction_query ftq
  5. where ftq.xid='1000190010000000';

  6. select  * from flashback_transaction_query ftq
  7. where ftq.logon_user='HR' and ftq.table_name='T04209_UNAME';

  8. select  count(*) from flashback_transaction_query;
复制代码

   XIDSTART_SCNSTART_TIMESTAMPCOMMIT_SCNCOMMIT_TIMESTAMPLOGON_USERUNDO_CHANGE#OPERATIONTABLE_NAMETABLE_OWNERROW_IDUNDO_SQL
10C0016001400000011655922019/6/22 9:03:2711660442019/6/22 9:12:07HR1UNKNOWNT04209_UNAME
2100019001000000002019/6/22 9:11:0811659652019/6/22 9:10:19HR1UNKNOWNT04209_UNAME
3110012001600000011660572019/6/22 9:12:3711660702019/6/22 9:12:52HR1UNKNOWNT04209_UNAME
4140012001500000011660442019/6/22 9:12:0711660572019/6/22 9:12:37HR1UNKNOWNT04209_UNAME

  1. select
  2.   versions_xid,
  3.   versions_operation,
  4.   versions_startscn,
  5.   to_char(versions_starttime, 'YYYY-MM-DD:HH24:MI:SS'),
  6.   uvalue
  7.   from hr.t04209_uname
  8.   versions between scn minvalue and maxvalue
  9.   where uname='g1';
复制代码

   VERSIONS_XIDVERSIONS_OPERATIONVERSIONS_STARTSCNTO_CHAR(VERSIONS_STARTTIME,'YYUVALUE
11100120016000000U11660702019-06-22:09:12:525
21400120015000000U11660572019-06-22:09:12:374
30C00160014000000U11660442019-06-22:09:12:073
41000190010000000U11659652019-06-22:09:10:192
5 1
z.png


闪回表的时候,除了值要对,位置也要对,所以需要行移动(因为有可能,现在要闪回的位置被别人占领了!)
  1. SQL> create table t05310_c  ( a  number )   ;

  2. Table created.

  3. SQL> insert into t05310_c values (1) ;

  4. 1 row created.

  5. SQL> commit;

  6. Commit complete.

  7. SQL> update t05310_c set a=2 ;

  8. 1 row updated.

  9. SQL> commit;

  10. Commit complete.

  11. SQL> alter table t05310_c add ( b varchar2(20))  ;

  12. Table altered.

  13. SQL> select  * from t05310_c ;

  14.          A B
  15. ---------- --------------------
  16.          2

  17. SQL>  select  * from t05310_c ;

  18.          A B
  19. ---------- --------------------
  20.          1

  21. SQL>
复制代码
闪回表操作,本身是删除+插入的组合,如果DDL有增加字段,闪回到过去,会拖着新加的字段显示。
  1. select versions_xid, versions_startscn , versions_operation, a from hr.t05310_c
  2. versions between scn minvalue and maxvalue
  3. order by versions_startscn
  4.     ;
复制代码

   VERSIONS_XIDVERSIONS_STARTSCNVERSIONS_OPERATIONA
112000F001E0000001172963I1
2110016001E0000001172979U2
3110020001F0000001173527D2
4110020001F0000001173527I1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如何让闪回事务查询显示无遮挡的信息(operation/table_owner/rowid/undo_sql),可以考虑打开补充日志。

  1. select d.SUPPLEMENTAL_LOG_DATA_MIN,
  2.        d.SUPPLEMENTAL_LOG_DATA_PK,
  3.        d.SUPPLEMENTAL_LOG_DATA_UI,
  4.        d.SUPPLEMENTAL_LOG_DATA_FK,
  5.        d.SUPPLEMENTAL_LOG_DATA_ALL
  6. from v_$database d;

  7. alter database add supplemental log data;
复制代码



回复

使用道具 举报

0

主题

1

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2019-6-22 11:25:02 | 显示全部楼层
谢谢老师的总结,细心的老师,非常棒!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-5-20 11:35 , Processed in 0.042455 second(s), 27 queries .

快速回复 返回顶部 返回列表