我正在使用 Oracle 11.1,并想弄清楚一个表中的两行是否由同一事务插入。
是否有一个简单的 sql 语句可以将一行映射到一个事务 id?该表是仅插入表。
我有哪些选择?一些 baisc 解决方案可以,我真的不想要一些额外的工具来分析日志文件。
谢谢
我正在使用 Oracle 11.1,并想弄清楚一个表中的两行是否由同一事务插入。
是否有一个简单的 sql 语句可以将一行映射到一个事务 id?该表是仅插入表。
我有哪些选择?一些 baisc 解决方案可以,我真的不想要一些额外的工具来分析日志文件。
谢谢
您可以使用ORA_ROWSCN伪列获取行的 SCN
除非你为表设置了行级别的依赖跟踪,否则这会报告该行所在块的最后一次更改的 SCN,这可能没有多大用处。您只能在
create table
某个时间打开行级依赖关系跟踪,因此您可能需要删除并重新创建表。请注意,行级跟踪将每行的大小增加 6 个字节。
具有行依赖性:
没有行依赖(norowdependencies 是默认值):
除非您添加自定义列,否则没有 100% 可靠的方式将行映射到事务。
使用
ORA_ROWSCN
,即使ROWDEPENDENCIES
启用,也并不总是准确的。Jack 的测试是正确的,表明单个事务将使用相同的 SCN 保存所有行。但是,不同的事务也可以创建具有相同 SCN 的行。样本结果:
结果不是确定性的,每个系统都会有所不同。有时
ORA_ROWSCN
s 是唯一的,查询不返回任何结果。但我不会相信这总是真实的。