Oracle临时表空间过大如何解决
本篇内容主要讲解“Oracle临时表空间过大如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle临时表空间过大如何解决”吧!
1.临时表空间的使用情况题
SELECTD.tablespace_name,SPACE"SUM_SPACE(M)",blocks"SUM_BLOCKS",used_space"USED_SPACE(M)",Round(Nvl(used_space,0)/SPACE*100,2)"USED_RATE(%)",SPACE-used_space"FREE_SPACE(M)"FROM(SELECTtablespace_name,Round(SUM(bytes)/(1024*1024),2)SPACE,SUM(blocks)BLOCKSFROMdba_temp_filesGROUPBYtablespace_name)D,(SELECTtablespace,Round(SUM(blocks*8192)/(1024*1024),2)USED_SPACEFROMv$sort_usageGROUPBYtablespace)FWHERED.tablespace_name=F.tablespace(+)ANDD.tablespace_namelike'TEMP%';
查看临时表空间的总大小和最大扩展大小(能看到数据文件)
selectfile_name,tablespace_name,bytes/1024/1024MB,autoextensible,maxbytes/1024/1024MAX_MBfromdba_temp_files;
增加临时表空间的大小
altertablespacetemp1addtempfile'/data/prod/proddata/temp013.dbf'size4G;altertablespacetemp2addtempfile'/data/prod/proddata/temp024.dbf'size4G;方案二:重建临时表空间,解决临时表空间过大的问题。
0.查看目前默认的临时表空间
select*fromdatabase_propertieswhereproperty_name='DEFAULT_TEMP_TABLESPACE';
1.创建中转临时表空间
createtemporarytablespacetemp3tempfile'/data/prod/proddata/temp31.dbf'size4Gtablespacegrouptemp;createtemporarytablespacetemp4tempfile'/data/prod/proddata/temp41.dbf'size4Gtablespacegrouptemp;
2.删除原临时表空间组中的临时表空间
2.1从默认临时表空间组temp中移除temp1和temp2;
ALTERTABLESPACEtemp1TABLESPACEGROUP'';ALTERTABLESPACEtemp2TABLESPACEGROUP'';
2.2删除临时表空间temp1和temp2
droptablespacetemp1includingcontentsanddatafiles;droptablespacetemp2includingcontentsanddatafiles;
2.3如果删除表空间的时候,hang住的话,可以使用下列语句,先把运行在temp临时表空间的sql语句kill掉,这样的sql语句多为排序的语句
Selectse.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))asSpace,tablespace,segtype,sql_textfromv$sort_usagesu,v$parameterp,v$sessionse,v$sqlswherep.name='db_block_size'andsu.session_addr=se.saddrands.hash_value=su.sqlhashands.address=su.sqladdrorderbyse.username,se.sid;
2.4 kill相关进程
altersystemkillsession'584,23181';altersystemkillsession'196,64972';altersystemkillsession'262,19832';altersystemkillsession'324,40273';altersystemkillsession'326,38967';altersystemkillsession'1266,54596';
or 重启DB 关闭应用>关闭监听>shutdown immediate startup>启动监听>执行以下操作后打开应用
2.5 创建临时表空间,并加入临时表空间组temp
createtemporarytablespacetemp1tempfile'/data/prod/proddata/temp11.dbf'size4Gtablespacegrouptemp;createtemporarytablespacetemp2tempfile'/data/prod/proddata/temp21.dbf'size4Gtablespacegrouptemp;
2.6 给临时表空间组temp的成员temp1,temp2,temp3,temp4 各增加一个成员。
altertablespacetemp1addtempfile'/data/prod/proddata/temp12.dbf'size4G;altertablespacetemp2addtempfile'/data/prod/proddata/temp22.dbf'size4G;altertablespacetemp3addtempfile'/data/prod/proddata/temp32.dbf'size4G;altertablespacetemp4addtempfile'/data/prod/proddata/temp42.dbf'size4G;
查看临时表空间组temp
select*fromdba_tablespace_groups;
3 临时表空间组仍然使用99.98%
为每个临时表空间添加4G空间
altertablespacetemp1addtempfile'/data/prod/proddata/temp13.dbf'size4G;altertablespacetemp2addtempfile'/data/prod/proddata/temp23.dbf'size4G;altertablespacetemp3addtempfile'/data/prod/proddata/temp33.dbf'size4G;altertablespacetemp4addtempfile'/data/prod/proddata/temp43.dbf'size4G;
到此,相信大家对“Oracle临时表空间过大如何解决”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。