Fra*_*fka 5 oracle flashback transaction
我正在使用 Oracle 11.1 并想确定一个表中的两行是否由同一事务插入。
是否有一个简单的 sql 语句将行映射到事务 ID?该表是仅插入表。
我有哪些选择?一些 baisc 解决方案可以,我真的不想要一些额外的工具来分析日志文件。
谢谢
您可以使用ORA_ROWSCN伪列获取一行的 SCN
除非你为表设置了行级依赖跟踪,否则这将报告该行所在块的最后一次更改的 SCN,这可能没有多大用处。您可以打开行级依赖跟踪在create table
唯一的一次,所以你可能需要删除并重新创建表。
请注意,行级跟踪会将每行的大小增加 6 个字节。
具有行依赖性:
create table foo rowdependencies as
select level as id from dual connect by level<=10000;
select count(distinct ora_rowscn) from foo;
COUNT(DISTINCTORA_ROWSCN)
-------------------------
1
begin
for r in (select id from foo) loop
update foo set id = id where id=r.id;
commit;
end loop;
end;
/
select count(distinct ora_rowscn) from foo;
COUNT(DISTINCTORA_ROWSCN)
-------------------------
10000
Run Code Online (Sandbox Code Playgroud)没有 rowdependencies(norowdependencies 是默认值):
create table bar as
select level as id from dual connect by level<=10000;
select count(distinct ora_rowscn) from bar;
COUNT(DISTINCTORA_ROWSCN)
-------------------------
1
begin
for r in (select id from bar) loop
update bar set id = id where id=r.id;
commit;
end loop;
end;
/
select count(distinct ora_rowscn) from bar;
COUNT(DISTINCTORA_ROWSCN)
-------------------------
16
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
2195 次 |
最近记录: |