Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
02.10.2019, 17:55
|
|||
---|---|---|---|
|
|||
Ужатие тейблспейса. |
|||
#18+
Здравствуйте. База 11.2.0.3 Для уменьшения базы из неё были убраны картинки. Необходимо ужать тейблспейс с данными. Стал делать dbms_redefinition, у него есть некоторые недостатки, переносится только один объект, а файл может вообще не ужаться. Можно ли без остановки базы перенести объекты на новый тейблспейс и удалить старый? Правильно ли я понимаю, что можно взять объект у которого максимальный INITIAL_EXTENT, перенести этот объект и появится возможность немного ужать тейблспейс на диске? Какие варианты могут быть по решению этой задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.10.2019, 18:17
|
|||
---|---|---|---|
Ужатие тейблспейса. |
|||
#18+
Создаёшь новый TBS, там новые сегменты и туда уже переносишь с помощью online redefiniton, когда завершишь удалишь старый TBS, переименуешь новый в старый. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.10.2019, 18:26
|
|||
---|---|---|---|
|
|||
Ужатие тейблспейса. |
|||
#18+
GorgeousПравильно ли я понимаю, что можно взять объект у которого максимальный INITIAL_EXTENT, перенести этот объект и появится возможность немного ужать тейблспейс на диске? Примерно так, допиливайте под свои потребности: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
По итогу можно делать alter database datafile ... resize <новый размер>; Вычисление размера, до которого можно ресайзить файл, тоже делается легко, но прям сейчас под рукой готового скрипта нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 08:16
|
|||
---|---|---|---|
Ужатие тейблспейса. |
|||
#18+
Vivat!SanСоздаёшь новый TBS, Если места на диске мало, то это не лучший вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 11:14
|
|||
---|---|---|---|
|
|||
Ужатие тейблспейса. |
|||
#18+
andrey_anonymousВычисление размера, до которого можно ресайзить файл, тоже делается легко, но прям сейчас под рукой готового скрипта нет. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 11:44
|
|||
---|---|---|---|
|
|||
Ужатие тейблспейса. |
|||
#18+
andrey_anonymous Код: plsql 1.
Для 11.2.0.3 alter table move online не взлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 13:07
|
|||
---|---|---|---|
Ужатие тейблспейса. |
|||
#18+
AlionaЕсли места на диске мало, то это не лучший вариант. А если подумать, то места в случае одного TBS нужно ровно столько же, при этому требуемого ты не достигнешь, думаю не стоит пояснять почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 13:49
|
|||
---|---|---|---|
Ужатие тейблспейса. |
|||
#18+
Vivat!Sanместа в случае одного TBS нужно ровно столько жеРазница в том, что задача перенести не объекты, а перенести свободное место в конец датафайлов. В ужимаемом TS это свободное место как раз и есть. Другой вопрос, что в худшем случае внутри TS требуется этого свободного места в объеме более максимального сегмента (после move). А экстенты могут разложиться так, что остаток никак не освободить. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 14:08
|
|||
---|---|---|---|
Ужатие тейблспейса. |
|||
#18+
-2-Разница в том, что задача перенести не объекты, а перенести свободное место в конец датафайлов. В ужимаемом TS это свободное место как раз и есть. Другой вопрос, что в худшем случае внутри TS требуется этого свободного места в объеме более максимального сегмента (после move). А экстенты могут разложиться так, что остаток никак не освободить. Это и имел в виду - для усечения TBS нужно сдвинуть HWM вниз, а чтобы не потреблять новое место на FS нужно обходиться свободным местом в рамках HWM, занимая уже выделенные свободные экстенты, задачи друг другу противоречат. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 14:25
|
|||
---|---|---|---|
|
|||
Ужатие тейблспейса. |
|||
#18+
maglevdeviceandrey_anonymous Код: plsql 1.
Для 11.2.0.3 alter table move online не взлетит. Перечитайте: andrey_anonymousПримерно так, допиливайте под свои потребности Это просто один из скриптов, которым я пользовался для решения задачи ужатия табличного пространства. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 15:06
|
|||
---|---|---|---|
Ужатие тейблспейса. |
|||
#18+
andrey_anonymousПеречитайте: "Для уменьшения базы из неё были убраны картинки". Скорее всего "картинки" хранились в LOB, тек-что переливание самих таблиц есть переливание из пустого в порожнее :). SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 16:04
|
|||
---|---|---|---|
|
|||
Ужатие тейблспейса. |
|||
#18+
SYandrey_anonymousПеречитайте: "Для уменьшения базы из неё были убраны картинки". Скорее всего "картинки" хранились в LOB, тек-что переливание самих таблиц есть переливание из пустого в порожнее :). Не имеет значения. Суть в том, что отбираем экстенты в порядке от хвоста файла к началу, для экстента определяем сегмент, в зависимости от типа сегмента генерируем команду на его, сегмента, релокацию. При некоторой удаче (или при сдвиге сегментов в отдельное табличное пространство) это освобождает место в хвосте файла, что позволяет выполнить resize. Если заранее известен сегмент, содержащий a lot of wasted space, то такой сегмент следует реорганизовать до начала операции "режем хвост табличному пространству" ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 16:41
|
|||
---|---|---|---|
Ужатие тейблспейса. |
|||
#18+
andrey_anonymousНе имеет значения. Суть в том, что отбираем экстенты в порядке от хвоста файла к началу, для экстента определяем сегмент, в зависимости от типа сегмента генерируем команду на его, сегмента, релокацию. Скрипт который ты привел забуксует как только в хвосте файла окажется LOBSEGMENT/LOB PARTITION/LOBINDEX. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.10.2019, 17:18
|
|||
---|---|---|---|
|
|||
Ужатие тейблспейса. |
|||
#18+
SYandrey_anonymousНе имеет значения. Суть в том, что отбираем экстенты в порядке от хвоста файла к началу, для экстента определяем сегмент, в зависимости от типа сегмента генерируем команду на его, сегмента, релокацию. Скрипт который ты привел забуксует как только в хвосте файла окажется LOBSEGMENT/LOB PARTITION/LOBINDEX. Еще раз, последний: скрипт является частным решением, был набросан под конкретную задачу и сохранился только благодаря скопидомству Notepad++. Скрипт может быть взят за основу и доработан по месту или выброшен в корзину по усмотрению ТС. Скрипт может быть доработан до общего решения любым желающим. Мой вариант подобного универсального скрипта был благополучно выброшен в корзинку, как только в нем отпала необходимость, ибо за несколько минут пишется на коленке :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=52&mobile=1&tid=1882020]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 477ms |
0 / 0 |