Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таблица продолжает пухнуть, хотя половину записей удалили / 22 сообщений из 22, страница 1 из 1
17.06.2003, 19:07:34
    #32184735
Таблица продолжает пухнуть, хотя половину записей удалили
Есть некая таблица History.
Это таблица Истории событий в системе.
Записи бывают нескольких типов с разным сроком жизни.
Каждый день в нее пишется 10% долгосрочных событий и 90% краткосрочных.
Было в ней около 800 тысяч записей. Потихоньку она себе росла.
Потому что каждую ночь из нее удалялись просроченные события и оставались новые краткосрочные и долгосрочные события, добавленные за сутки.
В один прекрасный день в эту таблицу было записано 2 миллиона краткосрочных записей, которые были дня через два удалены, но таблица продолжает расти.
В тот момент у меня стояли PTCFREE=10 PCTUSED=40 (то есть, умолчательные значения).
Теперь я сделал PTCFREE=5 PCTUSED=90.
Есть ли способ пересоздать FREELIST ?
Импорт/экспорт, наверное, будет сильно затруднен в связи с наличием в ней LONG поля.
Поможет ли UPDATE всех записей с изменением размера записи ?
Или, например, добавить в таблицу поле, затем его удалить?
Что может помочь установить новые параметры PCTFREE/PCTUSED и включить полупустые экстенты в список FREE ?

Спасибо in advance.
...
Рейтинг: 0 / 0
17.06.2003, 20:10:20
    #32184772
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Yes, you need to update existing rows. Add a column, e.g. varchar2(1) default 'A' and then drop the column. That should recalculate free list based on new PCTUSED value. This should eliminate (for a while) table growth. However, you will not be able to decrease allocated space - when в один прекрасный день в эту таблицу было записано 2 миллиона краткосрочных записей, it pushed HWM way up (High Water Mark) and now you are stuck with it (unless you exp/drop/recreate/imp or alter table move - which might not work since you have long column).

SY.
P.S. Since you table is quite large DROP COLUMN might error out with either out of memory or rollback space. I suggest you use DROP COLUMN CHECKPOINT and if it still errors out use DROP COLUMN CONTINUE.
...
Рейтинг: 0 / 0
17.06.2003, 20:47:24
    #32184788
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Any chance History table is in LMT with AUTO extent management? If so, then PCTFREE/PCTUSED are irrelevant since free space is info is stored in bitmap.

SY.
...
Рейтинг: 0 / 0
18.06.2003, 08:52:35
    #32184898
Таблица продолжает пухнуть, хотя половину записей удалили
К сожалению таблица была изначально создана в DMT.
Хотелось бы, конечно, перекинуть ее в новый LMT, который я под нее специально создал.
Сейчас пока пытаюсь добиться остановки роста.
Так как остановить работу юзеров я не могу, то добавил числовой столбец пустым и вот уже много часов не спеша наполняю его числом. Во всяком случае это действие я могу делать траспарентно работе юзеров.
А вот удалять столбец уже на фоне работы юзеров не получится, наверное.
Так как это центровая таблица, то и завязки на нее ВО ВСЕХ пакетах.
Предполагаю, что нужно будет сделать его UNUSED, валидировать все модули, а потом DROP UNUSED.
Я могу на короткое время (на минуту) закрыть сервак чтобы добавить столбец или сделать его UNUSED, но вот на все время DROP COLUMN остановить сервер смерти подобно...
Вопрос: правильно ли я понимаю, что при выполнее DROP UNUSED зависимые пакеты не инвалидируются?
...
Рейтинг: 0 / 0
18.06.2003, 08:58:39
    #32184904
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Не помню где вычитал, что если выполнить delete всего, а затем rollback, freelist-ы таки перестроятся. Не проверял.
...
Рейтинг: 0 / 0
18.06.2003, 09:09:07
    #32184911
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Delete тут не поможет, так как на параметры экстента это не влияет.
А вот truncate table можно, с последующей закачкой скажем из файла экспорта.
...
Рейтинг: 0 / 0
18.06.2003, 09:16:27
    #32184918
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Я имел в виду, чтобы вступило в силу НОВОЕ значение PCTUSED
...
Рейтинг: 0 / 0
18.06.2003, 09:18:39
    #32184923
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Новое значение будет применимо только для новых экстентов.
...
Рейтинг: 0 / 0
18.06.2003, 09:20:20
    #32184926
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Я и говорю, что где то вычитал, что после rollback во freelist будут возвращены блоки, удовлетворяющие новому PCTUSED
...
Рейтинг: 0 / 0
18.06.2003, 09:23:07
    #32184929
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
to Gluk (Kazan):

Источник в студию.
...
Рейтинг: 0 / 0
18.06.2003, 09:30:32
    #32184938
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Код: plaintext
Any chance History table is in LMT with AUTO extent management? If so, then PCTFREE/PCTUSED are irrelevant since free space is info is stored in bitmap. 


