请教各位大佬,如果遇到temp以及undo空间膨胀 ,官方有解决的办法吗,在官网没有找到
1.temp临时表空间膨胀可以通过重启数据库服务释放
2.roll表空间无法释放,若想缩小roll.dbf文件,可以考虑初始化一个新库,然后通过dexp/dimp、dts等方式将原来库中的数据迁移到新初始化的库中
roll.dbf过大的原因主要还是有事务长时间没提交或者有大事务短时间生成大量undo导致,可以检查下磁盘io性能、优化下业务处理数据逻辑,及时提交事务和拆分大事务
temp和undo空间膨胀,一般和数据库会话有关
1、temp表空间膨胀,一般是查询结果集和临时数据量太大导致
1.1查询的的时候给结果量大的sql加上分页 limit,限制结果集数量;
1.2业务上是否存在with开头的临时表、大量的分组和排序等业务sql,数据量比较大并发高,应用老师看看能否调整业务逻辑,控制降低并发量;
2、undo表空间膨胀
2.1调整UNDO_RETENTION参数
select * from v$dm_ini where para_name='UNDO_RETENTION'
sp_set_para_double_value(1,'UNDO_RETENTION',90)
2.2批量的insert、update和delete等操作,控制好数量,增加提交次数,比如原先执行1000个后提交1次,更改为执行100次提交1次
2.3数据库查看活动会话select * from v$sessions
看看是否存在update、delete和insert类型的会话释放异常,长时间执行不释放,句柄回收异常;

重启数据库会释放 TEMP表空间,但不会释放 ROLL表空间的文件大小