按照我的理解,Oracle执行事务时,是先提交修改,同时记录修改点的日志,如果最终需要rollback,就根据日志的记录把数据恢复到检查点。
我的问题是,Oracle有没有提供这样的API或者机制,使得我们即使在一个事务commit之后,仍然能够根据之前Commit的日志(Orcale记录的用于rollback的日志或者我们在执行commit时通过Oracle日志记录的日志)在某一时刻进行rollback呢?简单的说,就是我们的外部应用程序能不能得到和分析事务执行的日志记录?

解决方案 »

  1.   

    根据日志回复数据本身是很复杂的事情,我的理解:不是为应用层提供的功能。
    所以,我觉得不应该这么做。
    可以使用Oracle提供的闪回技术恢复已经commit的数据。
      

  2.   

    谢谢doer_ljy(可战) ,其实我是尝试想个办法,看能不能利用Oracle DBMS的某些功能,让分布式web服务各自已经提交的事务在必要时可控的自动回滚,而不是我们手动去实现一些补偿逻辑的代码(例如 WS-Coordination规范中提到的补偿机制)。
    我现在就去查一下Flashback细节信息,看能不能利用。
      

  3.   

    我对Oracle不算很熟,特别我现在用到的还是8i,闪回技术应该是9i以上吧,所以我暂时无法尝试。就想问问各位高手,不知道Flashback是不是仅仅提供了一系列我们手工查看和操作的工具,它有没有提供接口,让我们在存储过程中可以利用这种机制,由应用程序控制回滚的进行?请各位不吝赐教。