|
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 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist, "create any index" для создания в своей схеме не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2022, 16:28 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
serpv "create any index" для создания в своей схеме не нужна. Понял. Остался вопрос от имени/правами кого запускается DBMS_SCHEDULER.CREATE_JOB - владельца схемы с триггером, юзера исполняющего команду DDL или кого-то другого? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2022, 08:59 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist serpv "create any index" для создания в своей схеме не нужна. Понял. Остался вопрос от имени/правами кого запускается DBMS_SCHEDULER.CREATE_JOB - владельца схемы с триггером, юзера исполняющего команду DDL или кого-то другого? Код: plsql 1. 2. 3.
И https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse002.htm#CHDEAHCA You can create a job in another schema by specifying schema.job_name. The creator of a job is, therefore, not necessarily the job owner. The job owner is the user in whose schema the job is created. Jobs are executed with the privileges of the schema in which the job is created. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2022, 09:20 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Asmodeus https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse002.htm#CHDEAHCA You can create a job in another schema by specifying schema.job_name. The creator of a job is, therefore, not necessarily the job owner. The job owner is the user in whose schema the job is created. Jobs are executed with the privileges of the schema in which the job is created. Отлично, спасибо. Продолжаю. Из под System (у которого grant create any trigger to system/MYUSER) пытаюсь создать DDL триггер в схеме MYUSER Код: plsql 1. 2. 3. 4.
получаю ошибку: авторORA-01031: привилегий недостаточно 01031. 00000 - "insufficient privileges" каких прав не хватает system или есть ограничение на создание ON DATABASE в юзеровских схемах?? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2022, 11:15 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist Из под System (у которого grant create any trigger to system/MYUSER) пытаюсь создать DDL триггер в схеме MYUSER Код: plsql 1. 2. 3. 4.
получаю ошибку: авторORA-01031: привилегий недостаточно 01031. 00000 - "insufficient privileges" каких прав не хватает system или есть ограничение на создание ON DATABASE в юзеровских схемах?? https://docs.oracle.com/cd/E18283_01/server.112/e17118/statements_7004.htm In addition to the preceding privileges, to create a trigger on DATABASE, you must have the ADMINISTER DATABASE TRIGGER system privilege. Данная привилегия должна быть не только у создателя триггера, но и у (будущего) владельца. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2022, 11:39 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Asmodeus PaulWist Из под System (у которого grant create any trigger to system/MYUSER) пытаюсь создать DDL триггер в схеме MYUSER Код: plsql 1. 2. 3. 4.
получаю ошибку: пропущено... каких прав не хватает system или есть ограничение на создание ON DATABASE в юзеровских схемах?? https://docs.oracle.com/cd/E18283_01/server.112/e17118/statements_7004.htm In addition to the preceding privileges, to create a trigger on DATABASE, you must have the ADMINISTER DATABASE TRIGGER system privilege. Данная привилегия должна быть не только у создателя триггера, но и у (будущего) владельца. ОК, догадывался, но найти в доке не смог. С меня пиво!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2022, 11:51 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Продолжу здесь. Вопрос: как определить/выбрать используемые индексы в запросах и соотвественно, найти те индексы, которые не используются?? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 09:14 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Смотреть планы запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 09:20 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
dmdmdm Смотреть планы запросов. Ммм, вы предлагаете парсить сотни текстов планов, что бы вынуть индексы или же есть другие средства для поиска содержащие статистику использования индексов?? PS Хочу узнать какие индексы используются, а какие висят "мёртвым" грузом и напрягают сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 09:28 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist есть другие средства для поиска содержащие статистику использования индексов?? Есть. Проявлю уважение к вашему интеллекту и не буду подсказывать слова для поиска. PaulWist Хочу узнать какие индексы используются, а какие висят "мёртвым" грузом и напрягают сервер. Для начала лучше понять, стоит ли игра свеч. Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 09:33 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
dmdmdm Для начала лучше понять, стоит ли игра свеч. Код: plsql 1. 2.
автор126118 Как по вашему, стоит игра или нет?? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 09:46 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist Продолжу здесь. Вопрос: как определить/выбрать используемые индексы в запросах и соотвественно, найти те индексы, которые не используются?? Технически - MONITORING USAGE для версий до 12.2 или включенный по умолчанию с версии 12.2 Index Usage Tracking DBA_INDEX_USAGE . Практически все равно приходится общаться с разработчиками и вдумчиво анализировать запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 09:59 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Asmodeus Технически - MONITORING USAGE для версий до 12.2 или включенный по умолчанию с версии 12.2 Index Usage Tracking DBA_INDEX_USAGE . Практически все равно приходится общаться с разработчиками и вдумчиво анализировать запросы. Спасибо за ссылку. Я подозревал, что всё плохо, но что так хе..во не ожидал Код: plsql 1. 2. 3.
О чём после этого говорить с программёрами ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 10:43 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist, А таблиц в пользовательских схемах сколько? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 11:01 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Asmodeus PaulWist, А таблиц в пользовательских схемах сколько? Не поверите - 64506 Причём PK/FK нет как "класса". Вот уж эти новомодные "течения" в программировании. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 11:25 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
PaulWist Asmodeus PaulWist, А таблиц в пользовательских схемах сколько? Не поверите - 64506 Опять же. Если я правильно понимаю, речь у нас идет о неком коробочном продукте с широкой функциональностью. Вполне возможно, что часть функций продукта просто не используется в вашей организации, соответственно, статистики использования объектов будут сильно искажены. Можно ради интереса посмотреть (если это 1С), сколько пустых таблицы у пользователей. У меня в одной из систем таких было больше половины. Но 1Сник сказал, что это нормально, т.к. система покупалась "на вырост" и большинство модулей пока не задействованы. Еще вариант: оракл, работая с небольшими таблицами (а в 1С их масса - нормализация и универсализация под разные движки), вполне может отдавать предпочтения полному просмотру таблиц вместо доступа через индексы. Таблица подрастает - индекс становится более актуальным. В любом случае, не стоит делать поспешных выводов и размахивать шашкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 11:39 |
|
DDL триггер
|
|||
---|---|---|---|
#18+
Asmodeus В среднем по два индекса на таблицу (один из которых, скорее всего, первичный ключ) - не так много, чтобы говорить о значительных накладных расходах. Это не 1С, но по архитектуре очень похоже. PK/FK - нет, от слова совсем. Система эксплуатируется уже 10 лет, я так понимаю, почти все таблицы, которые могли увеличиться уже подросли. Asmodeus В любом случае, не стоит делать поспешных выводов и размахивать шашкой. Вообщем ДА, ... будем наблюдать. Спасибо за тред. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2022, 12:09 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1879510]: |
0ms |
get settings: |
20ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
653ms |
get tp. blocked users: |
2ms |
others: | 282ms |
total: | 1027ms |
0 / 0 |