解决方案 »
- 关于上一条数据和下一条数据
- 请教用存储过程生成文件时如何实现换行?
- 急问ORACLE死锁问题????
- Oracle安装问题:给xp安装,进度条到76% 就停止不前了,一直开着机子一整夜还是那样,有安装日志,求助高人!!!!!!!!!!!!!
- 我的if 条件写错了吗?
- 求教一个oracle sql
- ★★★ 讨论Oracle数据字典查询SQL (有点小问题恳请指正,谢谢!)
- 大家帮着看一下这个统计怎么来写SQL?
- 想把不同表中相同字段名称的表找出来。
- proc编译时区分时间的问题
- 求助大神,数据库的多表大数据连接查询应如何优化?
- 在plsql 创建一个用户叫张三,并给他dba权限,登陆时出现ORA-01031权限不足,怎样解决,求解,。。。。。。
你这种方法很有可能导致AA表的数据不能完全备份到bb表。
insert和delete两个语句的where语句取到的时间也应该是一致的
这么写没什么问题
若该动作发生在业务很空闲的时间段里,也可以考虑增加 并行
你这种方法很有可能导致AA表的数据不能完全备份到bb表。这个字段确实精确到秒了,请问是不是因为job执行的时刻导致不能完全备份?
insert和delete两个语句的where语句取到的时间也应该是一致的
这么写没什么问题
谢谢,可是总觉得哪里不对
delete /* APPEND PARALLEL(BB,4) * from AA where loadtime<temp_data;
你这种方法很有可能导致AA表的数据不能完全备份到bb表。这个字段确实精确到秒了,请问是不是因为job执行的时刻导致不能完全备份?
对啊,如果你的job执行时刻有问题,可能导致取到的sysdate有问题,导致有些记录漏掉。
建议你将时间变量的时分秒固定
由于job执行时间问题,最好类似于这样设定:
select trunc(sysdate-30) into temp_date from dual;
你这种方法很有可能导致AA表的数据不能完全备份到bb表。这个字段确实精确到秒了,请问是不是因为job执行的时刻导致不能完全备份?
对啊,如果你的job执行时刻有问题,可能导致取到的sysdate有问题,导致有些记录漏掉。
建议你将时间变量的时分秒固定
恩,不错的建议,谢啦!!☆⌒(*^-゜)v
insert into BB select * from AA where AA.loadtime<temp_date;
delete from AA where loadtime<temp_data;
因为数量很大,最好在loadtime 要有索引
对于删除表中大批量数据库delete from AA where loadtime<temp_data; 建议改成存储过程批量删除 2万条提交一次。例如如下
create or replace procedure wwdelete_table
is
i number(10);
row varchar2(60);
cursor cur is select rowid from AA where loadtime<temp_data;
begin
open cur;
loop
fetch cur into row;
execute immediate 'delete from AA where rowid=:1'
using row;
i:=i+1;
if i>20000 then
commit;
i:=0;
end if;
exit when cur%notfound;
end loop;
commit;
close cur;
exception
when others then
rollback;
end wwdelete_table;
这样会比一条delete语句删除效率高很多
delete from AA where loadtime<temp_data;可能会引起 undo 暴涨,每次只导 1W 条,按 PK 区分。
我再研究下,感谢