[ОТВЕТИТЬ]
Опции темы
07.04.2009 08:44  
ismailovrr-pinokio
В Базе Данных версии 8i, после выполнения разного рода DML операций над объектами data-файл
данных становиться большого размера, не хватает место на жестком диске.
Следовательно, возникает желание уменьшить его.
Например таким образом:

alter database datafile '/oracle/oradata/kaztes /users01.dbf' resize 1000M

Oracle соответвенно выдает ошибку:

ORA-03297: file contains used data beyond requested RESIZE value

В Enterprise Manager Console Oracle показывает по данному data-файлу,
что он имеет свободное пространство dba_free_space показывает что
места в этом файле очень достаточно. Можно посмотреть конечно что
находится наверху файла примерно таким вот образом :

select file_name, segment_name, segment_type, owner from dba_extents s,

(select max(block_id) maxblock, file_id from dba_extents group by file_id) b,

dba_data_files f where

s.block_id = b.maxblock and s.file_id = b.file_id and f.file_id = s.file_id

order by file_name

-- Мной Найдено в интернете.
Этот скрипт показывает, какие объекты занимают последние экстенты файла.
Теперь вопрос что с ними делать. Логично перенести их куда нибудь в другое
место и попробовать заново уменьшить размер дата файла. То есть если это индекс,
то нужно перестраивать его в другое табличное пространство в другой data-файл например?
Cуществуют ли такие пакеты Oracle, которые сами высвобождают свободные блоки и
переставляют их опять же в текущий data-файл миную операции переноса объектов в другое место?
P.S. Проблема актуальна для версии Oracle 9i тоже. Если есть какие то наработки очень жду ответа.
 
07.04.2009 08:50  
Radik
Вот, озадачились, просим помощи...
 
07.04.2009 08:54  
Mtirt
Иногда помогает команда coalesce. Но далеко не всегда...
 
07.04.2009 09:56  
ismailovrr-pinokio
Век живи-век учись. Поробуем почитаем coalesce.
 
07.04.2009 10:02  
ismailovrr-pinokio
*170 - смайлик для тех кто работает c Oracle в течении 4 лет и не знает проблем ... где же они эти индивиды *107
 
07.04.2009 10:10  
OlegON
Не надо coalesce. Желание "уменьшить" очень неправильное. Рекомендую перетащить индексы в другое табличное пространство, на другом диске. После чего перетащить таблички в другое табличное пространство, пересоздать это ТП, вернуть таблички обратно, прибить то ТП, куда временно таблички перемещались.
 
07.04.2009 10:49  
ismailovrr-pinokio
И все же

alter tablespace users coalesce

что же делает это чудо команда?

Подскажите... Очень заинтриговали.
 
07.04.2009 10:58  
OlegON
Просто объединит соседние пустые экстенты (например два рядом по 20Мб, станет один 40Мб). Если не удалял ничего масштабно - не поможет толком. Да и если PCTINCREASE <> 0 - оно выполняется автоматом.
 
07.04.2009 11:04  
ismailovrr-pinokio
Спасибо за ответы.
alter tablespace users coalesce - прочитал про это действо.
Похоже на дефрагментацию табличного пространства.
Но место не освободиться.
Можно конечно через экспорт и импрот попробовать уменьшить.
Только вот у меня дата файлы c табличным пространстом USERS
размером по 30 Gb оба. Это мне нужно примерно 60*2=120 свободного места. Дефицит места на сервке для таких операций мало.
Думать еще раз думать.*43 Век живи век учись.
 
07.04.2009 11:14  
OlegON
Не понятно, что ты хочешь сделать. Уменьшать базу - неблагодарное занятие. Главное, что практически бессмысленное. Если хочешь, могу с базой помочь.
 
 


Опции темы



Часовой пояс GMT +3, время: 13:40.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.