|
|
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
В клиентском приложении есть функция: построение индекса для таблиц. Можно "просто строить" или "удалять и строить заново". Можно также выбрать сразу несколько таблиц. Беда в том, что выбрав все таблицы, получаю ошибку "не хватает памяти для данной операции". 1. Как бы замутить на уровне процедуры сию работу? 2. Насколько долгое это переиндексирование (простое/полное). Дело в том, что на клиенте эта команда отрабатывается быстро, а как на сервере потом это проходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 10:41 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
Для чего это нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 10:50 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
Сам бы хотел знать! База начинает тормозить, звонишь разработчику, а у него один ответ: "постройте индексы..." Вроде чуть помогает, потом забываешь до след раза. Может, подскажете, почему она, сволочь, тормозит? :) Сегодня утром пришёл - куча инвалидов, загрузка сервера 90-100%, все висят, орут!.. Перекомпилировал, всё равно "осадок остался", жалуются на скорость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:11 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
Ночью запусти execute dbms_utility.analyze_schema('ИМЯ_СХЕМЫ','COMPUTE'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:16 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
А что это в итоге даст? Лог какой-нибудь или само все поправит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:23 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
Не советую делать анализ схемы. Можно сделать эксорт/импорт полный ну или схемы отдельной. Используя опцию сжатия экстентов - тогда у тебя каждая таблица сядет в один экстент и индексы пересторятся. В таком случае как у тебя перестоение всех индексов по одному - это не правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:26 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
БЛИН! Опять инвалиды появились! Правда уже меньше...о горе мне грешнику... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 11:29 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
-- Hi Dark monk; -- попробуй переиндексировать этим скриптом. declare vDrop varchar(32000); vSQL varchar(32000); vUNIQUE varchar(8); begin for i in (select ut.table_name, ai.index_name from user_tables ut , all_ind_columns ai where ai.table_name=ut.table_name /* and ut.table_name='MYTABLE'*/) loop vDrop:='DROP INDEX '||i.index_name; select replace(UNIQUENESS, 'NONUNIQUE', ' ') into vUNIQUE from all_indexes where index_name=i.index_name; vSQL:='CREATE '||vUNIQUE||' INDEX ON '||i.table_name||' ( '; for j in (select ai.index_name, ai.column_name, ai.descend from all_ind_columns ai where ai.table_name=i.table_name) loop vSQL:=vSQL||j.column_name||' '||j.descend||', '; end loop; vSQL:=substr(vSQL,1,length(vSQL)-2); vSQL:=vSQL||')'; --dbms_output.put_line(vDrop); --dbms_output.put_line(vSQL); EXECUTE immediate vDrop; EXECUTE immediate vSQL; end loop; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 12:24 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
>Не советую делать анализ схемы. > >Можно сделать эксорт/импорт полный ну или схемы отдельной. >Используя опцию сжатия экстентов - тогда у тебя каждая таблица сядет в один экстент и индексы пересторятся. >В таком случае как у тебя перестоение всех индексов по одному - это не правильно. статистики собирать нужно, но способы могут быть разными в зависимости от обстоятельств... автору топика, какая версия оракл? какой объем схемы? почитайте о пакете dbms_stats, оракл рекомендует использовать его вместо "dbms_utility.analyze_schema". вот пример: Код: plaintext 1. в этом примере используется таблица STATS, кот. вам надо будет создать... по поводу вашего первого вопроса: я использую одну "полу-универсальную" процедуру (листинг см. ниже), но для вашей задачи - можно написать что-то попроще... Код: 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. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. пример использования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. небольшие пояснения: для удобства я использовал след. шаблоны: ?o - objects (O)wner ?n - (N)ame of the object ?t - (T)ype of the object ?i - objects (I)d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2003, 12:29 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
Ребята, всем спасибо! Причина тормозов оказалась, как-бы без мата сказать, на поверхности. В клиенте были две кнопки: "построить индексы", "удалить индексы" Чел, который прибежал нас спасать, спокойненько так говорит: "а ты не знал, что-ли, в этой версии кнопочки перепутаны..." У меня, опять сложно не матюгнуться, челюсть вывалилась! Я, как дурак, аккуратно стёр индексы, ясный пень всё завязло. Всё сил, нет больше, до встречи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 11:02 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
))))))))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 12:20 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
:D :D :D :D :D :D :D :D :D :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 14:07 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
В шею гнать таких разработчиков, блин. С ораклом как с фоксом работают, едримать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 14:22 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
> В шею гнать таких разработчиков, блин. С ораклом как с фоксом работают, едримать... ЗОЛОТЫЕ СЛОВА!!! выгравирую на золотой кувалде и буду бить ею таких разроботчиков по яйцамЪ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2003, 16:04 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
Странная логика разработчиков такие вещи вообще в приложения загонять на кнопочки? Если надо что-то делать, то повесь джоб и не мудри (это к разработчикам). To Darkmonk: Я на твоем месте, позвонил был разработчикам... пришел бы к ним ... короче наладил связь и потом бы наорал бы как следует цензурными и нецензурными выражениями, далее потребовал письменные объяснения этой путанницы, потребовал исправление клиентского приложения в этот же день и может быть занялся расчетом материального ущерба. Если продукт недорогой и от него легко отказаться, то наверное и это стоило бы сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2003, 16:59 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
на клиенте ваще таких кнопочек не должно быть..... не ихо это дело.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2003, 17:05 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
А если еще по делу, то полезно при ребилде индексов переносить их из одного табличного пространства в другое. (у меня таких четыре из которых одно все время пустует, а три остальных циклически меняются своим содержимым). Параметр INITIAL делать как 50% от занимаемого индексом места (смотри dba_extents). Параметр NEXT делать как 25% от занимаемого индексом места. Тогда будет мало экстентов. Для увеличения скорости можно задавать опцию parallel (от 2 до 4). Если больше - будет много экстентов и не качественное заполнение простарнства внутри них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 14:29 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
>Не советую делать анализ схемы. >Можно сделать эксорт/импорт полный ну или схемы отдельной. Используя >опцию сжатия экстентов - тогда у тебя каждая таблица сядет в один экстент и >индексы пересторятся. В таком случае как у тебя перестоение всех индексов >по одному - это не правильно. более страшной опции чем это "сжимание" экстентов при экспорте и придумать сложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 14:51 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
"Страшной" она станет при импорте, имхо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 15:34 |
|
||
|
Как сделать переиндексацию всех таблиц?
|
|||
|---|---|---|---|
|
#18+
более страшной опции чем это "сжимание" экстентов при экспорте и придумать сложно _____________________________ Точно точно :) А то сожмет при экспорте в екстент размером скажем в 1 Гиг, а при импорте скажет Ну извини батенька, не могу выделить неразрывную область такого размера :))... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 15:37 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32099442&tid=1991506]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 388ms |

| 0 / 0 |