Более точно, pctfree остается, а задавать pctused нельзя.
...
Рейтинг: 0 / 0
18.06.2003, 09:42:04
    #32184951
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Моя найти по журналу :)

http://dsvolk.msk.ru/oracle/faq/dba.php#pct
...
Рейтинг: 0 / 0
18.06.2003, 14:45:02
    #32185526
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
2 softbuilder:

>Новое значение будет применимо только для новых экстентов.

PCTFREE/PCTUSED is not extent but rather SEGMENT property. PCTUSED will be considered EVERY time row is deleted or updated. Oracle will decide whether to add block to free list based on current PCTUSED.

2 Al:

>Более точно, pctfree остается, а задавать pctused нельзя.

Not sure what you mean. I am under impression that AUTO segment management will create a bitmap with one of four possible bits set for each block (25%, 50%, 75% and 100%). When there is a request to insert a row Oracle will calculate row size/block size * 100 and will know percentage needed. Then it will look for a block with proper bit set in the bitmap. After row is inserted Oracle recalculates data to block size ratio and updates bitmap if needed. This completely replaces PCTFREE/PCTUSED - that is why AUTO does not use free lists. Please let me know if it is not the way AUTO works.

SY.
...
Рейтинг: 0 / 0
18.06.2003, 14:54:02
    #32185547
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
to SY:
Да, я не правильно сказал, я имел ввиду блоки , а не экстенты.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
The effects of changing the block utilization parameters are as follows:
• PCTFREE: A change to PCTFREE will affect future inserts. Blocks that are not
used for inserts because they had already been filled to ( 100 /PCTFREE) will not
be affected until they are back on the free list. They can only be placed on the free
list if their use drops below PCTUSED.
• PCTUSED: Any change to PCTUSED will affect all the blocks in the table. If a
row is updated or deleted, the block containing the row will be checked for its use
and reused for inserts if the use is below PCTUSED.
...
Рейтинг: 0 / 0
18.06.2003, 15:26:13
    #32185597
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
2 SY

Вы абсолютно правильно расписали схему работы при вставках новых записей. Но остается проблема обновлений и миграции строк, для которой и задается pctfree. Поэтому даже при segment space management auto остается необходимость задавать pctfree. Но pctused задавать уже нельзя.
...
Рейтинг: 0 / 0
19.06.2003, 16:45:01
    #32186756
Таблица продолжает пухнуть, хотя половину записей удалили
И еще один связанные вопрос: случилось так, что один из экстентов этой самой History получился большой -- 300мег. Кроме него есть еще и поменьше, всего 900 экстентов.
Так вот, стоит ли мне заботиться об этом огромном экстенте или пусть живет? И сразу в ту же кассу, если стоит от него избавиться, то как это сделать?
Таблица сейчас отхватила 4.4Гб, реально данных на 1.3Гб и она не растет очень круто. Только вот выхватить у нее сколько-нибудь из излишне захваченных 2.5 Гб мне никак не удается... Да и LONG этот ну совсем меня достал...
...
Рейтинг: 0 / 0
19.06.2003, 17:06:36
    #32186783
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
Наверное, pctincrease не нулевой, тогда каждый следующий экстент больше предыдущего.
...
Рейтинг: 0 / 0
19.06.2003, 17:09:06
    #32186785
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
You can try ALTER TABLE DEALLOCATE UNUSED, however as I already mentioned, most likely it will not work. When you inserted 2 million rows it pushed HWM way up. As a result you can not deallocate that space. You would have to either ALTER TABLE MOVE or EXP, TRUNCATE TABLE and IMP data back.

SY.
...
Рейтинг: 0 / 0
19.06.2003, 17:28:09
    #32186805
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
2 SY

alter table move не будет работать из-за наличия колонки long. Поэтому остается только импорт-экспорт.
...
Рейтинг: 0 / 0
19.06.2003, 17:51:45
    #32186831
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
2 Al,

Yeah, I missed that LONG column. But I think there might be one more option. SQL*Plus COPY command. It takes LONG (all you need to do is SET LONG=nnn, where nnn >= the longest LONG in the table). This way we can rename HISTORY table to HISTORY_OLD, create an empty HISTORY table with proper prysical and storage attributes, issue SQL*Plus COPY command and then get rid of HISTORY_OLD. This should be faster than EXP/IMP combination (assuming there is enough free space in the tablespace for the second copy of HISTORY table).

SY
...
Рейтинг: 0 / 0
20.06.2003, 07:25:47
    #32186994
Таблица продолжает пухнуть, хотя половину записей удалили
Большое спасибо. Так и сделаю -- скопирую SQLплюсом.
...
Рейтинг: 0 / 0
20.06.2003, 14:40:06
    #32187435
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица продолжает пухнуть, хотя половину записей удалили
2 Поплюев Алексей:

Make sure you

SET LONG=nnn

before COPY. Otherwise your longs > 80 bytes (which is the default) will be truncated without any notice.

SY
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Таблица продолжает пухнуть, хотя половину записей удалили / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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