oracle闪回版本和闪回事务查询详解(四)

2014-11-24 09:08:57 · 作者: · 浏览: 2
y-mm-dd hh24:mi:ss') and maxvalue order by 1
TYGER@ORCL>/


VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID V ENAME
---------------------- ---------------------- ---------------- - ----------
14-MAR-14 02.42.17 PM 14-MAR-14 02.42.26 PM 0600180025020000 U SMITH
14-MAR-14 02.42.26 PM 14-MAR-14 02.42.32 PM 01002C00F1010000 U SMITH
14-MAR-14 02.42.32 PM 080016000F020000 U SMITH
WARD
ALLEN
JONES
14-MAR-14 02.42.17 PM SMITH


7 rows selected.

实验三:闪回事务查询

flashback 的事务查询时通过查询flashback_transaction_query视图来实现的

通过查询该视图能够获得一些事务执行时的信息,甚至包括UNDO语句。

每个事务都有事务ID以及SCN关联关系

闪回事务处理查询是一中诊断工具,可以用来查看在事务处理级对数据库所做的更改。这样,可诊断数据库中的问题并对事务处理执行分析和审计。

可以使用FLASHBACK_TRANSACTION_QUERY视图来确定所有必要的SQL语句,这些语句可用来还原特定事务处理或特定时间段内所做的修改。

· 在数据库中,DDL操作只是对数据字典所做的一系列空间管理操作和更改。通过执行DDL对事务处理执行闪回事务处理查询时,会显示对数据字典所做的更改。

· 当闪回事务处理查询涉及到已从数据库中删除的表时,就不会反映表名称。而是使用对象编号。

· 如果闪回了执行事务处理的用户,则该事务处理的闪回事务处理查询只显示相应的用户ID,而不是用户名。

TYGER@ORCL>conn / as sysdba
Connected.
SYS@ORCL>
SYS@ORCL>
SYS@ORCL>select undo_sql from flashback_transaction_query where xid='080016000F020000';


UNDO_SQL
--------------------------------------------------------------------------------
update "TYGER"."TYGER" set "SAL" = '1057' where ROWID = 'AAANQ3AAGAAAAYMAAA';

SYS@ORCL>grant select any transaction to tyger;


Grant succeeded.


SYS@ORCL>conn tyger/tyger
Connected.
TYGER@ORCL>select undo_sql from flashback_transaction_query where xid='080016000F020000';


UNDO_SQL
--------------------------------------------------------------------------------
update "TYGER"."TYGER" set "SAL" = '1057' where ROWID = 'AAANQ3AAGAAAAYMAAA'; //undo语句