2015-03-11 3 views
0

Я пытаюсь Архивировать данные из одной таблицы в другую. Пожалуйста, найдите ниже мое требование.Архивирование данных в oracle

  1. У меня есть таблицы А и другой таблицы B.

  2. мне нужно, чтобы найти все записи из А, который меньше, чем на конкретную дату

  3. После идентификации записи, мне нужно для перемещения записей в таблице B

  4. После того, как данные будут перемещены в таблице B, мне нужно удалить эти записи из таблицы А.

Я планирую использовать хранимую процедуру с количеством дней для архивирования в качестве параметра.

Теперь мне нужно проверить ошибки при вставке в таблицу A и не удалять эти записи в таблице B, а также если записи успешно вставлены в таблицу A и если сбой в деле удаления таблицы B. Затем я необходимо отменить запись, вставленную в таблицу A.

Мне нужно архивировать ежедневно, и в архиве будет храниться не менее миллиона записей.

Я начал с кодирования, используя исключения forall и save, но поразил логикой.

Может ли кто-нибудь помочь мне с этой логикой.

ответ

1

Прежде всего, я сомневаюсь, что такая «архивирование» - хорошая идея. Кажется, что перенос супа с одной тарелки на другую с помощью чайной ложки. Существуют лучшие решения для почти каждой задачи, скажем, с использованием разделов и, возможно, обмена разделами.

Но если вы хотите, чтобы неподвижно сделать это, вы должны написать что-то вроде этого:

procedure Move_Many_Records is 
begin 
    savepoint MMR; 
    insert /*+ APPEND */ into TARGET (fields) 
    select fields from SOURCE where {condition}; 
    delete from SOURCE 
    where id in (select id from TARGET); 
    savepoint MMR; 
exception 
    when others then 
    rollback to savepoint MMR; 
    My_Alerts.Shit_Happens('Failed to move records!'); 
    raise; 
end; 
+0

Сандерс, спасибо за reply.but мне нужно проверить для неудачных записей из вставленной таблицы А и не должны delete из таблицы B. – user2899615

+0

Вы можете сделать это, просто используя исключения в разделе без какой-либо обработки собранных ошибок. –

Смежные вопросы