在Oracle中发出COMMIT WRITE NOWAIT之后,我怎样才能知道事务何时变得持久?
答案 0 :(得分:2)
我假设你在询问新的(在10.2中)异步提交操作
COMMIT WRITE BATCH NOWAIT;
与旧的提交操作(在新的长格式语法中)
COMMIT WRITE IMMEDIATE WAIT;
如果指定WAIT,则在提交操作返回时事务是持久的。如果指定NOWAIT,则不会收到LGWR实际将数据写入磁盘的任何通知。在下一个日志切换时,假设您知道当前的SCN,V $ LOG应该验证数据实际上是在磁盘上,因为您的日志组的FIRST_CHANGE#大于您的事务的SCN,但是如果您正在寻找更直接的通知。您可以运行跟踪以查看数据实际写入的时间,但这对应用程序来说无用。
如果您正在寻找或多或少的即时通知,表明您的事务在使用异步提交时实际上已写入磁盘,您能解释一下您尝试解决的业务问题吗?也许还有另一种方法来实现你拥有的任何目标。