|
|
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
Всем привет, пишу себе упрощалку для сброса сессий в Oracle, блокируется запись в таблице и ее необходимо скидывать. Стандартно это делаю через апдейт таблицы и сброс сессии: Код: sql 1. 2. 3. 4. 5. Хотел бы реализовать на Delphi: 1) беру в отдельном потоке таблицу на апдейт 2) скидываю ее по щелчку второй кнопки Но увы почему-то не скидывается На форме два ADOQuery один делает соответственно апдейт, а вот второй не хочет скидывать сессию, просто висит Содержимое ADOQuery: (запрос в девелопере скидывает сессию, а вот через Делфи не фига) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вызываю его: Form1.ADOQuery2.ExecSQL; Поток работает нормально, блокировка появляется. Помогите советом =) Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2019, 02:07 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
denkira2) скидываю ее по щелчку второй кнопки вот этот момент непонятен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2019, 11:55 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
кстати, из-под какого юзера работает ADOQuery? Случаем он не сам себя прибивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2019, 13:58 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
и еще, зачем commit в запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2019, 14:04 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
denkira, просто висит Specify IMMEDIATE to instruct Oracle Database to ... return control to you immediately. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2019, 15:55 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
Кроик Семён denkira2) скидываю ее по щелчку второй кнопки вот этот момент непонятен :) Форма на ней едит и кнопка, вводишь номер айдишника строки таблицы которую держит на апдейте кто-то, нажимаешь кнопку и он скидывает пользователя с апдейта. Кроик Семён кстати, из-под какого юзера работает ADOQuery? Случаем он не сам себя прибивает? Все под одним юзером с правами у него все хорошо, прибить он сам себя не может, так как запрос на сброс сессий тащит сид пользователя, а не мой. (Девелопер хавает запрос, и сессию убивает, ставил эксперимент перед переносом в Делфи) комит уберу. ma1tus denkira, просто висит Specify IMMEDIATE to instruct Oracle Database to ... return control to you immediately. ? Ошибок нет, просто висит, запускал по отдельности ADOQuery работают нормально, но вместе дружить не хотят (По отдельности это на апдейт таблицу берет и появляется блокировка, но вот когда до момента сброса доходит, то тут висит, так же если наоборот и в девелоперский искусственно сделать блокировку, то он убивает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2019, 04:01 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
1. Вы через одно соединение пытаетесь сделать и блокировку таблицы и принудительное завершение текущей сессии. Если обе вещи дошли до Oracle, то Вы должны получить ошибку ORA-00027. 2. Затык может быть на уровне ADOConnection , который не пропускает 2-ю команду, не дождавшись полного выполнения (в т.ч. и снятия блокировок) 1-й. Исключите из Вашего курсора запись, соответствующую текущей сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2019, 12:48 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
Александр Спелицин 1. Вы через одно соединение пытаетесь сделать и блокировку таблицы и принудительное завершение текущей сессии. Если обе вещи дошли до Oracle, то Вы должны получить ошибку ORA-00027. 2. Затык может быть на уровне ADOConnection , который не пропускает 2-ю команду, не дождавшись полного выполнения (в т.ч. и снятия блокировок) 1-й. Исключите из Вашего курсора запись, соответствующую текущей сессии. 1) Про одно соединение понял, запихнул два ADOConnection, для каждого запроса. 2) "Исключите из Вашего курсора запись, соответствующую текущей сессии" - не понял, что конкретно убрать и зачем. Даже две конекции не помогли: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 11:15 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
С убийством сессии вроде разобрался (был неверный курсор на убийство сессии, поправил), хотел бы спросить как грамотно, в моем примере убивать выполнение потока и убирать таблицу с апдейта. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Как теперь убрать этот апдейт? (неужели и тут нужно делать kill sid) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 19:51 |
|
||
|
Delphi+Oracle сброс сессий в Oracle
|
|||
|---|---|---|---|
|
#18+
denkira блокируется запись в таблице и ее необходимо скидывать. Хм. Чёткий подход к взаимодействию. А в сортире если кабинка занята, стреляете сквозь дверь? denkira Код: sql 1. В сколько-нибудь современных версиях Oracle стоит использовать disconnect. У kill session на нагруженном сервере есть раздражающая привычка заканчивать выполнение часа через два. denkira На форме два ADOQuery Работа с Oracle через ADO - удовольствие для приверженцев нетрадиционного секса. denkira один делает соответственно апдейт, а вот второй не хочет скидывать сессию, просто висит Попробуй для начала вместо alter system выполнить там select * from dual. Думаю, Вы ещё и загоняете их в одну сессию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 00:10 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39884986&tid=2038866]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 445ms |

| 0 / 0 |
