数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle临时表空间过大问题解决


发布日期:2019年10月09日
 
Oracle临时表空间过大问题解决

查询数据库服务器时发现数据库服务器磁盘使用空间达到了%分析总共的数据文件也不可能达到如此大经过查询发现原来临时表空间的使用情况达到了 G导致磁盘空间使用紧张搜索了相应的文档与资料后查出临时表空间主要使用在

索引创建或重创建

ORDER BY or GROUP BY (这个是罪魁祸首

DISTINCT 操作

UNION & INTERSECT & MINUS SortMerge joins Analyze 操作

有些异常将会引起temp暴涨(这个也很有可能)

下面是重新创建一个临时表空间把原来的默认临时表空间drop掉(包括里面的临时数据文件)再重新建立

SQL> create temporary tablespace temp

tempfile &#;/home/oracle/oracle/product//oradata/hatest/temppdf&#; size M reuse

autoextend on next k maxsize unlimited;

Tablespace created

SQL> alter database default temporary tablespace temp;

Database altered

SQL> drop tablespace temp including contents and datafiles;

Tablespace dropped

(注意由于临时表空间的数据文件比较大所以这步可能会花费比较长的时间)

SQL> create temporary tablespace temp

tempfile &#;/home/oracle/oracle/product//oradata/hatest/temppdf&#; size M reuse

autoextend on next K maxsize unlimited;

Tablespace created

SQL> alter database default temporary tablespace temp;

Database altered

SQL> drop tablespace temp including contents and datafiles;

Tablespace dropped

SQL> exit

以上的方法只是暂时释放了临时表空间的磁盘占用空间是治标但不是治本的方法真正的治本的方法是找出数据库中消耗资源比较大的sql语句然后对其进行优化处理下面是查询在sort排序区使用的执行耗时的SQL

Select seusernamesesidsuextentssublocks*to_number(rtrim(pvalue))as Spacetablespacesegtypesql_text

from v$sort_usage suv$parameter pv$session sev$sql s

where pname=&#;db_block_size&#; and susession_addr=sesaddr and shash_value=susqlhash and saddress=susqladdr

order by seusernamesesid

上一篇:如何掌握Oracle中的时间间隔型数据

下一篇:修改oracle10g的字符集