oracle压缩数据库表空间,压缩暴涨的oracle数据库临时表空间

近日在维护oracle数据库时发现临时表空间的数据文件temp.dbf从最初的几个G猛增到32G,达到上了磁盘文件的上限。搜索了一下,现将查询到的临时表空间的相关资料以及处理方法简要归纳如下:

1、临时表空间的作用:

临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。

当临时表空间不足时,表现为运算速度异常的慢,并且临时表空间迅速增长到最大空间(扩展的极限),并且一般不会自动清理了。

2、迅速增长的原因:

一般原因是sql算法不正确,可能导致出现了迪卡尔积。

另外一个原因是视图的创建问题。Oracle数据库中多张表联合查询时,极限的表单数量为4张,一般将以为3张!有时需要大于4张表联合查询时,怎么办呢?可以建立子视图:

如view1(联合table0,table1,table2),view2(联合table0,table3,table4),view3(联合table0,table5,table6)

然后将view1、view2、view3联合成view4。这样可以解决临时表空间迅速增长的问题!

3、临时表空间异常增涨后的处理

临时表空间异常暴涨后,极大的占用了磁盘空间,同时会影响普通查询的速度,以下方法可以达到清理临时表空间数据文件temp.dbf的大小

方法一、在系统不繁忙的时候,执行命令缩减临时表空间数据文件的尺寸

alter database tempfile '/u01/oradata/site/temp01.dbf' resize

10240M;

方法二、

a、创建中转临时表空间

create temporary tablespace temp_tmp tempfile

'/u01/oradata/site/temp_tmp.dbf' size 10240m;

b、改变缺省临时表空间为刚刚创建的新临时表空间temp_tmp

alter database default temporary tablespace temp_tmp;

c、删除原有的临时表空间以及数据文件

drop tablespace temp including contents and datafiles;

d、重新创建临时表空间

create temporary tablespace temp tempfile

'/u01/oradata/site/temp01.dbf' size 10240m;

e、重置缺省临时表空间为新建的temp表空间

alter database default temporary tablespace temp;

f、删除中转用临时表空间

drop tablespace temp_tmp including contents and datafiles;

4、临时表空间使用注意:

a、临时表空间是用于在进行排序操作(如大型查询,创建索引和联合查询期间存储临时数据),每个用户都可以有一个临时表空间

b、对于大型操作频繁,(大型查询,大型分类查询,大型统计分析等),应指定单独的临时表空间,以方便管理

c、分配用户单独临时表空间,一般是针对大型产品数据库,OLTP数据库,数据库仓库。对于小型产品不需要单独制定临时表空间,使用默认临时表空间

注:如果临时表空间异常增涨很快,则要考虑是否应用的sql语句产生了笛卡儿积,可以通过stactpack

进行分析查出问题所在,从而保证数据库的正常运行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值