|
|
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
Внешняя система с недоступным исходным кодом посылаeт на нашу базу запросы один из которых огребает ORA-ошибку? Как поймать аудитом именно этот SQL-запрос? Если делаю авторAudit of somefuckuser.... Whenever not successful, То вижу в trail-таблице только те таблицы, к которым запрос обращался! Как поймать сам запрос?(eго текст и, возможно, его bind-variables) Особенно если он уже, предположим, ушёл уже через 5 секунд из v$sqlarea? (дело происходит на 12с, SE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:05:14 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. restart насчет SQL, генерящего ошибку, не подскажу, не занимался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:27:46 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:44:26 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
только вот я упустил из виду, что в SQL_MONITOR попадают лишь запросы длиной > 5 мин.. (ну или с хинтом ..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:49:13 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
тьфу.. 5 сек, конечно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:49:39 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
ViktorWMВнешняя система с недоступным исходным кодом посылаeт на нашу базу запросы один из которых огребает ORA-ошибку? Как поймать аудитом именно этот SQL-запрос? Если делаю авторAudit of somefuckuser.... Whenever not successful, То вижу в trail-таблице только те таблицы, к которым запрос обращался! Как поймать сам запрос?(eго текст и, возможно, его bind-variables) Особенно если он уже, предположим, ушёл уже через 5 секунд из v$sqlarea? (дело происходит на 12с, SE) собрать трассировки, если с байнд - 4 уровня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 23:55:11 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
ViktorWM, для примера: trigger on servererror on SCHEMAcreate table ERROR_LOG ( id NUMBER, username VARCHAR2(30), errcode INTEGER, seq INTEGER, tmstmp TIMESTAMP(6), msg VARCHAR2(4000), sql_text CLOB ) / create sequence err_seq / create or replace trigger trg_error_logging after servererror on schema declare v_id number := err_seq.nextval(); v_tmstmp timestamp:= systimestamp; n int; sql_text dbms_standard.ora_name_list_t; v_sql_text clob; begin v_sql_text:=null; n := ora_sql_txt(sql_text); for i in 1..n loop v_sql_text := v_sql_text || sql_text(i); end loop; for i in 1.. ora_server_error_depth loop if i=1 then insert into error_log(id,seq,tmstmp,username,errcode,msg,sql_text) values( v_id, i, v_tmstmp, user, ora_server_error(i), ora_server_error_msg(i), v_sql_text); else insert into error_log(id,seq,tmstmp,username,errcode,msg) values( v_id, i, v_tmstmp, user, ora_server_error(i), ora_server_error_msg(i) ); end if; end loop; commit; END; / -- если все без ошибок, то включаем: alter trigger trg_error_logging enable / потом просто глянуть в табличку error_log. Как найдете виновника - вырубайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 00:06:43 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
xtenderViktorWM, для примера: trigger on servererror on SCHEMA Код: plsql 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. потом просто глянуть в табличку error_log. Как найдете виновника - вырубайтетег src забыл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 00:07:31 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
ViktorWM, клиентская трассировка, всякие sql monitor или триггер. но может быть сначала стоило озвучить код и текст ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 00:08:34 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
xtender, Cпасибо огромное! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 00:17:10 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
ViktorWMxtender, Cпасибо огромное! Добрый день. На наших базах стоит что то типа триггера ONERROR который всю инфу сбрасывает в отдельную табличку(включая SQL). Подробности сказать не могу, не на работе. У нас такая фигня стоит на каждой базе. По перфомансу это не напрягает базу, но помогает здорово. Когда кастомеры спрашивают - Чето приложение нифига не пашет как надо а ошибок на экране нет. Я в первую очередь в эту табличку смотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 11:39:49 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
xtenderViktorWM, для примера: trigger on servererror on SCHEMAcreate table ERROR_LOG ( id NUMBER, username VARCHAR2(30), errcode INTEGER, seq INTEGER, tmstmp TIMESTAMP(6), msg VARCHAR2(4000), sql_text CLOB ) / create sequence err_seq / create or replace trigger trg_error_logging after servererror on schema declare v_id number := err_seq.nextval(); v_tmstmp timestamp:= systimestamp; n int; sql_text dbms_standard.ora_name_list_t; v_sql_text clob; begin v_sql_text:=null; n := ora_sql_txt(sql_text); for i in 1..n loop v_sql_text := v_sql_text || sql_text(i); end loop; for i in 1.. ora_server_error_depth loop if i=1 then insert into error_log(id,seq,tmstmp,username,errcode,msg,sql_text) values( v_id, i, v_tmstmp, user, ora_server_error(i), ora_server_error_msg(i), v_sql_text); else insert into error_log(id,seq,tmstmp,username,errcode,msg) values( v_id, i, v_tmstmp, user, ora_server_error(i), ora_server_error_msg(i) ); end if; end loop; commit; END; / -- если все без ошибок, то включаем: alter trigger trg_error_logging enable / потом просто глянуть в табличку error_log. Как найдете виновника - вырубайте здесь стоит отметить, что если хотя бы какой-то перехват с обработкой ошибок делается в "прямом", не триггерном PL/SQL коде (а разработки на PL/SQL минимально профессионального уровня без этого быть не может), то эта обработка после такого триггера уже не cработает. То есть логика работы софта нарушится. Raise в триггере after servererror не проходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 21:23:45 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
Nobody1111xtender... здесь стоит отметить, что если хотя бы какой-то перехват с обработкой ошибок делается в "прямом", не триггерном PL/SQL коде (а разработки на PL/SQL минимально профессионального уровня без этого быть не может), то эта обработка после такого триггера уже не cработает. То есть логика работы софта нарушится. Raise в триггере after servererror не проходит. С чего бы?! Код: plsql 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. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. Вот если "проглатывать" ошибки, то тогда, конечно, триггер не сработает - не залоггирует ошибку, т.к. этот триггер на возврат ошибки клиенту, но это сами себе злые буратины, если ошибку проглотили и не залоггировали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 22:30:40 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
да, верно, очередность перехвата другая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:28:37 |
|
||
|
Как поймать аудитом тот SQL который огребает ошибку?
|
|||
|---|---|---|---|
|
#18+
trigger on servererror on SCHEMA Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2016, 23:50:09 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39261399&tid=1888024]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
194ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 498ms |

| 0 / 0 |
