powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink datafiles
25 сообщений из 48, страница 1 из 2
shrink datafiles
    #39391900
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,
Ситуация такая: имеется ~300 пользовательских схем импортированных в Oracle в табличное пространство users
у которого 50 датафайлов на диске.
Приблизительно 25% табличного пространства свободно.
Мне необходимо сжать датафайлы чтобы высвободить хотябы 10% как свободное на диске.
Уменьшить размер такой командой (alter database datafile файл resize размерM;) я не могу поскольку очень сильно фрагментировано содержимое табличного пространства.
Я вот тут http://www.dba-oracle.com/t_reclaiming_disk_space.htm
прочитал что можно сделать (alter table xxx shrink)
Но у меня пользовательских схем 300 и в каждой по 300 таблиц не считая индексы

Это поможет высвободить вершки датафайлов ?

Что можете посоветовать ?
...
Рейтинг: 0 / 0
shrink datafiles
    #39391929
veep_from_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xserge,

Можно затеять простую дефрагментацию
создать временное TS туда перекинуть все таблицы индексы и лобы, затем обратно
Селекты ниже помогут сгенерировать команды

select 'alter table '||owner||'.'||table_name||' move tablespace TEMP_TS;' from dba_tables where tablespace_name='DATA01

select 'alter index '||owner||'.'||index_name||' rebuild tablespace HT_INDX;' from dba_indexes where tablespace_name=DATA01

select 'alter table '||owner||'.'||table_name||' move lob('||column_name||') store as (tablespace DATA01);' from dba_lobs where tablespace_name='TEMP_TS'

потом проребилдить индексы

select 'alter index '||owner||'.'||index_name||' rebuild;' from dba_indexes where status!='VALID'
...
Рейтинг: 0 / 0
shrink datafiles
    #39391932
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xsergeЭто поможет высвободить вершки датафайлов ?
Тема обсуждалась неоднократно, можно поискать. Кратко: заводишь доп. TS и переносишь таблицы туда. Если файл освободился, то при переносе назад таблицы начнут располагаться с начала файла. Плохо то, что у тебя одно TS, соответственно, каждая таблица, скорее всего, размазана по куче файлов.
...
Рейтинг: 0 / 0
shrink datafiles
    #39391933
veep_in_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xsergeА нуда забыл, можно затем табличное пр-во шринкануть или убить и создать новое. или можно после переноса во временное там и поселится.
...
Рейтинг: 0 / 0
shrink datafiles
    #39391951
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том что там 50 датафайлов по 30 гигов каждый, а свободного места на диске 8 гигов. Я не смогу перенести всё в новое табличное пространство.

Подскажите пожалуйста, как узнать какие таблицы и индексы, каких схем лежат в конкретном датафайле ?
...
Рейтинг: 0 / 0
shrink datafiles
    #39391956
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xsergeкак узнать какие таблицы и индексы, каких схем лежат в конкретном датафайле ?RTFM Schema Objects Space Usage Data Dictionary Views (FAQ)
...
Рейтинг: 0 / 0
shrink datafiles
    #39391989
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо
...
Рейтинг: 0 / 0
shrink datafiles
    #39392563
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tru55xsergeЭто поможет высвободить вершки датафайлов ?
Тема обсуждалась неоднократно, можно поискать. Кратко: заводишь доп. TS и переносишь таблицы туда. Если файл освободился, то при переносе назад таблицы начнут располагаться с начала файла. Плохо то, что у тебя одно TS, соответственно, каждая таблица, скорее всего, размазана по куче файлов. Проще даже не тащить все это назад а дропнуть исходное ТП, а новое переименовать в старое (если Оракл не слишком старый, переименование ТП появилось в 9i или 10g). Или даже забить и оставить в непереименованном ТП.

Но это не случай ТС, у него места на второе ТП нет. Хотя как вариант, можно использовать сжатие. Стандартное сжатие индексов и basic data compression дополнительных денег не стОит, хотя надо просчитывать, какой индекс стОит сжимать и на сколько полей, а какой лучше не надо. Денег стоит Advanced Compression Option (в дополнение к Enterprise Ed.), которое дает advanced data compression для данных таблиц и advanced index compression, которое интеллектуально само выбирает, какой индекс и как именно сжимать и вроде бы даже позволяет сжимать уникальный индекс из 1-го поля (правда, мне это не удалось воспроизвести, возможно, я не все детали уловил, да и документировано это фрагментарно пока). Это описывал, как в 12с.

