После очитски 80% данных - что делать дальше?

xdx
Дата: 02.12.2009 10:18:46
Была (есть) база данных Oracle (9.2).
Провели некую процедуру удаления устаревших записей (что-то около 20млн. записей=80%).

Нужно ли делать какие-то дополнительные процедуры (уплотнения, еще чего)?
Есть ли какой-то алгоритм данных профилактических мероприятий?
pravednik
Дата: 02.12.2009 10:40:10
автор
Провели некую процедуру удаления устаревших записей

delete or truncate or drop(?) ?
tru55
Дата: 02.12.2009 10:41:22
зависит от...
Если дальнейшая вставка НЕ предполагается (или вставляться будет гораздо меньше), то
ALTER TABLE ... MOVE
ALTER INDEX ... REBUILD
xdx
Дата: 02.12.2009 10:42:59
pravednik
delete or truncate or drop(?) ?


delete
xdx
Дата: 02.12.2009 10:43:59
tru55
зависит от...
Если дальнейшая вставка НЕ предполагается (или вставляться будет гораздо меньше), то
ALTER TABLE ... MOVE
ALTER INDEX ... REBUILD


Дальнейшая вставка предполагается, т.е. все так же работает без изменения.
tru55
Дата: 02.12.2009 10:46:18
xdx

Дальнейшая вставка предполагается, т.е. все так же работает без изменения.


Тогда вставляться будет в освободившееся место, так что забей
pravednik
Дата: 02.12.2009 10:48:15
tru55
xdx

Дальнейшая вставка предполагается, т.е. все так же работает без изменения.


Тогда вставляться будет в освободившееся место, так что забей

если, конечно, сие мероприятие не предполагало, к примеру, ресайз датафалов и "срочное" освобождение дисков...
Aliona
Дата: 02.12.2009 10:55:04
tru55
xdx

Дальнейшая вставка предполагается, т.е. все так же работает без изменения.


Тогда вставляться будет в освободившееся место, так что забей


Индексы в любом случает лучше перестроить.
Aliona
Дата: 02.12.2009 10:57:20
Вот и скрптик:
автор
spool $TMP_FILE
SELECT 'alter index '||owner||'.'||index_name||' rebuild parallel (degree 30);'
FROM ALL_INDEXES
WHERE owner NOT IN ('SYS','SYSTEM','DBSNMP','OUTLN')
AND tablespace_name != 'SYSTEM'
ORDER BY owner, table_name, index_name;
spool OFF
@$TMP_FILE
Apex
Дата: 02.12.2009 11:09:50
Aliona
Вот и скрптик:
автор
spool $TMP_FILE
SELECT 'alter index '||owner||'.'||index_name||' rebuild parallel (degree 30);'
FROM ALL_INDEXES
WHERE owner NOT IN ('SYS','SYSTEM','DBSNMP','OUTLN')
AND tablespace_name != 'SYSTEM'
ORDER BY owner, table_name, index_name;
spool OFF
@$TMP_FILE

После таких вещей, обычно еще надо параллел в 0 сбросить...