В последнее время я наблюдаю какой-то тупик случайным образом один или два раза в день, поэтому я посмотрел код &, который мы помещаем в одну транзакцию. В то же время я хочу увеличить ini_trans до 5 на Oracle, чтобы он мог обрабатывать параллельный доступ. Приложение использует схему «app_user», которая вызывает схему «app_admin» (app_admin владеет таблицей). & одновременно осуществляется одновременный доступ к базе данных несколькими экземплярами приложения. Должен ли я увеличить ini_trans на app_user или app_admin или на обоих ?. Благодарю.Oracle Deadlock
ответ
Я думаю, что это было бы MAXTRANS, которое вы бы хотели рассмотреть, а не INITRANS, но в 10.2 вверх оно устарело, а по умолчанию используется значение 255.
Есть ли какие-либо растровые индексы? Они хороши для того, чтобы вызывать споры.
Нет индексов bitmap, только обычные индексы. Я читал эту страницу http://www.dba-oracle.com/t_initrans.htm и думал, что мне нужно увеличить INITRANS. Я использую Oracle 10g, когда я проверил запрос ini_trans = 1 & max_trans = 255. 1.Какой мне нужно изменить ini_trans или max_trans? и 2. Каковы наилучшие значения для этих двух ?. Благодарю. – user1388356
Сколько пользователей, по вашему мнению, будет одновременно получать доступ к блоку в таблице? –
Параллелизм обрабатывается JBOSS Container Managed Persistence, может быть примерно у нас есть 50 или 100 экземпляров JMS. Все экземпляры будут использовать одну и ту же пользовательскую схему «app_user» для доступа к таблицам app_admin. – user1388356
Here описал возможные причины проблемы. Следующий совет помог мне: «индексировать внешний ключ, а тупик исчезает». Проверьте внешние ключи, ссылаясь на таблицу, и попробуйте их индексировать.
- 1. Oracle Deadlock при обновлении
- 2. Oracle MERGE deadlock
- 3. Идентификация и разрешение Oracle ITL Deadlock
- 4. Sql DELETE deadlock
- 5. Deadlock qustions
- 6. Postgres deadlock
- 7. Условие deadlock
- 8. Strange Deadlock (?)
- 9. Решение Deadlock
- 10. Subprocess Deadlock
- 11. Hibernate deadlock
- 12. MPI_Sendrecv deadlock
- 13. SQLServer deadlock
- 14. MPI_Bcast deadlock
- 15. ADO.NET DeadLock
- 16. Проблема с Oracle Deadlock в управляемом сдерживаемом контейнере (EJB2.1)
- 17. Deadlock при создании материализованного представления
- 18. C# threading deadlock
- 19. Postgresql locks deadlock
- 20. Deadlock on SELECT/UPDATE
- 21. C++ thread deadlock
- 22. ActiveRecord3 deadlock retry
- 23. TFS Merge Deadlock
- 24. Sybase Batch insert deadlock
- 25. MultiThreading and Deadlock
- 26. ReaderWriterLockSlim LockRecursionPolicy.SupportsRecursion DeadLock
- 27. Пожалуйста Объясните Deadlock Концепция
- 28. ThreadPoolExecutor + Requests == deadlock?
- 29. VSIX - Deadlock на XmlEditingScope.Complete()
- 30. java VirtualMachine.getSystemProperties() deadlock
1) В чем именно ваше сообщение об ошибке? 2) Вы просмотрели файл трассировки, созданный для тупика? Он расскажет вам, какие объекты задействованы. 3) Вы уверены, что это не вызвано тем, что ваш код запрашивает ресурсы в непоследовательном порядке? Я видел много тупиков, но никогда, потому что некоторые настройки Oracle были слишком низкими. –
1. Ошибка SQL: 60, SQLState: 61000 ORA-00060: ТУПИК обнаружена во время ожидания ресурса Не удалось синхронизировать состояние базы данных с сессией org.hibernate.exception.LockAcquisitionException: Не удалось выполнить JDBC пакетного обновления 2. Да, был задействован объект, я исправил код для обработки всего в одной транзакции, чтобы убедиться, что он не вызывает приложение. 3. Некоторое время в этой области не было изменения кода, и все это внезапно началось после добавления нескольких ограничений на базу данных, которая обеспечивает целостность данных. Благодарю. – user1388356
Какие ограничения вы добавили? Вы добавили новые индексы? Возможно, что тот же самый запрос создаст тупик, если план запроса изменится между выполнением. Например, один сеанс использует полное сканирование таблицы и обновляет строки в порядке A B. И другой сеанс использует индекс и обновляет строки в порядке B A. –