powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink datafiles
48 сообщений из 48, показаны все 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
shrink datafiles
    #39393019
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровУ тебя есть такой опыт или ты просто так думаешь?
Сразу скажу -- у меня есть. Причем еще до того, как UNUSABLE стал освобождать место. В крайнем случае одна-две таблички переносятся повторно. Я ведь подчеркнул -- главное правильно выбрать порядок, это не очень сложно, особенно когда таблиц много
Я пробовал так делать, у меня это толка не давало. Ну, возможно, не доработал, надо будет при случае еще потренироваться.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393024
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paradox_addict2В STD не работает ONLINE.ONLINE чего?
ALTER TABLE MOVE ONLINE и так не работает (по крайней мере до 12c) на обычных таблицах
А ALTER INDEX REBUILD ONLINE уже не так критично, когда был большой простой из-за MOVE таблицы
paradox_addict2Т.е. если у человека 24/7 на STD, я бы предложил ( если нет триггеров, конечно) смотреть в сторону ALTER TABLE SHRINK SPACEОно не перенесет все экстенты в новое место. И если там в конце файла табличка из одного экстента -- как ни верти ее надо мувить.

Можно еще поговорить про DBMS_REDEFINITION (не знаю, работает ли он в стандарте), но это все как-то не то. В 24/7 такими проблемами никто не страдает обычно
...
Рейтинг: 0 / 0
shrink datafiles
    #39393042
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
Просто вы советуете, а может это ПРОД, какой-нибудь уважаемой конторы.
У меня просто был случай, когда новому сисадмину сказали в рабочее время батарейки в УПСе заменить. Он послушался....
...
Рейтинг: 0 / 0
shrink datafiles
    #39393048
dba123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paradox_addict2,

Там всё просто
я меняю много лет батареи в рабочее время
...
Рейтинг: 0 / 0
shrink datafiles
    #39393057
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paradox_addict2Просто вы советуете, а может это ПРОД, какой-нибудь уважаемой конторы.Я не советую, я описываю еще один способ, который может сработать в условиях ТС
И стоит тебе темку прочитать с самого начала
Ты, кстати, SHRINK TABLE советуешь , а известно ли тебе сколько там багов (особенно до 11g), там ведь целиком данные потерять можно.

Да и вообще, мож у него там засилье LONG-ов и тут остается либо их в лобы преобразовывать, либо юзать таки exp[dp]/imp[dp]
...
Рейтинг: 0 / 0
shrink datafiles
    #39393062
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dba123,
Я не большой знаток в УПСах, но подозреваю, что при определенном желании, можно резервную линию питания, сделать дополнительной, так как основная не тянет.
Срабатывание автомата по любой из линий вызовет срабатывание второго автомата и в результате обесточенная стойка.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393068
paradox_addict2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,
Способов много.
Может до ТС, кто-то специально выделил заранее всё имеющееся пространство и сознательно не использует AUTOEXTEND.
Если это DEV база, я полностью согласен лучше способа, чем EXP(EXPDP)/IMP(IMPDP)
...
Рейтинг: 0 / 0
shrink datafiles
    #39393116
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровПолтерабайта?
У него 8 гиг свободного места под файлы БД. Не думаю, что если бы у него где-то на системном разделе завалялось полтерабайта он бы так переживал.

Думаю, что полтерабайта - это пессимистично. Запущу-ка я на выходные экспортироваться 4Tb схемку, думаю, дамп без компрессии будет около 600Гб. В понедельник расскажу.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393606
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал такой генератор скрипта

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
case segment_type
    when 'TABLE' then 'alter table '||owner||'.'||segment_name||' move tablespace ' || dummy.tbs || ';' || chr(13) || chr(10) || '/' 
    when 'TABLE PARTITION' then 'alter table '||owner||'.'||segment_name||' move tablespace ' || dummy.tbs || ';' || chr(13) || chr(10) || '/' 
    when 'INDEX' then 'alter index '||owner||'.'||segment_name||' rebuild tablespace ' || dummy.tbs || ';' || chr(13) || chr(10) || '/' 
end 
from DBA_EXTENTS_TMP, (select 'movetemp' tbs from dual) dummy
where segment_type in ('TABLE', 'TABLE PARTITION', 'INDEX')
group by owner, dummy.tbs, segment_type, segment_name;
/



но оказалось там ещё объекты других типов segment_type находятся. Как их переносить ?
...
Рейтинг: 0 / 0
shrink datafiles
    #39393607
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню, это DBA_EXTENTS_TMP
таблица куда я перекинул все записи относящиеся к одному датафайлу из вьюхи DBA_EXTENTS
иначе эта вьюха DBA_EXTENTS огромна, и очень долго из неё получать результаты
...
Рейтинг: 0 / 0
shrink datafiles
    #39393618
