关于各项目临时表空间占用磁盘空间比较大,并且再持续增长的解决方案

一、临时表空间的作用
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序,下面的操作都会
使用大量的temporary段 :
索引create或rebuild;
Order by 或 group by;
Distinct 操作;
Union 或 intersect 或 minus;
Sort-merge joins;
IMP/EXP操作;
二、临时表空间建多大合适,个人建议
1.一般的业务系统频繁使用临时段的需要单独创建临时表空间
2.临时表空间的太大或太小都会影响数据库性能,一般建议根据业务系统一天产生的大小作为初始大小。
3.临时表空间需要定期维护

三、oracle11g 临时表空间收缩(只针对oracle11g以后版本)

1. 常用查询临时表空间视图
select * from v$datafile //查询数据文件
select * from v$tablespace //查询表空间信息
select * from v$tempfile //查询临时文件信息
select S.tablespace_name,S.TABLESPACE_SIZE/1024/1024 TSIZE,S.ALLOCATED_SPACE/1024/1024 USIZE,S.FREE_SPACE/1024/1024 FFIZE from dba_temp_free_space S //查询临时表空间使用情况

2. 临时表空间收缩
收缩临时表空间:
alter tablespace USER_TEMP_TBS shrink space keep 200M;
收缩临时文件:
ALTER TABLESPACE USER_TEMP_TBS SHRINK TEMPFILE '/opt/oracle/oradata/user_temp_tbs01.dbf' keep 200M;

以上操作已经在测试环境中验证过,可以立即收缩空间,对数据库无太大影响,如果是生产库建议晚上做以上操作,否则会出现等待事件。

猜你喜欢

转载自mogee.iteye.com/blog/2349002