Как узнать, когда COMMIT WRITE NOWAIT стал долговечным? - PullRequest
1 голос
/ 03 сентября 2010

После того, как я выпустил сообщение COMMIT WRITE NOWAIT в Oracle, как я могу узнать, когда транзакция стала длительной?

1 Ответ

2 голосов
/ 03 сентября 2010

Я предполагаю, что вы спрашиваете о новой (в 10.2) асинхронной операции фиксации

COMMIT WRITE BATCH NOWAIT;

по сравнению со старой операцией фиксации (в новом синтаксисе расширенной формы)

COMMIT WRITE IMMEDIATE WAIT;

Если вы укажете WAIT, транзакция будет продолжительной после завершения операции фиксации. Если вы укажете NOWAIT, вы не получите никакого уведомления о том, что LGWR фактически записала ваши данные на диск. При следующем переключении журнала, предполагая, что вы знаете текущий SCN, V $ LOG должен проверить, что данные на самом деле находятся на диске, так как у вас будет группа журналов с FIRST_CHANGE # больше, чем SCN вашей транзакции, но это не полезно Вы ищете более немедленное уведомление. Вы можете запустить трассировку, чтобы увидеть, когда данные действительно записываются, но это не было бы полезно для приложения.

Если вы ищете более или менее немедленное уведомление о том, что ваша транзакция действительно была записана на диск при использовании асинхронных фиксаций, можете ли вы объяснить бизнес-проблему, которую вы пытаетесь решить? Возможно, есть альтернативный способ достижения любой цели, которую вы ставите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...