veep_in_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xsergeУточню, это DBA_EXTENTS_TMP
таблица куда я перекинул все записи относящиеся к одному датафайлу из вьюхи DBA_EXTENTS
иначе эта вьюха DBA_EXTENTS огромна, и очень долго из неё получать результаты
Объекты могут быть размазаны по нескольким датафайлам, не вижу смысл делать перенос по файлово. Тогда уж лучше по алфавиту или группировать по сайзу( от большего к малому)
...
Рейтинг: 0 / 0
shrink datafiles
    #39393623
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xserge, еще стоит объекты из корзины в ТП для начала удалить.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393628
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
veep_in_office,

мне нужно хотя бы один из 50 датафайл уменьшить в размере. Этого достаточно, и как раз смысл в этом есть.
...
Рейтинг: 0 / 0
shrink datafiles
    #39393629
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понятно какими командами переносить объекты следующих типов
LOBINDEX
INDEX PARTITION
LOB PARTITION
LOBSEGMENT
...
Рейтинг: 0 / 0
shrink datafiles
    #39393638
veep_in_office
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xsergeНе понятно какими командами переносить объекты следующих типов
LOBINDEX
INDEX PARTITION
LOB PARTITION
LOBSEGMENT
lob index и partition пересоздаются сами при переносе lob

С index partition тоже самое (после ребилда индекса)
...
Рейтинг: 0 / 0
shrink datafiles
    #39393658
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объяснять все механику очень долго, а вот прямо готового скрипта нет.
Пара наметок:
-- ты не озвучил версию -- от этого много зависит
-- DBA_EXTENTS -- это здорово, но очень много. DBA_SEGMENTS намного легче
-- LOBSEGMENT, LOBINDEX (на него можно не обращать внимания отдельно, он живет только в паре с LOBSEGMENT) -- через DBA_LOBS определяешь таблицу и столбец (надо выделить сразу все LOB-столбцы и соответствующие им LOBSEGMENT) и одной командой ALTER TABLE ... MOVE LOB(список_LOB_столбцов) STORE AS (TABLESPACE ...)
-- LOB PARTITION -- все тоже, только DBA_LOB_PARTITIONS и ALTER TABLE ... MOVE PARTITION ... LOB ...
-- INDEX_PARTITION -- ALTER INDEX ... REBUILD PARTITION ...

На самом деле, обрати еще внимания на таблички с LONG [RAW] столбцами -- они через MOVE не умеют ездить, тут только или преобразование их в BLOB/CLOB (как правило, приложение и не заметит подмены) или через exp/imp

Ну и прочитай внимательно весь топик
...
Рейтинг: 0 / 0
shrink datafiles
    #39394520
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

>>-- DBA_EXTENTS -- это здорово, но очень много. DBA_SEGMENTS намного легче

Скажите если использовать DBA_SEGMENTS вместо DBA_EXTENTS, то ID дата файла будет определяться полем HEADER_FILE ?

В документации по DBA_SEGMENTS пишут:
HEADER_FILE NUMBER ID of the file containing the segment header

Когда в DBA_EXTENTS
FILE_ID NUMBER File identifier number of the file containing the extent

Меня настораживает отличие в описании "в файле содержится заголовок сегмента" и "файл содержащий экстенд"
...
Рейтинг: 0 / 0
shrink datafiles
    #39394557
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111Запущу-ка я на выходные экспортироваться 4Tb схемку, думаю, дамп без компрессии будет около 600Гб. В понедельник расскажу.

Хм, свалился экспорт с ORA-600 [kupfioReqBuffer], [No buffer],[EOV]. PARALLEL зря задал. Ну вообще-то, похоже, с размером дампа я сильно ошибался.
...
Рейтинг: 0 / 0
shrink datafiles
    #39395015
xserge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказалась утопической идея переноса во временное табличное пространство всех объектов, фрагменты которого в одном датафайле 30гб.
временного табличного пространства 150гигов не хватило и на треть. Вернул всё назад.
Теперь проблема удалить временное табличное пространство

alter tablespace movetemp offline immediate

21:20:35 ORA-01145: offline immediate disallowed unless media recovery enabled

или вот такой командой
DROP TABLESPACE movetemp INCLUDING CONTENTS;

получаю
21:25:05 ORA-00604: error occurred at recursive SQL level 1
21:25:05 ORA-02429: cannot drop index used for enforcement of unique/primary key
...
Рейтинг: 0 / 0
shrink datafiles
    #39395049
