Oracle临时表空间过大问题解决
2009-06-11 10:40
375 查看
来源:考试大 2008/11/29
---------------------------------------------------
查询数据库服务器时,发现数据库服务器磁盘使用空间达到了98%,分析总共的数据文件也不可能达到如此大,经过查询发现原来临时表空间的使用情况达到了 32G,导致磁盘空间使用紧张。搜索了相应的文档与资料后,查出临时表空间主要使用在:
- 索引创建或重创建。
- ORDER BY or GROUP BY (这个是‘罪魁祸首’)
- DISTINCT 操作。
- UNION & INTERSECT & MINUS - Sort-Merge joins. - Analyze 操作
- 有些异常将会引起temp暴涨(这个也很有可能)
下面是重新创建一个临时表空间,把原来的默认临时表空间drop掉(包括里面的临时数据文件)再重新建立
SQL> create temporary tablespace temp2
2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp02.pdf' size 512M reuse
3 autoextend on next 640k maxsize unlimited;
Tablespace created.
SQL> alter database default temporary tablespace temp2;
Database altered.
SQL> drop tablespace temp including contents and datafiles;
Tablespace dropped.
(注意:由于临时表空间的数据文件比较大,所以这步可能会花费比较长的时间)
SQL> create temporary tablespace temp
2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp01.pdf' size 512M reuse
3 autoextend on next 640K maxsize unlimited;
Tablespace created.
SQL> alter database default temporary tablespace temp;
Database altered.
SQL> drop tablespace temp2 including contents and datafiles;
Tablespace dropped.
SQL> exit
以上的方法只是暂时释放了临时表空间的磁盘占用空间,是治标但不是治本的方法,真正的治本的方法是找出数据库中消耗资源比较大的sql语句,然后对其进行优化处理。下面是查询在sort排序区使用的执行耗时的SQL
Select se.username,se.sid,su.extents,su.blocks*to_number(rtrim(p.value))as Space,tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash and s.address=su.sqladdr
order by se.username,se.sid
来源:考试大-Oracle认证考试
---------------------------------------------------
查询数据库服务器时,发现数据库服务器磁盘使用空间达到了98%,分析总共的数据文件也不可能达到如此大,经过查询发现原来临时表空间的使用情况达到了 32G,导致磁盘空间使用紧张。搜索了相应的文档与资料后,查出临时表空间主要使用在:
- 索引创建或重创建。
- ORDER BY or GROUP BY (这个是‘罪魁祸首’)
- DISTINCT 操作。
- UNION & INTERSECT & MINUS - Sort-Merge joins. - Analyze 操作
- 有些异常将会引起temp暴涨(这个也很有可能)
下面是重新创建一个临时表空间,把原来的默认临时表空间drop掉(包括里面的临时数据文件)再重新建立
SQL> create temporary tablespace temp2
2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp02.pdf' size 512M reuse
3 autoextend on next 640k maxsize unlimited;
Tablespace created.
SQL> alter database default temporary tablespace temp2;
Database altered.
SQL> drop tablespace temp including contents and datafiles;
Tablespace dropped.
(注意:由于临时表空间的数据文件比较大,所以这步可能会花费比较长的时间)
SQL> create temporary tablespace temp
2 tempfile '/home/oracle/oracle/product/10.2.0/oradata/hatest/temp01.pdf' size 512M reuse
3 autoextend on next 640K maxsize unlimited;
Tablespace created.
SQL> alter database default temporary tablespace temp;
Database altered.
SQL> drop tablespace temp2 including contents and datafiles;
Tablespace dropped.
SQL> exit
以上的方法只是暂时释放了临时表空间的磁盘占用空间,是治标但不是治本的方法,真正的治本的方法是找出数据库中消耗资源比较大的sql语句,然后对其进行优化处理。下面是查询在sort排序区使用的执行耗时的SQL
Select se.username,se.sid,su.extents,su.blocks*to_number(rtrim(p.value))as Space,tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash and s.address=su.sqladdr
order by se.username,se.sid
来源:考试大-Oracle认证考试
相关文章推荐
- Oracle临时表空间问题解决一例
- 解决oracle exp/imp导入表空间过大问题
- Oracle安装过程中物理内存检查及临时temp空间不足问题解决
- Oracle安装过程中物理内存检查及临时temp空间不足问题解决
- Oracle 通过触发器 来创建 同步临时表 及处理 通过 自治事务 来解决 查询 基表的问题
- Oracle安装过程物理内存检查及临时temp空间不足解决办法
- Oracle解决查询表空间速度慢的问题
- Oracle归档日志空间不足引发的问题及解决方法
- oracle解决因drop命令生成临时表名的问题(如表分区)
- oracle创建临时表空间大小问题
- Oracle 临时表空间过大问题解决
- Oracle SYSAUX空间问题解决
- Oracle安装过程物理内存检查及临时temp空间不足解决办法
- oracle临时表空间过大的原因
- 【转】oracle的临时表空间写满磁盘空间解决改问题的步骤
- undo retention Oracle 10g UNDO表空间过大导致磁盘空间不足的解决
- 解决MongoDB 日志文件过大,清理后还占用很大磁盘空间的问题
- Oracle 临时表空间过大问题解决-性能调优
- oracle 11g 安装关于swap空间不足问题解决
- ORACLE的还原表空间UNDO写满磁盘空间,解决该问题的具体步骤