关于flashback_transaction_query和dba_fga_audit_trail(已经commit)数据不能匹配的问题

xuliduo 2014-09-01 02:03:34
最近在做个oracle和nosql同步的功能。
主要是思路是,调用oracle的审计和闪回,然后通过程序处理写到nosql里面。

最先通过FGA(dba_fga_audit_trail)查询,发现rollback或者还没commit的数据,FGA都有,并且分不出来。后来查询文档看到flashback_transaction_query视图。把他们关联起来以后,就可以查询所有commit成功的数据了。

但是在压力测试中,发现一个很奇怪的问题:flashback_transaction_query缺数据:

数据如下:
数据表(需要同步的表)和FGA中都有某条数据(说明提交成功了)
但是通过xid/scn查询flashback_transaction_query时,只有$FGA记录日志操作,而实际的insert/update操作却没有记录下来,不知道有人碰见过这种情况没?

oracle11gR2
同步工具用java jdbc实现。


...全文
384 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuliduo 2014-09-02
  • 打赏
  • 举报
回复
算了,还是写触发器吧,结贴了
xuliduo 2014-09-02
  • 打赏
  • 举报
回复
引用 14 楼 wildwave 的回复:
审计?这个实现方式有点奇特,为何不用logminer
logminer 远程读取比较麻烦吧?要不同步机得和oracle一个机器,或者得用文件系统了吧?
小灰狼W 2014-09-01
  • 打赏
  • 举报
回复
审计?这个实现方式有点奇特,为何不用logminer
xuliduo 2014-09-01
  • 打赏
  • 举报
回复
引用 12 楼 zlloct 的回复:
我觉得出现这种情况的很有可能是后面的回滚记录将前面的覆盖掉了。猜测而已
e,这个有方法能跟踪嘛?
CT_LXL 2014-09-01
  • 打赏
  • 举报
回复
引用 11 楼 xuliduo 的回复:
[quote=引用 10 楼 zlloct 的回复:] [quote=引用 5 楼 xuliduo 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 xuliduo 的回复:] 忧伤了~要沉了……
不会是中间有很多操作,你的操作记录被覆盖了吧。 保存有个时间限制的。[/quote] 现在是这样的,数据表有很多insert/update,都是有顺序的,比如insert 1 --> insert 2 --> insert3(都是commit成功了的),在FGA中,3条insert都存在,但是在flashback,insert 1和 insert 3存在,insert 2没有被记录下来。[/quote] 中间的一条DML没有?奇怪了[/quote] 恩,就是这种情况,很奇怪,压力测试1500条insert左右,少100条。[/quote] 我觉得出现这种情况的很有可能是后面的回滚记录将前面的覆盖掉了。猜测而已
xuliduo 2014-09-01
  • 打赏
  • 举报
回复
引用 10 楼 zlloct 的回复:
[quote=引用 5 楼 xuliduo 的回复:] [quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 xuliduo 的回复:] 忧伤了~要沉了……
不会是中间有很多操作,你的操作记录被覆盖了吧。 保存有个时间限制的。[/quote] 现在是这样的,数据表有很多insert/update,都是有顺序的,比如insert 1 --> insert 2 --> insert3(都是commit成功了的),在FGA中,3条insert都存在,但是在flashback,insert 1和 insert 3存在,insert 2没有被记录下来。[/quote] 中间的一条DML没有?奇怪了[/quote] 恩,就是这种情况,很奇怪,压力测试1500条insert左右,少100条。
CT_LXL 2014-09-01
  • 打赏
  • 举报
回复
引用 5 楼 xuliduo 的回复:
[quote=引用 4 楼 zlloct 的回复:] [quote=引用 2 楼 xuliduo 的回复:] 忧伤了~要沉了……
不会是中间有很多操作,你的操作记录被覆盖了吧。 保存有个时间限制的。[/quote] 现在是这样的,数据表有很多insert/update,都是有顺序的,比如insert 1 --> insert 2 --> insert3(都是commit成功了的),在FGA中,3条insert都存在,但是在flashback,insert 1和 insert 3存在,insert 2没有被记录下来。[/quote] 中间的一条DML没有?奇怪了
my主题 2014-09-01
  • 打赏
  • 举报
回复
要沉的节奏哇!~~~~
狂暴蜗牛 2014-09-01
  • 打赏
  • 举报
回复
顶一下 许哥···哈哈···MARK
xuliduo 2014-09-01
  • 打赏
  • 举报
回复
阿门~恩,字数太少~囧囧有神
cnyiwei 2014-09-01
  • 打赏
  • 举报
回复
扩散!
xuliduo 2014-09-01
  • 打赏
  • 举报
回复
引用 4 楼 zlloct 的回复:
[quote=引用 2 楼 xuliduo 的回复:] 忧伤了~要沉了……
不会是中间有很多操作,你的操作记录被覆盖了吧。 保存有个时间限制的。[/quote] 现在是这样的,数据表有很多insert/update,都是有顺序的,比如insert 1 --> insert 2 --> insert3(都是commit成功了的),在FGA中,3条insert都存在,但是在flashback,insert 1和 insert 3存在,insert 2没有被记录下来。
CT_LXL 2014-09-01
  • 打赏
  • 举报
回复
引用 2 楼 xuliduo 的回复:
忧伤了~要沉了……
不会是中间有很多操作,你的操作记录被覆盖了吧。 保存有个时间限制的。
bw555 2014-09-01
  • 打赏
  • 举报
回复
也不一定啊,等大版来看看吧
xuliduo 2014-09-01
  • 打赏
  • 举报
回复
忧伤了~要沉了……
sotom 2014-09-01
  • 打赏
  • 举报
回复
ITpub吧,,,CSDN 这种问题得不到答案滴

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