В случае, если соответствующее окно простоя допустимо, то можно проэкспортировать всё из ТП (быстрее datapump-ом, чем старым экспортом), удалить из ТП все объекты, урезать датафайлы и проимпортировать обратно.

Возможны и еще варианты...
...
Рейтинг: 0 / 0
shrink datafiles
    #39392572
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xsergeДело в том что там 50 датафайлов по 30 гигов каждый, а свободного места на диске 8 гигов.
Картина Репина "Приплыли". Тогда варианты:

1) закупать и добавлять сторедж,
2) экспорт-импорт с запланированным временем простоя,
3) приткнуть сбоку временный сторедж (например, USB-диск, отдавая себе отчет в рисках). На нем завести 2-ое ТП и переносить туда, а потом 1-ое ТП удалить и в оффлайне переносить обратно на постоянный сторедж 2-ое ТП.
...
Рейтинг: 0 / 0
shrink datafiles
    #39392621
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все тоже самое (move, rebuild) можно выполнить в том же ТП
Причем, учитывая что с 11 (R2?) перевод индекса в UNUSABLE освобождает занимаемое им место, есть смысл сначала перевести все индексы в UNUSABLE, а затем выполнять MOVE и REBUILD по всем таблицам и их индексам

По времени -- разница, скорее всего, будет только в написании скрипта (учесть лобы, [под]секции, IOT), возможно, правильный скрипт может сформировать EM
По генерируемым логам -- практически одинаково
По результату -- возможно, несколько хуже. Могут в начале файлов остаться дыры, если таблички оттуда мувились последними. Или остатки в конце файлов, если мувились большие таблички в числе первых, а дырок в начале файла было недостаточно. Тут вопрос выбора порядка -- не совсем тривиальная задачка, но вполне решаемая. Да и освобождение места от UNUSABLE индексов здесь очень помогает
Но не надо места (которого нет на сервере) для дампа через expdp, а тащить exp/imp по сети полтерабайта в каждую сторону (75% * 50 * 30 / 2 [грубо прикидываем индексы занимают как таблица])
...
Рейтинг: 0 / 0
shrink datafiles
    #39392670
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

Вячеслав ЛюбомудровВсе тоже самое (move, rebuild) можно выполнить в том же ТП
+1


Вячеслав Любомудров с 11 (R2?) перевод индекса в UNUSABLE освобождает занимаемое им место
Не знал - не поделитесь ссылкой где читать?
...
Рейтинг: 0 / 0
shrink datafiles
    #39392681
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
shrink datafiles
    #39392703
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровКак обычно
http://docs.oracle.com/cd/E11882_01/server.112/e25494/indexes.htm#ADMIN11711

Так изящно в Concepts меня еще не посылали))))

Приведу здесь цитату, для ленивых:
автор Oracle Database Concepts
Indexes and Index-Organized Tables - Index Characteristics:


Usability

Indexes are usable (default) or unusable. An unusable index is not maintained by DML operations and is ignored by the optimizer. An unusable index can improve the performance of bulk loads. Instead of dropping an index and later re-creating it, you can make the index unusable and then rebuild it. Unusable indexes and index partitions do not consume space. When you make a usable index unusable, the database drops its index segment.
...
Рейтинг: 0 / 0
shrink datafiles
    #39392716
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то в Administrator's GuideManaging Indexes
Understand When to Use Unusable or Invisible Indexes...
Beginning with Oracle Database 11g Release 2, when you make an existing index unusable, its index segment is dropped.
...
...
Рейтинг: 0 / 0
shrink datafiles
    #39392729
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
По вашей ссылке у меня открывается на месте See also: Oracle Database Concepts - перед разделом "Create Indexes After Inserting Table Data". А указанная цитата где-то на 4 экрана ниже - поэтому и не дошел. Но в Concepts тоже сноска есть)
...
Рейтинг: 0 / 0
shrink datafiles
    #39392738
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Immunitet,

это муторно лезть в исходный код страницы, искать ИД...

