Oracle 如何确定COMMIT WRITE NOWAIT何时变得持久?

Oracle 如何确定COMMIT WRITE NOWAIT何时变得持久?,oracle,Oracle,在Oracle中发出COMMIT WRITE NOWAIT后,如何确定事务何时变得持久?我假设您正在询问新的(在10.2中)异步提交操作 COMMIT WRITE BATCH NOWAIT; 与旧的提交操作相比(采用新的长格式语法) 如果指定WAIT,则当提交操作返回时,事务是持久的。如果指定NOWAIT,则不会收到LGWR已将数据写入磁盘的任何通知。在下一个日志切换中,假设您知道当前SCN,V$log应该验证数据是否实际在磁盘上,因为您将有一个日志组,其第一次更改大于事务的SCN,但如果您正

在Oracle中发出COMMIT WRITE NOWAIT后,如何确定事务何时变得持久?

我假设您正在询问新的(在10.2中)异步提交操作

COMMIT WRITE BATCH NOWAIT;
与旧的提交操作相比(采用新的长格式语法)

如果指定WAIT,则当提交操作返回时,事务是持久的。如果指定NOWAIT,则不会收到LGWR已将数据写入磁盘的任何通知。在下一个日志切换中,假设您知道当前SCN,V$log应该验证数据是否实际在磁盘上,因为您将有一个日志组,其第一次更改大于事务的SCN,但如果您正在寻找更即时的通知,则这没有用。您也可以运行跟踪以查看数据实际写入的时间,但这在应用程序中没有用处


如果您希望在使用异步提交时获得一个或多或少的即时通知,表明您的事务实际上已写入磁盘,您能解释一下您试图解决的业务问题吗?也许有另一种方法可以实现您的任何目标。

我不想不必要地浪费时间等待同步提交。我有一个事件调度框架,它通知其他进程提交的更改。当然,我想延迟通知,直到提交变得持久。正如我所想,立即和批处理都可能是有用的设置。谢谢回答。经过一段时间的思考,我现在认为我们应该对四个可用的提交写入选项感到满意。其他任何事情都会给生产系统带来麻烦。
COMMIT WRITE IMMEDIATE WAIT;