xsergeфрагменты которого в одном датафайле 30гб.
150гигов не хватило и на третьНемного бреда вам в ленту? :)

ORA-02429 В гугле забанили? Значит перенёс, да не всё...
...
Рейтинг: 0 / 0
shrink datafiles
    #39395108
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри в OEM вкладку зависимости, там есть такое, что ты перенес объекты, но они пустые, места не заняли, но они числятся за этим табличным пространством, но на них ссылаются другие объекты из внешних табличных пространств.
И не делай INCLUDING CONTENTS, грохнешь объекты, хоть и пустые.
...
Рейтинг: 0 / 0
shrink datafiles
    #39395134
Al_vrn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите упоминание вашего ts в dba_segments, dba_constraints, dba_tables, dba_part_tables, dba_tab_partitions, dba_tab_subpartitions, dba_indexes, dba_ind_partitions, dba_users, database_properties..
...
Рейтинг: 0 / 0
shrink datafiles
    #39395139
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был такой вопрос у меня, брала из трассировки скрипт

Код: sql
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.
SELECT 'ROLLBACK SEGMENT' segment_name , u.name, NULL, 'HARD', 'STORAGE', NULL   
  FROM  SYS.UNDO$ u, sys.ts$ ts WHERE ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.ts#=ts.ts#  
  and  u.status$ != 1 and substr(u.name,1,7) != '_SYSSMU'  UNION   SELECT 'USER',   
  u.name, NULL, 'SOFT', 'DEF_TABLESPACE', NULL FROM sys.user$ u, sys.ts$ dts  
  WHERE   dts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.datats# = dts.ts#  
  and u.tempts# != u.datats# and  u.type# = 1  UNION   SELECT 'USER',   
  u.name, NULL, 'SOFT', 'TEMP_TABLESPACE', NULL FROM sys.user$ u, sys.ts$ tts  
  WHERE   tts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.tempts# = tts.ts#  and u.tempts# != u.datats# and  u.type# = 1   
  UNION   
  SELECT 'USER',   u.name, NULL, 'SOFT', 'DEF_AND_TEMP_TABLESPACE', NULL 
  FROM sys.user$ u,  sys.ts$ tts WHERE   tts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and u.tempts# = tts.ts#  and u.tempts# = u.datats# and  u.type# = 1     
  UNION       
  SELECT 'USER',   username, NULL, 'SOFT', 'TABLESPACE_QUOTA', NULL 
  FROM SYS.DBA_TS_QUOTAS   WHERE tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'   
  UNION   
  SELECT 'CLUSTER', o.name, u.name,   'HARD', 'STORAGE', NULL 
  FROM  sys.ts$ ts, sys.clu$ clu, sys.obj$ o, sys.user$ u 
  WHERE   ts.name =  'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and clu.ts# = ts.ts# and o.obj# = clu.obj# and u.user# =  o.owner#      
  UNION   
  SELECT 'TABLE',DECODE(t.iot_type,'IOT_OVERFLOW', t.iot_name,  p.table_name),DECODE(t.iot_type,'IOT_OVERFLOW', t.owner,p.table_owner),  
  'HARD',     DECODE(t.iot_type,  'IOT_OVERFLOW','IOT_OVERFLOW_STORAGE','PARTITION_STORAGE'),  partition_name 
  FROM sys.dba_tab_partitions p, sys.dba_tables t 
  WHERE  p.tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' 
  AND p.table_name = t.table_name AND  p.table_owner = t.owner   
  UNION  
  SELECT 'INDEX', decode(i.index_type,'IOT-TOP',i.table_name,p.index_name),  decode(i.index_type,'IOT_TOP',i.table_owner,p.index_owner),  
  'HARD', 'PARTITION_STORAGE', PARTITION_NAME FROM SYS.DBA_IND_PARTITIONS p, SYS.DBA_INDEXES i 
  WHERE p.tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' 
  AND p.index_name =  i.index_name AND p.index_owner = i.owner AND i.index_type != 'LOB'  
  UNION 
  SELECT 'TABLE', pt.table_name, pt.owner, 'HARD', 'DEF_TABLESPACE', NULL 
  FROM   SYS.DBA_PART_TABLES pt, SYS.DBA_TABLES t 
  WHERE pt.def_tablespace_name =   'ТАБЛИЧНОЕ ПРОСТРАНСТВО' 
  AND pt.table_name = t.table_name AND pt.owner = t.owner 
  AND  (t.iot_type != 'IOT_OVERFLOW' OR t.iot_type IS NULL)  UNION  SELECT 'INDEX',  i.index_name, i.owner, 
  'HARD', 'DEF_TABLESPACE', NULL FROM  SYS.DBA_PART_INDEXES pi, SYS.DBA_INDEXES i 
  WHERE i.partitioned = 'YES' AND  i.index_type != 'LOB' AND i.index_name = pi.index_name AND i.owner =  pi.owner 
  AND pi.def_tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'  
  UNION   
  SELECT 'TABLE',   table_name, table_owner, 'HARD', 'PARTITION_STORAGE', PARTITION_NAME 
  FROM   SYS.DBA_TAB_SUBPARTITIONS WHERE tablespace_name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'     
  UNION   
  SELECT   DECODE( i.type#, 8, 'TABLE', 4, 'TABLE', 'INDEX'),   DECODE( i.type#, 8, io.name, 4, io.name, o.name),     
  DECODE( i.type#, 8, iu.name,4, iu.name, u.name),   'HARD',  DECODE( i.type#, 8, 'LOB_INDEX_STORAGE', 'STORAGE'), NULL   
  FROM sys.ts$ ts, sys.ind$ i, sys.user$ u, sys.user$ iu, sys.obj$ o, sys.obj$  io 
  WHERE   ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО' and i.ts# = ts.ts#   and bitand(i.flags, 4096) = 0   and bitand(i.property, 34) = 0   
  and i.type# != 9   and u.user# = o.owner#  and o.obj# = i.obj#   and i.bo# = io.obj#   and io.owner# = iu.user#   
  UNION   
  select 'TABLE',o.name, u.name,  'HARD','LOB_STORAGE',decode(bitand(c.property, 1), 1, ac.name, c.name)  
  from sys.obj$ o, sys.col$ c, sys.attrcol$ ac, sys.tab$ ta,       sys.lob$ l, sys.obj$ lo, sys.obj$ io, sys.user$ u, sys.ts$ ts  
  where   ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'   and o.owner# = u.user#  and o.obj# = c.obj#   and c.obj# = l.obj#   and c.intcol# = l.intcol#    
  and l.lobj# = lo.obj#    and l.ind# = io.obj#   and l.ts# = ts.ts#   and c.obj# = ac.obj#(+)   
  and c.intcol# = ac.intcol#(+)   and bitand(c.property,32768) != 32768          
  /* not unused column */   and o.obj# = ta.obj#   and bitand(ta.property, 32) != 32          
  /* not partitioned table */  
  union all
  select 'TABLE',o.name, u.name, 'HARD','LOB_STORAGE',decode(bitand(c.property,  1), 1, ac.name, c.name)   
  from sys.obj$ o, sys.col$ c, sys.attrcol$ ac, sys.partlob$ plob,       sys.lob$ l, sys.obj$ lo, sys.obj$ io, sys.ts$ ts1, sys.tab$ ta,       
  sys.partobj$ po, sys.ts$ ts2, sys.user$ u  where     ts1.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'   and o.owner# = u.user#   and o.obj# = c.obj#   
  and c.obj# = l.obj#   and c.intcol# = l.intcol#   and l.lobj# = lo.obj#   and l.ind# = io.obj#   and l.lobj# = plob.lobj#   and plob.defts# = ts1.ts# (+)   
  and c.obj# = ac.obj#(+)   and c.intcol# = ac.intcol#(+)   and bitand(c.property,32768) != 32768          
  /* not unused column */   and o.obj# = ta.obj#   and bitand(ta.property, 32) = 32                
  /* partitioned table */   and o.obj# = po.obj#   and po.defts# = ts2.ts#    
  UNION   
  select 'TABLE',  decode((bitand(t.property, 512)+bitand(t.flags,  536870912)),0, o.name, co.name),               
  u.name, 'HARD', decode((bitand(t.property, 512)+bitand(t.flags,  536870912)),0, 'STORAGE','IOT_OVERFLOW_STORAGE'), NULL     
  FROM     sys.ts$ ts, sys.tab$ t, sys.seg$ s ,sys.user$ u, sys.obj$ co, sys.obj$ o,       
  sys.obj$ cx, sys.user$ cu  where   ts.name = 'ТАБЛИЧНОЕ ПРОСТРАНСТВО'     and t.ts# = ts.ts#   and bitand(t.property, 4194400) = 0   
  and bitand(t.property, 1) = 0     and t.file# = s.file# (+)   and t.block# = s.block# (+)   and t.ts# = s.ts# (+)   and o.owner# = u.user#   
  and o.obj# = t.obj#   and t.bobj# = co.obj# (+)   and t.dataobj# = cx.obj# (+)    and cx.owner# = cu.user# (+)      and cx.owner# = cu.user# (+) 
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / shrink datafiles
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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