Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
Добрый день, такая задачка - нужно построить граф зависимости между объектами в DB2. Например, изменение в таблице 1 активизирует триггер1, триггер 1 вызывает процедуру 1, процедура 1 выбирает записи из вьюхи 1, вьюха 1 выбирает записи из таблицы 2. Мне нужно получить такую таблицу: Основной объект| Зависимый объект таблица 1 | триггер 1 триггер 1 | процедура 1 процедура 1 | вьюха 1 вьюха 1 | таблица 2 Зная такую зависимость можно будет знать что изменив структуру таблицы 2, необходимо будет изменить или перекомпилить все объекты вплоть до таблицы 1. В противном случае вставка в таблицу 1 может завершиться ошибкой. Большую часть подобных зависимостей, я надеюсь, можно будет извлечь из syscat, но что делать если в процедурах или триггерах есть динамические запросы? Задача не нова и я надеюсь, что есть готовые решения. К сожелению сторонние и особенно графические утилиты у нас не разрешены. Есть только DB Artisan и комманднная строка :-( Подскажите пожалуйста есть ли какие-нибудь системные хранимиые процедуры решающие подобные задачи. Может быть у кото-то уже есть готовый SQL? Всем заранее огромное спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2009, 19:27 |
|
||
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вот попробуйте. p_btype надо ставить соответственно типу объекта, как, например, тут . Код: plaintext 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. 92. 93. 94. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2009, 10:38 |
|
||
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, Пашет. Если я правильно всё понял (проверял не очень хорошо, правда), то для REFERENCES можно добавить в конец A Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 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. Код: plaintext 1. 2. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2009, 13:49 |
|
||
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
Vladimir KiselevЕсли я правильно всё понял (проверял не очень хорошо, правда), то для REFERENCES можно добавить в конец A Код: plaintext 1. 2. 3. 4. 5. 6. 1. Достаточно p_btype='T' - на mqt нельзя внешние ключи вешать. 2. Предложение надо добавить в обе части RCTE, причём во второй части надо отсекать возможные ссылки на саму себя, а то бесконечный цикл получится. Vladimir KiselevДа, мне не очень понравилась конструкция: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2009, 14:11 |
|
||
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinVladimir KiselevЕсли я правильно всё понял (проверял не очень хорошо, правда), то для REFERENCES можно добавить в конец A Код: plaintext 1. 2. 3. 4. 5. 6. 1. Достаточно p_btype='T' - на mqt нельзя внешние ключи вешать. 2. Предложение надо добавить в обе части RCTE, причём во второй части надо отсекать возможные ссылки на саму себя, а то бесконечный цикл получится. Vladimir KiselevДа, мне не очень понравилась конструкция: Код: plaintext Огромное спасибо, я протестирую предложенный код. Такой вопрос - если SQL генерится динамически, то скорее всего ссылки на объекты из этого SQL не будут в системных каталогах. Так ли это? Если да, то как искать - по полю text? Тоже был такой баг(или фича) - если в теле процедуры есть ссылка на временные таблицы, то были какие-то проблемы с пакаджами. Я к тому, что насколько надёжно доверять системным каталогам? Заранее большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2009, 02:29 |
|
||
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
KruТакой вопрос - если SQL генерится динамически, то скорее всего ссылки на объекты из этого SQL не будут в системных каталогах. Так ли это?Конечно. KruЕсли да, то как искать - по полю text?Можно, конечно, но в общем случае - бессмысленно.KruТоже был такой баг(или фича) - если в теле процедуры есть ссылка на временные таблицы, то были какие-то проблемы с пакаджами. Я к тому, что насколько надёжно доверять системным каталогам?Если вы про то, что если команда содержит временную таблицу, то зависимости для остальных таблиц команды не пишутся в каталог, то это фича. Доверять системному каталогу можно, но в весьма редких случаях там бывают ошибки, которые должны лечиться и лечатся фиксами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2009, 11:22 |
|
||
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
Марк, огромное спасибо за ответы. Можно ещё вопрос? Mark BarinsteinKruТоже был такой баг(или фича) - если в теле процедуры есть ссылка на временные таблицы, то были какие-то проблемы с пакаджами. Я к тому, что насколько надёжно доверять системным каталогам?Если вы про то, что если команда содержит временную таблицу, то зависимости для остальных таблиц команды не пишутся в каталог, то это фича. Доверять системному каталогу можно, но в весьма редких случаях там бывают ошибки, которые должны лечиться и лечатся фиксами. Как отловить, например, таблицы которые использует процедура но для которых зависимости не пишутся - как в случаях выше? Mark BarinsteinKruЕсли да, то как искать - по полю text?Можно, конечно, но в общем случае - бессмысленно. Почему бессмысленно искать по полю text? Есть ли какая-нибудь общепринятая практика решения подобных задач? Ещё раз огромное спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2009, 17:23 |
|
||
|
db2 - граф зависимых объектов
|
|||
|---|---|---|---|
|
#18+
KruКак отловить, например, таблицы которые использует процедура но для которых зависимости не пишутся - как в случаях выше?С помощью event monitor for statements. KruПочему бессмысленно искать по полю text?Вот вам процедура: Код: plaintext 1. 2. 3. Определите, к каким объектам будет обращаться процедура? KruЕсть ли какая-нибудь общепринятая практика решения подобных задач?Самим вести такой журнал надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2009, 17:54 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=35782681&tid=1603442]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 389ms |

| 0 / 0 |