попробуй в ссылке замени ид на ADMIN13280
...
Рейтинг: 0 / 0
shrink datafiles
    #39392740
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это похоже, Опера при прокручивании страницы меняет якорь на ближайший
Я покрутил, да и скопировал с адресной строки :-(
...
Рейтинг: 0 / 0
shrink datafiles
    #39392928
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, я ответ на свой вопрос получил))) Так что не в претензии)))
...
Рейтинг: 0 / 0
shrink datafiles
    #39392931
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заодно и концепции освежил
...
Рейтинг: 0 / 0
shrink datafiles
    #39392941
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
Главное, чтобы база не была 24*7 и не STD
...
Рейтинг: 0 / 0
shrink datafiles
    #39392956
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, про 24/7 еще понятно (тут, конечно, спасет отдельное ТП или exp[dp]/imp[dp]), но чем STD не угодил?
...
Рейтинг: 0 / 0
shrink datafiles
    #39392972
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров, да, отличный вариант. Маленький минус - в табличном пространстве останется много дыр. Особенно если учесть, что файлов 50 (наверняка все они создавались не одновременно, а по мере заполнения предыдущих, а значит, в начале у них всех будут экстенты самых разных объектов) и большое число объектов. У постоянно растущих объектов экстенты будут как в начале файлов данных, так и в конце.
Внутри ТП место, конечно, освободится, а в файловой системе можно будет освободить за счет уменьшения размера датафайлов, весьма вероятно, очень мало. Или делать это многими итерациями, что увеличивает генерацию логов и затраты времени.

Насчет того, что для дампа места нет - обычно все же базу данных располагают не на системном разделе и не на разделе с хоумами пользователей. Там место не факт, что заканчивается, и дамп туда или на временный носитель вполне можно направить. Кроме того, в принципе, можно задействовать компрессию для дампа (оракловую или на уровне файловой системы (zfs,ntfs)).
...
Рейтинг: 0 / 0
shrink datafiles
    #39392979
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
В STD не работает ONLINE.
Т.е. если у человека 24/7 на STD, я бы предложил ( если нет триггеров, конечно) смотреть в сторону ALTER TABLE SHRINK SPACE
...
Рейтинг: 0 / 0
shrink datafiles
    #39392993
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nobody1111Вячеслав Любомудров, да, отличный вариант. Маленький минус - в табличном пространстве останется много дыр. Особенно если учесть, что файлов 50 (наверняка все они создавались не одновременно, а по мере заполнения предыдущих, а значит, в начале у них всех будут экстенты самых разных объектов) и большое число объектов. У постоянно растущих объектов экстенты будут как в начале файлов данных, так и в конце.
Внутри ТП место, конечно, освободится, а в файловой системе можно будет освободить за счет уменьшения размера датафайлов, весьма вероятно, очень мало. Или делать это многими итерациями, что увеличивает генерацию логов и затраты времени.У тебя есть такой опыт или ты просто так думаешь?
Сразу скажу -- у меня есть. Причем еще до того, как UNUSABLE стал освобождать место. В крайнем случае одна-две таблички переносятся повторно. Я ведь подчеркнул -- главное правильно выбрать порядок, это не очень сложно, особенно когда таблиц много
Nobody1111Насчет того, что для дампа места нет - обычно все же базу данных располагают не на системном разделе и не на разделе с хоумами пользователей. Там место не факт, что заканчивается, и дамп туда или на временный носитель вполне можно направить. Кроме того, в принципе, можно задействовать компрессию для дампа (оракловую или на уровне файловой системы (zfs,ntfs)).Полтерабайта?
У него 8 гиг свободного места под файлы БД. Не думаю, что если бы у него где-то на системном разделе завалялось полтерабайта он бы так переживал.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393013
Taciturn12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В идеале конечно надо полностью переносить в другое ТС, это намного проще и позволит освободить все свободное место. Если такой возможности нет совершенно то остается перенос внутри одного пространства. Во втором случае все-таки стоит на время проведения этих работ выкинуть одну две таблички в другое пространство, располагающиеся в начале файлов, тогда последующие мувы, шринки и ребилды преимущественно будут располагаться вначале файлов. Правда таким способом освободить все свободное место не получится (по крайней мере у меня не получалось, дырки оставались), но процент высвобожденного пространства очень высок.
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink datafiles
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]