|
DECLARE
V_XID SYS.XID_ARRAY;
BEGIN
V_XID := SYS.XID_ARRAY('050017007C040000');
DBMS_FLASHBACK.TRANSACTION_BACKOUT(1, V_XID);
END;
这个只能SYS权限执行,如果我要撤销普通用户insert的数据,好像撤销不了,执行成功了,但数据还在.
sys@ZILING> insert into luoluo.t values(33);
已创建 1 行。
已用时间: 00: 00: 00.00
sys@ZILING> commit;
提交完成。
已用时间: 00: 00: 00.00
sys@ZILING> SELECT XID, TABLE_NAME, OPERATION, UNDO_SQL FROM FLASHBACK_TRANSACTION_QUERY WHERE TABLE_NAME = 'T';
XID TABLE_NAME
---------------- ------------------------------
OPERATION
----------------------------------------------------------------
UNDO_SQL
----------------------------------------------------------------------------------------------------
01001800B1020000 T
INSERT
delete from "LUOLUO"."T" where ROWID = 'AAASNQAAEAAAAJDAAC';
sys@ZILING> select * from luoluo.t;
ID
----------
444
14
2
22
34
33
已选择6行。
已用时间: 00: 00: 00.02
sys@ZILING> DECLARE
2 V_XID SYS.XID_ARRAY;
3 BEGIN
4 V_XID := SYS.XID_ARRAY('01001800B1020000');
5 DBMS_FLASHBACK.TRANSACTION_BACKOUT(1, V_XID);
6 END;
7 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 38.16
sys@ZILING> select * from luoluo.t;
ID
----------
444
2
22
34
33
请问yang老师,这个是否只有sys用户下操作SYS用户数据才能撤销呢? |
|