Удаление «большого» манданта в SAP R/3 4.0


Давным-давно, в одной очень далекой Галактике… Тьфу, это что-то не то… Несколько лет назад, когда я еще был администратором базы данных Oracle и «сапёром» (администратором SAP R/3) мне понадобилось удалить один из мандантов в системе, в связи с тем, что этот мандант мигрировал на другой сервер и данные уже были не нужны, но место на дисковом массиве занимали. Проблема была ровно одна — данные в манданте занимали почти терабайт из 1.2 Тб общего размера всей БД. Остальная обвязка была следующая: Oracle 8.1.7, дисковый массив на полтора терабайта, и нет свободного места на других массивах.

Поскольку удаляемый мандант большой, то стандартный способ предлагаемый SAP не удачен — он реально пытается удалить данные в таблицах, что гарантирует не только его ОЧЕНЬ медленную работу но и забивание табличного пространства PSAPROLL, где хранятся сегменты отката (сделать его размером 100-200 гигабайт — не лучшая идея в нашем случае).

В итоге, после размышлений подумалось мне, что для данного случая больше подходит метод не удаления большей части данных, а выборки оставшихся данных и пересоздания таблицы со вставкой их обратно (CREATE TABLE NOLOGGING AS SELECT). Самое главное, что с помощью отказа от генерации redo-данных с помощью опции NOLOGGING можно сильно ускорить процесс. Единственное ограничение — данный метод не подходит для таблиц имеющих поля типа LONG, но, к счастью, их немного и они не такие огромные.

Продолжить чтение «Удаление «большого» манданта в SAP R/3 4.0″