Групово изтриване чрез вмъкване - пълно пространство за отмяна

имам таблица със 100 милиона записа.
Искам да изтрия 60% от него. Сега прочетох, че трябва да копирам таблицата и да вмъкна валидните стойности. (защото е по-бързо)

Пример: INSERT INTO Person_New SELECT * FROM Person_old where p.name is not null.

Проблем: След няколко минути пространството ми за отмяна е пълно И не мога! преоразмерете го, защото нямах разрешения за него.

Въпрос: Трябва ли да разделя вложката на много части, например с диапазон на идентификатори? Или има по-добър начин?

Редактиране за първи коментар Изходна грешка:
ORA-30036: не може да се разшири сегмент с 8 в таблично пространство за отмяна ...


person pL4Gu33    schedule 22.05.2014    source източник
comment
Сигурни ли сте, че това е вашето UNDO пространство?   -  person gustavodidomenico    schedule 22.05.2014
comment
да, добавям съобщението. Или разбирам нещо нередно там?   -  person pL4Gu33    schedule 22.05.2014
comment
Така че опитайте да извършите вмъкване с подсказката /*+APPEND*/. За да извършите вмъкване по директен път.   -  person gustavodidomenico    schedule 22.05.2014
comment
Нека отговоря на този въпрос с подходящ пример. Една секунда.   -  person gustavodidomenico    schedule 22.05.2014


Отговори (1)


Най-добрият вариант е да избегнете генерирането на UNDO с помощта на DDL оператор:

CREATE TABLE PERSON_NEW NOLOGGING AS
   SELECT * FROM Person_old where p.name is not null

NOLOGGING е да се избегне генерирането на REDO и да се извърши създаването по-бързо.

Въпреки това, ако трябва да извършите INSERT, помислете за вмъкване по директен път, като използвате подсказката /*+APPEND*/:

INSERT /*+APPEND*/ INTO PERSON_NEW
  SELECT * FROM Person_old where p.name is not null

Създаването на таблицата PERSON_NEW с атрибута NOLOGGING ще бъде полезно (а също и опасно), но използването на атрибута NOLOGGING в DML операцията няма ефект.

person gustavodidomenico    schedule 22.05.2014
comment
не мога да го тествам в момента, но изглежда, че това ми трябваше. Ако работи, маркирам отговора ви по-късно като правилен. Благодаря ви за това добро обяснение! - person pL4Gu33; 22.05.2014
comment
Няма проблем. Невъзможно е да знаем дали ще ви помогне, защото не знаем вашата хардуерна конфигурация и конфигурация за инсталиране на oracle. Но съм сигурен, че концепциите по-горе ще ви помогнат по някакъв начин :) - person gustavodidomenico; 22.05.2014