oracle中temp表空间,oracle temp表空间处理方法

一.检查过程

(1) 我们可以查查数据库alert日志

例如:/u0/admin/sm/bdump/alert_sm.log

数据库中并没有报temp表空间的错,一般来说不报错,可以先不管,因为没有temp表空间可能由于没有需要用到而不释放空间。

(2) 我们可以用这个语句查一下

SELECT se.username,sid,serial#,sql_address,machine,program,tablespace,segtype,contents

from v$session se,v$sort_usage su

WHERE se.saddr=su.session_addr;

其实v$session是会话信息,v$sort_usage是正在使用排序段的会话。

可以检查当前数据库有没有语句正在用排序段,如果有的话可以使用一下语句删除寻找出的相关语句:

SQL>alter system kill session 'sid,serial#';

(3) 检查temp表空间是不是自动扩展的

SQL>select file_name,bytes/1024/1024 "MB",autoextensible,tablespace_name from dba_temp_files;

(4) 查询目前数据库中默认的临时表空间

SQL>select * from database_properties where property_name like 'DEFAULT%';

或SQL>select username,temporary_tablespace from dba_users;

二.处理过程

(1) 重起数据库,看看有没有释放临时表空间

Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。

(2) 如果检查出temp表空间是自动扩展的,建议先修改成非自动扩展

由于数据库temp表空间是自动扩展,有可能它不断使用新的空间,建议先把它变成非自动扩展。

例如:

alter database tempfile '/u0/oradata/sm/temp01.dbf' autoextend off;

(3) 如果temp表空间不是自动扩展,而且空间比较小

例如:数据库的temp表空间只有1.6G,觉得可以扩大一点,扩大3G左右

SQL> alter system temp add tempfile '/u0/oradata/sm/temp02.dbf' size 3096M;

(4) 如果temp表空间由于自动扩展变得太大,可以新建一个temp表空间把它取代

详细可参看eygle大师的"Oracle9i中如何重建与切换临时表空间"

http://www.eygle.com/archives/2006/04/oracle9i_default_temporary_tablespace.html

例如:用temp2表空间取代temp表空间

SQL> create temporary tablespace temp2 tempfile '/opt/oracle/oradata/conner/temp1.dbf' size 10M autoextend off;

SQL> alter tablespace temp add tempfile '/opt/oracle/oradata/conner/temp2.dbf' size 20M;

SQL> alter databa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值