Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
FreeLancer
Guest
Ora 9.2
Жила-была БД. В ней блобы хранились в блоках вместе с данными. Решил выставить их отдельно, ибо не часто использовались. Выполнил сабж.
Теперь размер БД (табличного пространства с таблицами, без индексов) увеличился в несколько раз. Но данные ведь те же!
В чем причина и как бороть?
13 мар 06, 16:01    [2442716]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
chunksize?
13 мар 06, 16:25    [2442861]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
Мишка на Севере
Guest
FreeLancer
Ora 9.2
Жила-была БД. В ней блобы хранились в блоках вместе с данными. Решил выставить их отдельно, ибо не часто использовались. Выполнил сабж.
Теперь размер БД (табличного пространства с таблицами, без индексов) увеличился в несколько раз. Но данные ведь те же!
В чем причина и как бороть?

create tablespace tb2k blocksize 2048 ...
STORE AS( DISABLE STORAGE IN ROW ) chunk 2048 tablespace tb2k ...
13 мар 06, 17:14    [2443176]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
FreeLancer
Ora 9.2
Жила-была БД. В ней блобы хранились в блоках вместе с данными. Решил выставить их отдельно, ибо не часто использовались. Выполнил сабж.
Теперь размер БД (табличного пространства с таблицами, без индексов) увеличился в несколько раз. Но данные ведь те же!
В чем причина и как бороть?


Так правильно. Под LOB ы дополнительный сегмент был выделен, но в таблице место при этом не освобождается. Так что у тебя появился сегмент с LOBами и осталась пухлая таблица.
13 мар 06, 17:18    [2443208]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
FreeLancer
Guest
2 RA\/EN
LOB("IN_HIST") STORE AS
( TABLESPACE "USERS"  
STORAGE ( INITIAL 72K NEXT 0K MINEXTENTS 1 MAXEXTENTS 
2147483645 PCTINCREASE 0) 
DISABLE 
STORAGE IN ROW 
NOCACHE CHUNK 8192 PCTVERSION 10)

Под LOBы дополнительный сегмент был выделен, но в таблице место при этом не освобождается. Так что у тебя появился сегмент с LOBами и осталась пухлая таблица.

1. Но ведь это-таки MOVE. Неужели он так глупо работает - индексы сбивает (что, я думаю, говорит о попытке уплотнения данных в таблице), а уплотнения не производит.
2. А как эту пухлую похудеть?
13 мар 06, 18:19    [2443544]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
Машка на Юге
Guest
mcureenab
Так правильно. Под LOB ы дополнительный сегмент был выделен, но в таблице место при этом не освобождается. Так что у тебя появился сегмент с LOBами и осталась пухлая таблица.



FreeLancer, тебе 2 намека сделали... Ну да ладно.

На "пухлую", разумеется, забей :)
У тебя был LOB enable storage in row. Судя по твоей ситуации (CHUNK 8192), TABLESPACE "USERS" имеет размер блока 8k, а LOBы скорей всего мелкие. Поэтому у тебя раньше в один блок помещалось несколько строк с LOBами, а теперь в строке остались только 20-байтные указатели (LOB locator'ы) на LOB-индекс, из которого в свою очередь есть указатели (Inode) на блоки LOB-сегмента. Итого, теперь в каждой строке таблицы вместо 100-500 (или какие у тебя они там) байт с данными LOB у тебя осталось 20 байт. Но каждый LOB теперь у тебя занимает минимум 1 chunk, то есть, минимум 1 блок. Даже если он длиной 1 байт или пустой (не NULL, а empty_blob/clob/...).

P.S. Рекомендуются к прочтению дополнительно к доке Note 268476.1, 66431.1.
13 мар 06, 18:58    [2443706]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Машка на Юге

На "пухлую", разумеется, забей :)


Зачем забить?

ALTER TABLE PUKHLAYA MOVE TABLESPACE DIETA;

ALTER TABLE PUKHLAYA MOVE TABLESPACE OBRATNO;

И наблюдаем чудеса похудания
13 мар 06, 19:20    [2443794]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Ну, и индексы отребилдить, чтобы от диеты таблица не сказала "INDEX IN UNUSABLE STATE", что переводится "голова болит"
13 мар 06, 19:22    [2443798]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
Мошка на Западе
Guest
RA\/EN
Зачем забить?

ALTER TABLE PUKHLAYA MOVE TABLESPACE DIETA;

ALTER TABLE PUKHLAYA MOVE TABLESPACE OBRATNO;

И наблюдаем чудеса похудания

Затем, что
автор вопроса
ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )

и чудеса похудания уже произошли. Твоя диета уже не поможет. Выкинь нах свой гербалайф :)
13 мар 06, 19:41    [2443859]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
FreeLancer
Guest
Спасибо за объяснения.
Теперь продолжение вопроса. Я вернул блобы ENABLE STORAGE IN ROW.
Как теперь уменьшить размер файла табличного пространства? Он ведь теперь на 75% пустой.
И при массовом удалении записей сильно растет размер временного табличного пространства. Как его потом вернуть "в рамки"?
16 мар 06, 22:59    [2458023]     Ответить | Цитировать Сообщить модератору
 Re: ALTER TABLE ... MOVE LOB( ... ) STORE AS( DISABLE STORAGE IN ROW )  [new]
nata1111
Member

Откуда:
Сообщений: 1800
на всякий случай к дополнительному прочтению Note:250525.1
Уменьшить размер тп - alter database datafile <...> resize <...>- если оно захочет уменьшаться
Уменьшить темп - через пересоздание его файлов
ALTER DATABASE TEMPFILE <...> drop ;
alter TABLESPACE temp add TEMPFILE <...> SIZE 10M;
19 мар 06, 13:37    [2464222]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить