通过Oracle10g的FLASHBACK_TRANSACTION_QUERY指定事务的历史信息

在数据库操作中,我们经常会遇到余下情况:
1.莫名其妙数据被DML了,不知道是谁DML的
2.想知道某张表某个时间段中被那个用户操作了什么SQL

以上问题我相信大家都遇到过,当然我们可以通过v$sql、v$sqltext、v$session找到我们需要的答案,我们更加可以通过FLASHBACK_TRANSACTION_QUERY中获得指定事务的历史信息以及Undo_SQL,通过这个UNDO_SQL,我们还可以恢复特定的事务。

--通过flashback version query获得crm_user的XID--
select versions_starttime, --事务开始时间--
versions_endtime, --事务结束时间--
versions_xid, --事务ID--
versions_operation --事务操作符--
from crm3x.crm_user versions between timestamp minvalue and maxvalue
order by VERSIONS_STARTTIME

--通过XID得到FLASHBACK_TRANSACTION_QUERY中的UNDO_SQL和LOGON_USER--
SELECT UNDO_SQL,
LOGON_USER
FROM sys.FLASHBACK_TRANSACTION_QUERY
WHERE XID in
(select versions_xid
from crm3x.crm_user versions between timestamp minvalue and maxvalue);

当然,通过以上方式就可以找到你需要的SQL语句和登录的“罪魁祸首”:)
同样,通过UNDO语句我们还可以撤销该事物
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值