|
DDL триггер
|
|||
---|---|---|---|
#18+
Братцы, лыжи не едут, что делаю не так. Код: 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.
В "упор" не пойму где ошибка?? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 12:53 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Создавать объект в триггере на создание объекта. Да ты гений рекурсии... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 13:28 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist Братцы, лыжи не едут, что делаю не так. Код: 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.
В "упор" не пойму где ошибка?? В дополнение к предыдущему замечанию (как минимум напрашивается секция WHEN (ora_dict_obj_type='TABLE'), чтобы не срабатывал на прочих объектах), расширенное сообщение об ошибке гласит: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
CREATE INDEX не предусмотрен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 13:59 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
2 Asmodeus Спасибо. Тогда уточняющий вопрос, как создать индекс на табличку используя системные события (как вариант повесить шедулер, но не хотелось бы)?? 2 Dimitry Sibiryakov Дык, "я не волшебник, я только учусь " (с) к/ф Золушка Оракл увидел впервые 3 месяца назад :(( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 14:23 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWistТогда уточняющий вопрос, как создать индекс на табличку используя системные события (как вариант повесить шедулер, но не хотелось бы)?? Во-первых, никак. Во-вторых, даже если ты найдёшь проктостоматологический способ, это будет диверсия, поскольку лишние индексы в базе - зло. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 14:46 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist 2 Asmodeus Тогда уточняющий вопрос, как создать индекс на табличку используя системные события Извиняюсь, зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:06 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Во-первых, никак. Во-вторых, даже если ты найдёшь проктостоматологический способ, это будет диверсия, поскольку лишние индексы в базе - зло. 1. ОК, спасибо ( уже сам понял, нашел). 2. Нуу, как бы... у тебя запрос выполнялся 15 мин, а стал выполняться за 3 сек, а так индексы конечно зло ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:10 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PaulWistТогда уточняющий вопрос, как создать индекс на табличку используя системные события (как вариант повесить шедулер, но не хотелось бы)?? Во-первых, никак. Во-вторых, даже если ты найдёшь проктостоматологический способ, это будет диверсия, поскольку лишние индексы в базе - зло. Осталось только научиться отличать "лишние" индексы от "нелишних". :-) P. S. На Exadata можно использовать Automatic Indexing , но делать это нужно осторожно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:15 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWistНуу, как бы... у тебя запрос выполнялся 15 мин, а стал выполняться за 3 сек Какой запрос если ты таблицу только создаёшь? Твой триггер должен обладать даром предвидения чтобы в момент создания таблицы предвидеть запросы к ней. Не говоря уже об искусственном интеллекте чтобы распознать поля, которые необходимо проиндексировать для ускорения этого запроса. "Нет, сынок, это фантастика." (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:16 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist 2. Нуу, как бы... у тебя запрос выполнялся 15 мин, а стал выполняться за 3 сек, а так индексы конечно зло И поэтому индексы надо создавать налету? SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:18 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PuM256 PaulWist 2 Asmodeus Тогда уточняющий вопрос, как создать индекс на табличку используя системные события Извиняюсь, зачем? Да, блин, "коробочная" система а-ля 1С на СУБД Oracle, MSSQL, Informix итп с "индусским кодом", в ней есть такое безобразие как перегрузить таблицу (причём местные программёры её часто используют, нафига мне не понятно), фактически табличка выгружается в файл, убивается drop table со всеми атрибутами, а затем создаётся из своих метаданных, причем например индексы могут создаваться только как create index idx on table (f1, f2...) создать индекс DECODE(f1) уже не может, вот приходиться искать методы обойти индусов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:19 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov PaulWistНуу, как бы... у тебя запрос выполнялся 15 мин, а стал выполняться за 3 сек Какой запрос если ты таблицу только создаёшь? Твой триггер должен обладать даром предвидения чтобы в момент создания таблицы предвидеть запросы к ней. Не говоря уже об искусственном интеллекте чтобы распознать поля, которые необходимо проиндексировать для ускорения этого запроса. "Нет, сынок, это фантастика." (с) Иии что?? Если таблица создаётся, то для неё уже, как правило, известны запросы, (PK/FK), ... нет ну если создать таблицу, а затем ждать тормозов, ... тоже метод. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:24 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist Dimitry Sibiryakov пропущено... Какой запрос если ты таблицу только создаёшь? Твой триггер должен обладать даром предвидения чтобы в момент создания таблицы предвидеть запросы к ней. Не говоря уже об искусственном интеллекте чтобы распознать поля, которые необходимо проиндексировать для ускорения этого запроса. "Нет, сынок, это фантастика." (с) Иии что?? Если таблица создаётся, то для неё уже, как правило, известны запросы, (PK/FK), ... нет ну если создать таблицу, а затем ждать тормозов, ... тоже метод. В этом случае как раз и помогает автоматическое индексирование! Но не всем. А только владельцам БД современных версий на платформе Exadata. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:27 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist Да, блин, "коробочная" система а-ля 1С ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 15:33 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
В порядке бреда - в триггере запланировать задачу через Scheduler, и в той задаче уже создать индекс. Пардон, плохо читал, автором же и предлагалось. Но вполне рабочий вариант, если повесить триггер на создание таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 16:12 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist Asmodeus пропущено... Вот именно, что коробочная система, где требуемые индексы строят разработчики коробочки , предполагая, какие запросы будут прилетать в БД (исходя из выдаваемых наружу - пользователю, - функций). Это не БД сама занимается прикладным индексостроением от скуки (Autonomous Database не берем в расчет, там все не однозначно, хотя и довольно интересно в режиме "REPORT ONLY"). Блин, ты уж определись, то таблицу создали зачем индексы, то таблицу создали индексы нужны. Как тебя понять Абдула (с) Белое солнце пустыни В Autonomous Database в роли "Знайки" выступает сама БД на основе частоты выполнения тех или иных запросов: вы спрашивайте, что хотите, а я прикину, как эффективнее вам это выдавать. Подход имеет право на жизнь в текущих условиях развития Low-Code приложений и отношению к БД как к черному ящику со стороны разработчика. С третьей стороны рекомендации по индексированию Oracle выдает в своих ADDM отчетах уже очень давно (с 10 версии, AFAIR). Читать ADDM Report и применять (возможно, с модификациями) рекомендации - одна из забот ДБА (лучше - совместно с разработчиком). И снова: автоматическое создание индексов в триггерах тут совсем не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 16:19 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Во-первых, никак. Ну почему-же: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Теперь: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Другой вопрос зачем? SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 16:26 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
2 SY Браво, пойдёт!!! SY Другой вопрос зачем? SY. автор"коробочная" система а-ля 1С на СУБД Oracle, MSSQL, Informix итп с "индусским кодом", в ней есть такое безобразие как перегрузить таблицу (причём местные программёры её часто используют, нафига мне не понятно), фактически табличка выгружается в файл, убивается drop table со всеми атрибутами, а затем создаётся из своих метаданных, причем например индексы могут создаваться только как create index idx on table (f1, f2...) создать индекс DECODE(f1) уже не может, ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 16:48 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Тут вижу только одну проблему, если в коде CREATE TABLE и дальше сразу бизнес-код (INSERT/SELECT'ы), то вполне возможно, что в каких-то случаях пауза (ассинхронность) между CREATE TABLE и CREATE INDEX может оказаться критической. Как рабочий вариант, решение кривое. Как костыль и заплатка - ну а куда деваться ))) IMHO p.s. в новый год переписывал код конкарента от OeBS, вроде 3-и года работало, а сейчас столкнулись, что когда запуск конкарента совпал со сбором статистики, все сломалось колом (и почти неделю не работало, пока админы что-то на проде не подшаманили). В результате конкарент переписали. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 17:06 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Тут вижу только одну проблему, если в коде CREATE TABLE и дальше сразу бизнес-код (INSERT/SELECT'ы), то вполне возможно, что в каких-то случаях пауза (ассинхронность) между CREATE TABLE и CREATE INDEX может оказаться критической. ТС всегда может добавить DBMS_LOCK.SLEEP после DBMS_SCHEDULER.CREATE_JOB. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 17:42 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
А вообще, это задача и проблема фирмы разработчика прикладного софта. Разумеется, в том случае, если поддержка и сопровождении оплачены. Задача админа скорее диагностировать проблему и профессионально-технически объяснить ее фирме разработчику. При этом, вполне есть вероятность, что в прикладной системе уже даже есть нужный чекбокс "работать быстро", но его просто забыли нажать или просто не догадываются, что он существует IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2022, 18:32 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Ещё вопрос по ходу дела. Если в DDL триггере использовать DBMS_SCHEDULER.CREATE_JOB, то имени кого/какого юзера JOB будет выполняться?? (как это посмотреть??) Убрал права Код: plsql 1. 2. 3.
НО индекс всё равно создаётся... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 12:03 |
|
|
start [/forum/topic.php?fid=52&startmsg=40133942&tid=1879510]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
541ms |
get tp. blocked users: |
2ms |
others: | 353ms |
total: | 987ms |
0 / 0 |