Вставляйте и обновляйте 4 миллиона записей каждый день - PullRequest
0 голосов
/ 04 ноября 2019

Цель аудита: я хочу вставить 1 миллион записей в одну таблицу

и снова 1 миллион записей в другую таблицу.

и обновить 1 миллион записей в таблице транзакций (производственная БД) итакже снова

обновление 1 млн. записей в другой таблице транзакций (производственная БД).

, то есть по всем 40М записям. Я получаю ошибку ORA-00060, обнаруженную взаимоблокировкой при ожидании ресурса.

На самом деле я не могу дать фиксацию между транзакциями. После успешного завершения задачи я должен совершить транзакцию. Например, если я сохраняю коммит для каждой вставки, возникает любая ошибка, которую я не могу откатить.

Я новичок в Oracle. Добрый совет.

Заранее спасибо

Flow

вставка 1M

вставка 1M

обновление 1M

обновление1M

commit;

Create or replace procedure prc_tagbalance
As
Begin
  Insert into t1 
  Select custid,mobileno,openingbal,currentvalue
  From mas_walletinfo;
Exception
  -- Error table insert using procedurr with pragma Autonomous transaction
  Return;
End;

Begin
  Insert into t2
    Select vechileid,tid,tbalance from mas_vehicleinfo;
Exception
  --error table insert
  Return;
End;

Begin
  Update mas_walletinfo set openingbal=currentvalue;
Exception
  Return;
End;
Begin
  Update mas_vechileinfo set openingbal=tbalnce:
  Commit;
Exception
  Return;
End:
End;

1 Ответ

0 голосов
/ 05 ноября 2019

ставить коммит после каждой операции.

Create or replace procedure prc_tagbalance
As
Begin
  Insert into t1 
  Select custid,mobileno,openingbal,currentvalue
  From mas_walletinfo;
 Commit;
Exception
  -- Error table insert using procedurr with pragma Autonomous transaction
  Return;
End;

Begin
  Insert into t2
    Select vechileid,tid,tbalance from mas_vehicleinfo;
 Commit;
Exception
  --error table insert
  Return;
End;

Begin
  Update mas_walletinfo set openingbal=currentvalue;
 Commit;
Exception
  Return;
End;
Begin
  Update mas_vechileinfo set openingbal=tbalnce:
  Commit;
Exception
  Return;
End:
End;
...