Oracle临时表空间暴满的原因与解决方法
伍云召怎么死的Oracle临时表空间暴满的原因与解决⽅法
  Oracle临时表空间主要⽤来做查询和存放⼀些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进⾏排序。
重启数据库可以释放临时表空间,如果不能重启实例,⽽⼀直保持问题sql语句的执⾏,temp表空间会⼀直增长。直到耗尽硬盘空间。
数据库temp临时表空间增⼤,⼀般在数据安装时设置临时表空间⼤⼩,默认的情况下都是设置为⾃动增长。这样会引起⼀个问题:在数据库使⽤中temp表空间会⾃动扩展的越来越⼤,造成磁盘空间使⽤不⾜。
  引起临时表空间增⼤主要使⽤在以下⼏种情况:
  1、order by or group by (disc sort占主要部分);
  2、索引的创建和重创建;
  3、distinct操作;
  4、union & intersect & minus sort-merge joins;
  5、Analyze 操作;
  6、有些异常也会引起TEMP的暴涨。
解决⽅法
ORA-01652: ⽆法通过 128 (在表空间 TEMP 中) 扩展 temp 段
查询默认临时表空间:
SQL> select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
查询临时表空间状态:
供应链管理SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
⽅法1.重启实例
实例重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种⽅法缺少了⼀点的应⽤机会,不过这种⽅法还是很好⽤的。
⽅法2.增⼤临时⽂件⼤⼩
SQL> alter database tempfile ‘/oradata/orcl/temp01.dbf’ resize 20000m;
注:数据⽂件最⼤为32GB,如果现有数据⽂件已达到32GB将⽆法resize成更⼤值,只能缩⼩。
⽅法3.将临时数据⽂件设为⾃动扩展
SQL> alter database tempfile ‘/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;
⽅法4.查看⼀下谁在⽤临时段
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;
SQL> Alter system kill session 'sid,serial#';
把TEMP表空间回缩⼀下
SQL> Alter tablespace TEMP coalesce;
⽅法5.向临时表空间中添加数据⽂件
SQL> alter tablespace temp add tempfile ‘/oradata/orcl/temp02.dbf’ size 10000m;
⽅法6.临时表空间组
1)创建临时表空间组:
create temporary tablespace tempts1 tempfile '/home/oracle/temp1_02.dbf' size 2M tablespace group group1; create temporary tablespace tempts2 tempfile '/home/oracle/temp2_02.dbf' size 2M tablespace group group2;  2)查询临时表空间组:dba_tablespace_groups视图城市规划专业就业
select * from dba_tablespace_groups;
GROUP_NAME                    TABLESPACE_NAME
------------------------------ ------------------------------
GROUP1                        TEMPTS1
GROUP2                        TEMPTS2
3)将表空间从⼀个临时表空间组移动到另外⼀个临时表空间组:
alter tablespace tempts1 tablespace group GROUP2 ;
年轻人提前还房贷是亏还是赚select * from dba_tablespace_groups;
GROUP_NAME                    TABLESPACE_NAME
------------------------------ ------------------------------
墨西哥VS波兰预测
要求配置低的网游GROUP2                        TEMPTS1
GROUP2                        TEMPTS2
4)把临时表空间组指定给⽤户
alter user scott temporary tablespace GROUP2;
5)在数据库级设置临时表空间
alter database <db_name> default temporary tablespace GROUP2;
6)删除临时表空间组 (删除组成临时表空间组的所有临时表空间)
drop tablespace tempts1 including contents and datafiles;
select * from dba_tablespace_groups;
GROUP_NAME                    TABLESPACE_NAME
------------------------------ ------------------------------
GROUP2                        TEMPTS2
drop tablespace tempts2 including contents and datafiles;
select * from dba_tablespace_groups;
GROUP_NAME                    TABLESPACE_NAME
对临时表空间进⾏shrink(11g新增的功能)
--将temp表空间收缩为20M
alter tablespace temp shrink space keep 20M;
-
-⾃动将表空间的临时⽂件缩⼩到最⼩可能的⼤⼩
ALTER TABLESPACE temp SHRINK TEMPFILE ’/u02/oracle/data/lmtemp02.dbf’;
查询默认临时表空间:
  SQL> select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
查询临时表空间状态:
  SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。