Oracle临时表空间过大解决方案

Oracle临时表空间主要是用来做查询和存放一些缓存的数据的,磁盘消耗的一个主要原因是需要对查询的结果进行排序,那么如何解决临时表空间过大?本篇文章重点为大家讲解一下Oracle临时表空间过大解决方案。

创新互联公司是一家集网站建设,四方台企业网站建设,四方台品牌网站建设,网站定制,四方台网站建设报价,网络营销,网络优化,四方台网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

方案一:增加临时表空间的大小

–1.临时表空间的使用情况题

SELECT D.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 (SELECT tablespace_name,
Round(SUM(bytes) / (1024 * 1024), 2) SPACE,
SUM(blocks) BLOCKS
FROM dba_temp_files
GROUP BY tablespace_name) D,
(SELECT tablespace,
Round(SUM(blocks * 8192) / (1024 * 1024), 2) USED_SPACE
FROM v$sort_usage
GROUP BY tablespace) F
WHERE D.tablespace_name = F.tablespace(+)
AND D.tablespace_name like 'TEMP%';

–查看临时表空间的总大小和最大扩展大小(能看到数据文件)

select file_name,
tablespace_name,
bytes / 1024 / 1024 MB,
autoextensible,
maxbytes / 1024 / 1024 MAX_MB
from dba_temp_files;

–增加临时表空间的大小

alter tablespace temp1 add tempfile '/data/prod/proddata/temp013.dbf' size 4G;
alter tablespace temp2 add tempfile '/data/prod/proddata/temp024.dbf' size 4G;

方案二:重建临时表空间,解决临时表空间过大的问题。

–0.查看目前默认的临时表空间

select *
from database_properties
where property_name = 'DEFAULT_TEMP_TABLESPACE';

–1.创建中转临时表空间

create temporary tablespace temp3 tempfile '/data/prod/proddata/temp31.dbf' size 4G tablespace group temp;
create temporary tablespace temp4 tempfile '/data/prod/proddata/temp41.dbf' size 4G tablespace group temp;

–2.删除原临时表空间组中的临时表空间

–2.1从默认临时表空间组temp中移除temp1和temp2;

ALTER TABLESPACE temp1 TABLESPACE GROUP '';
ALTER TABLESPACE temp2 TABLESPACE GROUP '';

–2.2删除临时表空间temp1和temp2

drop tablespace temp1 including contents and datafiles;
drop tablespace temp2 including contents and datafiles;

–2.3如果删除表空间的时候,hang住的话,可以使用下列语句,先把运行在temp临时表空间的sql语句kill掉,这样的sql语句多为排序的语句

Select se.username,
se.sid,
se.serial#,
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;

–2.4 kill相关进程

alter system kill session '584,23181';
alter system kill session '196,64972';
alter system kill session '262,19832';
alter system kill session '324,40273';
alter system kill session '326,38967';
alter system kill session '1266,54596';

or –重启DB –关闭应用–>关闭监听–>shutdown immediate –startup–>启动监听–>执行以下操作后打开应用

–2.5 创建临时表空间,并加入临时表空间组temp

create temporary tablespace temp1 tempfile '/data/prod/proddata/temp11.dbf' size 4G tablespace group temp;
create temporary tablespace temp2 tempfile '/data/prod/proddata/temp21.dbf' size 4G tablespace group temp;

–2.6 给临时表空间组temp的成员temp1,temp2,temp3,temp4 各增加一个成员。

alter tablespace temp1 add tempfile '/data/prod/proddata/temp12.dbf' size 4G;
alter tablespace temp2 add tempfile '/data/prod/proddata/temp22.dbf' size 4G;
alter tablespace temp3 add tempfile '/data/prod/proddata/temp32.dbf' size 4G;
alter tablespace temp4 add tempfile '/data/prod/proddata/temp42.dbf' size 4G;

–2.7查看临时表空间组temp

select * from dba_tablespace_groups;

–3 临时表空间组仍然使用99.98%,

–3.1为每个临时表空间添加4G空间

alter tablespace temp1 add tempfile '/data/prod/proddata/temp13.dbf' size 4G;
alter tablespace temp2 add tempfile '/data/prod/proddata/temp23.dbf' size 4G;
alter tablespace temp3 add tempfile '/data/prod/proddata/temp33.dbf' size 4G;
alter tablespace temp4 add tempfile '/data/prod/proddata/temp43.dbf' size 4G;

新闻名称:Oracle临时表空间过大解决方案
URL分享:http://www.shufengxianlan.com/qtweb/news1/85601.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联