各位高手,现在做的系统中有一个用户表,1700多万条记录,另有一个用户信息表,与用户表的ID对应,现在要根据用户表来插入用户信息表的内容,对用户表使用了一个游标,每循环一次,取得相应信息,写入到用户信息表中,用户信息表的字段比较多,每个循环里面的操作挺多,并且不能放到循环外面,现在的运行时间很久,并且经常会出现ORA-01555错误,这样的情况怎么解决?
解决方案 »
- 找出pp2表中num重复的记录
- oracle+proc如何对不同的数据表中的数据查询
- 关于MV同步表的问题:有选择性的同步、表结构变化的处理
- 现在由我每天给大家讲课!请指示!oracle第一节课
- oracle 中解析计算公式
- can not start oracledbconsole errorcode 1
- 在哪里可以下载oracle 11g forms builder,急>>>>>>>>>>>>
- SQLLOAD LOG 一句话不解 value used for ROWS parameter changed from 64 to 41
- 如何在sql语句里写上流水号?
- oracle——协议适配器错误问题
- oracle表的默认值失效
- toad to oracle里的function
ORA-01555 snapshot too old: rollback segment number string with name "string" too smallCause: Rollback records needed by a reader for consistent read are overwritten by other writers.Action: If in Automatic Undo Management mode, increase the setting of UNDO_RETENTION. Otherwise, use larger rollback segments.
1、优化SQL,如不能优化,就把大查询分为小块分别进行。
2、加大回滚段或撤销段
3、用撤销段时增大UNDO_RETENTION参数值,该值为过期数据在撤销段中保留时间。
4、10g的话,配合第三点可在撤销表空间上启用撤销保留保证retention guarantee特性。
2.增加undo空间和undo_retention。 只要足够大都能解决.
3.把大业务的commit分成多个子commit。
如果实在没别的方法,你就配合retention guarantee来用。
我以前也是这样做的,分成小块一部分一部分的运行。