|
|
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
привет, всем Кто знает как эффективно дропнуть(или отключить?) все индексы по табличке, а потом после заливки данных восстановить их? Как это можно сделать без особых усилий, спасибо Oracle 10g ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2008, 17:35 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2008, 17:38 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
Спос. Все равно скрипт писать придется для удаления всех индексов, жаль, что нет команды типа ALTER TABLE SET ALL INDEXES UNUSABLE.... Кстати, если так Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2008, 17:48 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
IndexDropperСпос. Все равно скрипт писать придется для удаления всех индексов, жаль, что нет команды типа ALTER TABLE SET ALL INDEXES UNUSABLE.... Кстати, если так Код: plaintext Еще быстрее будет, если в параллельном режиме их создавать: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2008, 17:51 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
До 10.2.0.4 лучше грохать индексы вместо ребилда. см. Note 6455161 Higher CPU / Higher "cache buffer chains" latch gets / Higher "consistent gets" after truncate/Rebuild. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2008, 18:29 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
Версия,как раз 10.2.0.4 Дело в другом, сделал индексы UNUSABLE, теперь при инсертах ругается Код: plaintext Что делать то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2008, 11:39 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
IndexDropperВерсия,как раз 10.2.0.4 Дело в другом, сделал индексы UNUSABLE, теперь при инсертах ругается Код: plaintext Что делать то? Включить обратно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2008, 11:41 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
IndexDropperВерсия,как раз 10.2.0.4 Дело в другом, сделал индексы UNUSABLE, теперь при инсертах ругается Код: plaintext Что делать то? Почитать про параметр базы skip_unusable_indexes ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2008, 11:46 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
skip_unusable_indexes = true Дело в том, что это был уникальный индекс и на него это не действует, так что его анюзить не буду, пожалуй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2008, 11:51 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
стало интересно. а что будет, если все индексы изначально были организованны в отдельном tablespace и вот его и пересоздать. после этого дать комманду на пересоздание всех индексов. другой вариант того же вопроса: я хочу перенести все индексы на другой драйв. чем чревато? заранее спасибо. во ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2008, 16:10 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
>см. Note 6455161 Оппа. Так вот какая букашка нам жисть портит. Thnx, Timm. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2008, 17:45 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
IndexDropperskip_unusable_indexes = true Дело в том, что это был уникальный индекс и на него это не действует, так что его анюзить не буду, пожалуй. У меня схожая ситуация что и у автора. Но мой вопрос: почему ORA-01502 на удаление выскакивает? Я понимаю аргументацию орaкла на вставку, но удаление ведь уже никак уникалность не нарушит. Тогда почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 23:27 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikron, ораклу для поддержки уникальности нужен валидный индекс, соответственно при отключении индекса, оракл будет ругаться при изменении ключа уникальности, независимо какая DML операция проходит и даже, если этот констрейнт deferred (естественно, кроме вставки/удаления NULL'ов и апдейта на то же значение). Так что просто дропните/отключите констрейнт, все равно вам потом индекс заново ребилдить/строить: 1. если отключите или дропнете констрейнт и грохните индекс, то при включении констрейнта оракл сам построит индекс 2. если же сначала отдельно восстановите уникальный индекс, то при включении/создании констрейнта его даже валидировать не надо будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 01:08 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
xtender, Индекс перевожу в unusable, constraint запрещаю, делаю delete и ошибка остаётся. Я не понимаю смысл проверки уникальности при удалении. Он есть и я его не вижу или баг? Удалять constraint не хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 09:12 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronЯ не понимаю смысл проверки уникальности при удалении.Результат нарушения уникальности это ora-1. ora-1502 это запрет dml над unusable уникальным индексом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 10:12 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronconstraint запрещаюне понял? что значит запрещаю? покажите ddl таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 10:51 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronИндекс перевожу в unusable, constraint запрещаю, делаю delete и ошибка остаётся.что-то не так делаете: alter table ... disable constraint ... Код: 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. deferred/delete/insert Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 11:04 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
xtendermikronconstraint запрещаюне понял? что значит запрещаю? Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 11:06 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikron, покажите полный текст ошибки и детали: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 11:21 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
xtender, Код: 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. И вроде бы всё прибрано, но: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 12:23 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikron, какая версия оракла? выложите полный ддл таблицы. И попробуйте просто грохнуть индекс(не констрейнт). Вообще если индекс был создан автоматически при создании констрейнта, то при отключении констрейнта, у вас индекс сам должен был дропнуться, но тк у вас не удалился, значит создавали отдельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 13:56 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
xtender, Код: plaintext 1. 2. 3. 4. 5. У меня сейчас нет много времени ковырять ошибку. Вернусь позже к ней. Теоретический вопрос для понимания. mikronЯ не понимаю смысл проверки уникальности при удалении. Он есть и я его не вижу или баг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 15:36 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronТеоретический вопрос для понимания. mikronЯ не понимаю смысл проверки уникальности при удалении. Он есть и я его не вижу или баг? ... есть ли смысл учить пулю различать где свой, а где чужой? Или единый механизм надёжнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 15:51 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronТеоретический вопрос для понимания. mikronЯ не понимаю смысл проверки уникальности при удалении. Он есть и я его не вижу или баг? Ты зашорился в своей ситуации. Oracle понятия не имеет "живой" ли unusable индекс или нет. Вот тебе пример "дохлого" индекса Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 16:19 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
SY, А доп.таблица с внешним ключом в примере зачем? Без неё точно так же все будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 17:54 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
SYmikronТеоретический вопрос для понимания. пропущено... Ты зашорился в своей ситуации. Oracle понятия не имеет "живой" ли unusable индекс или нет. Вот тебе пример "дохлого" индекса Я вроде чётко вопрос обрисовал, но попробуем ещё раз. Я вижу ошибку "ORA-01502", я понимаю что она значит. Я не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 22:43 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronЯ не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении? Если нет PK/UK + SKIP_UNUSABLE_INDEXES то ему этот индекс и при INSERT и UPDATE и DELETE побоку. А если есть constraint PK/UK то могут быть таблицы дети a при DELETE (или UPDATE) проверка таблиц детей осуществляется через PK/UK индекс папаши. В принципе Oracle мог бы проверить есть ли таблицы дети и если нет то разрешать DELETE при SKIP_UNUSABLE_INDEXES, enabled PK/UK и его unusable индексе но зачем так заморачиваться? SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 00:07 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
SYА если есть constraint PK/UK то могут быть таблицы дети a при DELETE (или UPDATE) проверка таблиц детей осуществляется через PK/UK индекс папаши. SY. "Дети" это referencing tables? Не логично: для проверки констраинтов "детей" при удалении в "родителе" индекс "родителя" не нужен. Нужен индекс на таблицах "детей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 11:00 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronЯ не понимаю почему ораклу естъ дело до этого индекса. Зачем ему этот индекс на удалении?xtenderораклу для поддержки уникальности нужен валидный индекс, соответственно при отключении индекса, оракл будет ругаться при изменении ключа уникальности, независимо какая DML операция проходит и даже, если этот констрейнт deferred (естественно, кроме вставки/удаления NULL'ов и апдейта на то же значение). Еще раз: Для проверки уникальности оракл пользуется связанным индексом. Соответственно, для поддержки уникальности оракл должен быть уверен, что все его изменения проходят без ошибок, т.е индекс актуален. Простой пример: Код: 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. зы. Ну и кроме того, нет смысла усложнять код отдельными проверками при разных операциях (insert/update/merge...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 19:51 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
xtenderЕще раз: Для проверки уникальности оракл пользуется связанным индексом. Соответственно, для поддержки уникальности оракл должен быть уверен, что все его изменения проходят без ошибок, т.е индекс актуален. Причинноследственная связь нарушена. проходят без ошибок != индекс актуален. И ваш пример тому подтверждение: оракл различает что меняем. Вы можете привести пример удаления, который бы нарушил unique constraint? xtenderзы. Ну и кроме того, нет смысла усложнять код отдельными проверками при разных операциях (insert/update/merge...) IMHO проверки на вставку и удаление очень разные. Об усложнении кода тут вряд ли стоит рассчитывать. Конкуренты Оракла не ленятся и заработывют бонусы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 20:19 |
|
||
|
Удалить быстро индексы и построить заново
|
|||
|---|---|---|---|
|
#18+
mikronпроходят без ошибок != индекс актуален.будет пример в контексте сабжа? По-моему, вполне очевидно, что если индекс не валиден, значит нельзя использовать его для проверок. mikronИ ваш пример тому подтверждение: оракл различает что меняем.У меня сильное подозрение, что вы не поняли пример. Можете объяснить своими словами, что в примере происходит? mikronКонкуренты Оракла не ленятся и заработывют бонусы :) Какие именно конкуренты? Postgres и DB2 не позволяют отключать индексы, их можно только дропнуть вместе с констрейнтом. Чтобы заработали бонусы, они должны хотя бы научиться временно их отключать. А в MS SQL отключение индекса, автоматически отключает связанные с ним констрейнты, хорошо хоть выводит, что именно наотключал. Так про что речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 00:29 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1883014]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 517ms |

| 0 / 0 |
