oracle批量插入優化方案

Posted kakaisgood

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle批量插入優化方案相关的知识,希望对你有一定的参考价值。

今天聽DBA説如果從一個表批量查詢出一批數據之後批量插入另外一張表的優化方案:

1)不寫歸檔日誌;

2)採用獨佔

關於insert /*+ append */我們需要注意以下三點:

a、非歸檔模式下,只需append就能大量減少redo的產生;歸檔模式下,只有append+nologging才能大量減少redo。

b、insert /*+ append */時會對錶加鎖(排它鎖),會阻塞表上的除了select以外所有DML語句;

 1 --不寫日誌設置
 2 ALTER TABLE my_flosta_all_571 NOLOGGING;
 3 
 4 insert /*+APPEND */ into my_flosta_all_571(OID,P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR)
 5 select OID,to_date(‘20180103‘,‘yyyyMMdd‘) as P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR
 6 from my_flosta_all_571 where p_day=to_date(‘20171231‘,‘yyyyMMdd‘);
 7 commit;
 8 
 9 insert /*+APPEND */ into my_flosta_all_571(OID,P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR)
10 select OID,to_date(‘20180104‘,‘yyyyMMdd‘) as P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR
11 from my_flosta_all_571 where p_day=to_date(‘20171231‘,‘yyyyMMdd‘);
12 commit;

以上是关于oracle批量插入優化方案的主要内容,如果未能解决你的问题,请参考以下文章

Oracle数据的批量插入

oracle 在xml中批量插入,批量修改及多组条件查询

Oracle 通过存储过程进行批量插入。花费太多时间

SQLAlchemy 在 Oracle DB 中批量插入 blob 数据

捕获 cx_Oracle executemany() 批量插入错误“期望数字”

mysql存储过程怎样批量插入数据