|
|
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Ситуация такая: имеется ~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 таблиц не считая индексы Это поможет высвободить вершки датафайлов ? Что можете посоветовать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 11:23 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
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' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 11:52 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
xsergeЭто поможет высвободить вершки датафайлов ? Тема обсуждалась неоднократно, можно поискать. Кратко: заводишь доп. TS и переносишь таблицы туда. Если файл освободился, то при переносе назад таблицы начнут располагаться с начала файла. Плохо то, что у тебя одно TS, соответственно, каждая таблица, скорее всего, размазана по куче файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 11:54 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
xsergeА нуда забыл, можно затем табличное пр-во шринкануть или убить и создать новое. или можно после переноса во временное там и поселится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 11:54 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Дело в том что там 50 датафайлов по 30 гигов каждый, а свободного места на диске 8 гигов. Я не смогу перенести всё в новое табличное пространство. Подскажите пожалуйста, как узнать какие таблицы и индексы, каких схем лежат в конкретном датафайле ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 12:06 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
xsergeкак узнать какие таблицы и индексы, каких схем лежат в конкретном датафайле ?RTFM Schema Objects Space Usage Data Dictionary Views (FAQ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 12:14 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
tru55xsergeЭто поможет высвободить вершки датафайлов ? Тема обсуждалась неоднократно, можно поискать. Кратко: заводишь доп. TS и переносишь таблицы туда. Если файл освободился, то при переносе назад таблицы начнут располагаться с начала файла. Плохо то, что у тебя одно TS, соответственно, каждая таблица, скорее всего, размазана по куче файлов. Проще даже не тащить все это назад а дропнуть исходное ТП, а новое переименовать в старое (если Оракл не слишком старый, переименование ТП появилось в 9i или 10g). Или даже забить и оставить в непереименованном ТП. Но это не случай ТС, у него места на второе ТП нет. Хотя как вариант, можно использовать сжатие. Стандартное сжатие индексов и basic data compression дополнительных денег не стОит, хотя надо просчитывать, какой индекс стОит сжимать и на сколько полей, а какой лучше не надо. Денег стоит Advanced Compression Option (в дополнение к Enterprise Ed.), которое дает advanced data compression для данных таблиц и advanced index compression, которое интеллектуально само выбирает, какой индекс и как именно сжимать и вроде бы даже позволяет сжимать уникальный индекс из 1-го поля (правда, мне это не удалось воспроизвести, возможно, я не все детали уловил, да и документировано это фрагментарно пока). Это описывал, как в 12с. В случае, если соответствующее окно простоя допустимо, то можно проэкспортировать всё из ТП (быстрее datapump-ом, чем старым экспортом), удалить из ТП все объекты, урезать датафайлы и проимпортировать обратно. Возможны и еще варианты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 23:10 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
xsergeДело в том что там 50 датафайлов по 30 гигов каждый, а свободного места на диске 8 гигов. Картина Репина "Приплыли". Тогда варианты: 1) закупать и добавлять сторедж, 2) экспорт-импорт с запланированным временем простоя, 3) приткнуть сбоку временный сторедж (например, USB-диск, отдавая себе отчет в рисках). На нем завести 2-ое ТП и переносить туда, а потом 1-ое ТП удалить и в оффлайне переносить обратно на постоянный сторедж 2-ое ТП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2017, 23:24 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Все тоже самое (move, rebuild) можно выполнить в том же ТП Причем, учитывая что с 11 (R2?) перевод индекса в UNUSABLE освобождает занимаемое им место, есть смысл сначала перевести все индексы в UNUSABLE, а затем выполнять MOVE и REBUILD по всем таблицам и их индексам По времени -- разница, скорее всего, будет только в написании скрипта (учесть лобы, [под]секции, IOT), возможно, правильный скрипт может сформировать EM По генерируемым логам -- практически одинаково По результату -- возможно, несколько хуже. Могут в начале файлов остаться дыры, если таблички оттуда мувились последними. Или остатки в конце файлов, если мувились большие таблички в числе первых, а дырок в начале файла было недостаточно. Тут вопрос выбора порядка -- не совсем тривиальная задачка, но вполне решаемая. Да и освобождение места от UNUSABLE индексов здесь очень помогает Но не надо места (которого нет на сервере) для дампа через expdp, а тащить exp/imp по сети полтерабайта в каждую сторону (75% * 50 * 30 / 2 [грубо прикидываем индексы занимают как таблица]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 02:41 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Вячеслав ЛюбомудровВсе тоже самое (move, rebuild) можно выполнить в том же ТП +1 Вячеслав Любомудров с 11 (R2?) перевод индекса в UNUSABLE освобождает занимаемое им место Не знал - не поделитесь ссылкой где читать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 08:57 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровКак обычно 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 09:42 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Вообще-то в 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. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 09:55 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, По вашей ссылке у меня открывается на месте See also: Oracle Database Concepts - перед разделом "Create Indexes After Inserting Table Data". А указанная цитата где-то на 4 экрана ниже - поэтому и не дошел. Но в Concepts тоже сноска есть) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 10:02 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Immunitet, это муторно лезть в исходный код страницы, искать ИД... попробуй в ссылке замени ид на ADMIN13280 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 10:07 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Это похоже, Опера при прокручивании страницы меняет якорь на ближайший Я покрутил, да и скопировал с адресной строки :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 10:10 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Собственно, я ответ на свой вопрос получил))) Так что не в претензии))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 12:48 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Заодно и концепции освежил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 12:52 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Главное, чтобы база не была 24*7 и не STD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:03 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Ну, про 24/7 еще понятно (тут, конечно, спасет отдельное ТП или exp[dp]/imp[dp]), но чем STD не угодил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:12 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, да, отличный вариант. Маленький минус - в табличном пространстве останется много дыр. Особенно если учесть, что файлов 50 (наверняка все они создавались не одновременно, а по мере заполнения предыдущих, а значит, в начале у них всех будут экстенты самых разных объектов) и большое число объектов. У постоянно растущих объектов экстенты будут как в начале файлов данных, так и в конце. Внутри ТП место, конечно, освободится, а в файловой системе можно будет освободить за счет уменьшения размера датафайлов, весьма вероятно, очень мало. Или делать это многими итерациями, что увеличивает генерацию логов и затраты времени. Насчет того, что для дампа места нет - обычно все же базу данных располагают не на системном разделе и не на разделе с хоумами пользователей. Там место не факт, что заканчивается, и дамп туда или на временный носитель вполне можно направить. Кроме того, в принципе, можно задействовать компрессию для дампа (оракловую или на уровне файловой системы (zfs,ntfs)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:20 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, В STD не работает ONLINE. Т.е. если у человека 24/7 на STD, я бы предложил ( если нет триггеров, конечно) смотреть в сторону ALTER TABLE SHRINK SPACE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:23 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
Nobody1111Вячеслав Любомудров, да, отличный вариант. Маленький минус - в табличном пространстве останется много дыр. Особенно если учесть, что файлов 50 (наверняка все они создавались не одновременно, а по мере заполнения предыдущих, а значит, в начале у них всех будут экстенты самых разных объектов) и большое число объектов. У постоянно растущих объектов экстенты будут как в начале файлов данных, так и в конце. Внутри ТП место, конечно, освободится, а в файловой системе можно будет освободить за счет уменьшения размера датафайлов, весьма вероятно, очень мало. Или делать это многими итерациями, что увеличивает генерацию логов и затраты времени.У тебя есть такой опыт или ты просто так думаешь? Сразу скажу -- у меня есть. Причем еще до того, как UNUSABLE стал освобождать место. В крайнем случае одна-две таблички переносятся повторно. Я ведь подчеркнул -- главное правильно выбрать порядок, это не очень сложно, особенно когда таблиц много Nobody1111Насчет того, что для дампа места нет - обычно все же базу данных располагают не на системном разделе и не на разделе с хоумами пользователей. Там место не факт, что заканчивается, и дамп туда или на временный носитель вполне можно направить. Кроме того, в принципе, можно задействовать компрессию для дампа (оракловую или на уровне файловой системы (zfs,ntfs)).Полтерабайта? У него 8 гиг свободного места под файлы БД. Не думаю, что если бы у него где-то на системном разделе завалялось полтерабайта он бы так переживал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:29 |
|
||
|
shrink datafiles
|
|||
|---|---|---|---|
|
#18+
В идеале конечно надо полностью переносить в другое ТС, это намного проще и позволит освободить все свободное место. Если такой возможности нет совершенно то остается перенос внутри одного пространства. Во втором случае все-таки стоит на время проведения этих работ выкинуть одну две таблички в другое пространство, располагающиеся в начале файлов, тогда последующие мувы, шринки и ребилды преимущественно будут располагаться вначале файлов. Правда таким способом освободить все свободное место не получится (по крайней мере у меня не получалось, дырки оставались), но процент высвобожденного пространства очень высок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 13:39 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39392716&tid=1886544]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 528ms |

| 0 / 0 |
