Пізно пізно, я зіткнувся з великою кількістю зміст блокування рядків. Таблиця, заперечувана, здається, є певною таблицею.
Це, як правило, те, що відбувається -
- Розробник 1 починає транзакцію з переднього екрану Oracle Forms
- Розробник 2 починає іншу транзакцію з іншого сеансу, використовуючи той самий екран
~ Через 5 хвилин передній кінець здається невідповідним. Перевірка сеансів показує суперечність блокування рядків. "Рішення", яке всі кидають, - це вбити сеанси: /
Як розробник бази даних
- Що можна зробити, щоб виключити зміст блокування рядків?
- Чи можна було б дізнатися, який рядок збереженої процедури викликає ці зміст блокування рядків
- Що було б загальним керівництвом щодо зменшення / уникнення / усунення таких проблем, які кодують?
Якщо в цьому питанні ви відчуваєте себе занадто відкритим / недостатньою інформацією, будь ласка, не соромтесь редагувати / дайте мені знати - я зроблю все можливе, щоб додати якусь додаткову інформацію.
У таблиці, про яку йдеться, розміщено безліч вставок та оновлень, я б сказав, що це одна з найзайнятіших таблиць. SP досить складний - для спрощення - він отримує дані з різних таблиць, заносить їх у робочі таблиці, на робочому столі відбувається багато арифметичних операцій, а результат робочого столу вставляється / оновлюється у відповідну таблицю.
Версія бази даних - Oracle Database 10g Enterprise Edition, випуск 10.2.0.1.0 - 64 біт. Потік логіки виконується в тому ж порядку в обох сеансах, транзакція не залишається відкритою занадто довго (або, принаймні, я так думаю ), а блокування відбувається під час активного виконання транзакцій.
Оновлення: кількість рядків таблиці більша, ніж я очікував, приблизно на 3,1 мільйона рядків. Крім того, після простеження сеансу я виявив, що пара операторів оновлення до цієї таблиці не використовує індекс. Чому це так - я не впевнений. Стовпець, на який посилається пункт де індексується. Зараз я відновлюю індекс.
COMMIT
або ROLLBACK
в розумний час, або b) влаштувати так, що одні і ті ж люди не завжди хочуть одного і того ж ряду одночасно.