执行存储过程del_tab时出现下面的错误
BEGIN del_tab; END;
*
ERROR 位于第 1 行:
ORA-01555: 快照过旧: 回退段号 7 在名称为 "_SYSSMU7$" 过小
ORA-06512: 在"LICHENG.DEL_TAB", line 5
ORA-06512: 在line 1 存储过程内容为:
create or replace procedure del_tab is
cursor mycur is
select clbh from xxfl where jgsj <=add_months(sysdate,-1);
begin
for var_clbh in mycur loop
delete from tpxx where tpid=var_clbh.clbh;
delete from xxfl where clbh=var_clbh.clbh;
delete from bjxx where clbh=var_clbh.clbh;
commit;
end loop;
commit;
end; 执行一次存储过程可能要删除10万-20万张图片
BEGIN del_tab; END;
*
ERROR 位于第 1 行:
ORA-01555: 快照过旧: 回退段号 7 在名称为 "_SYSSMU7$" 过小
ORA-06512: 在"LICHENG.DEL_TAB", line 5
ORA-06512: 在line 1 存储过程内容为:
create or replace procedure del_tab is
cursor mycur is
select clbh from xxfl where jgsj <=add_months(sysdate,-1);
begin
for var_clbh in mycur loop
delete from tpxx where tpid=var_clbh.clbh;
delete from xxfl where clbh=var_clbh.clbh;
delete from bjxx where clbh=var_clbh.clbh;
commit;
end loop;
commit;
end; 执行一次存储过程可能要删除10万-20万张图片
解决方案 »
- plsql中执行计划-临时空间
- exp命令能否导出远程数据库(非局域网的)?
- 求教——用SQL 或 触发器实现在数据表一列中统一追加相同的内容!!!
- 关于更新clob字段的问题
- 大型海量数据的电子商务网站的数据库挑选
- oracle 修改用户密码的时候为什么报这个错:ORA-00988: 口令缺失或无效?
- [菜鸟一问]如何配置oracle服务器,使得其它客户端可以连上数据库,如何连接?
- 怎样设置每天凌晨2:00执行job?
- 一个蠢笨蠢笨的问题,connect interal 输入什么口令?!!!!!help me!
- 请教一个关于程序用户的问题
- 如何跟踪客户端执行了哪些SQL指令?
- oracle rman
当某一个事务回退数据大于回退段所容纳的数量时,oracle根据回退段的存储参数next进行区扩展,如果所有区的数量等于存储参数maxnextents仍不够用时,则产生"快照太旧"(Snapshot Too Old)错误.所以你在存储过程的循环里要加一个计数值,判断每删除3000笔或更多一些数据时,就要commit一次
估计undo表空间加大一些问题就可以解决。
或者把
delete from tpxx where tpid=var_clbh.clbh;
delete from xxfl where clbh=var_clbh.clbh;
delete from bjxx where clbh=var_clbh.clbh;
commit;
改为
delete from tpxx where tpid=var_clbh.clbh;
commit;
delete from xxfl where clbh=var_clbh.clbh;
commit;
delete from bjxx where clbh=var_clbh.clbh;
commit;
再要不然就像楼上说的,分批吧。