Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink datafiles / 25 сообщений из 48, страница 1 из 2
26.01.2017, 11:23
    #39391900
xserge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
Здравствуйте,
Ситуация такая: имеется ~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
26.01.2017, 11:52
    #39391929
veep_from_office
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
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
26.01.2017, 11:54
    #39391932
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
xsergeЭто поможет высвободить вершки датафайлов ?
Тема обсуждалась неоднократно, можно поискать. Кратко: заводишь доп. TS и переносишь таблицы туда. Если файл освободился, то при переносе назад таблицы начнут располагаться с начала файла. Плохо то, что у тебя одно TS, соответственно, каждая таблица, скорее всего, размазана по куче файлов.
...
Рейтинг: 0 / 0
26.01.2017, 11:54
    #39391933
veep_in_office
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
xsergeА нуда забыл, можно затем табличное пр-во шринкануть или убить и создать новое. или можно после переноса во временное там и поселится.
...
Рейтинг: 0 / 0
26.01.2017, 12:06
    #39391951
xserge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
Дело в том что там 50 датафайлов по 30 гигов каждый, а свободного места на диске 8 гигов. Я не смогу перенести всё в новое табличное пространство.

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

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

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

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

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

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

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


Вячеслав Любомудров с 11 (R2?) перевод индекса в UNUSABLE освобождает занимаемое им место
Не знал - не поделитесь ссылкой где читать?
...
Рейтинг: 0 / 0
27.01.2017, 09:12
    #39392681
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
...
Рейтинг: 0 / 0
27.01.2017, 09:42
    #39392703
Immunitet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
Вячеслав ЛюбомудровКак обычно
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
27.01.2017, 09:55
    #39392716
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
Вообще-то в 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
27.01.2017, 10:02
    #39392729
Immunitet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
Вячеслав Любомудров,
По вашей ссылке у меня открывается на месте See also: Oracle Database Concepts - перед разделом "Create Indexes After Inserting Table Data". А указанная цитата где-то на 4 экрана ниже - поэтому и не дошел. Но в Concepts тоже сноска есть)
...
Рейтинг: 0 / 0
27.01.2017, 10:07
    #39392738
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
shrink datafiles
Immunitet,

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

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

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


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