ORACLE 临时表空间使用率过高的原因及临时解决方案

简介:          数据库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的暴涨。

 

解决temp临时表空间大小问题:

一.直接缩小temp表空间大小

alter database tempfile 'd:powerdmsdb\dmsdb\temp01.dbf' resize 1024M;

此语句会直接修改temp表空间的大小,但可能会执行不成功,因为当temp使用率为100%或当前有会话占用时,temp表空间是无法缩小的。

查询当前会话:

SELECT se.username, 
       se.sid, 
       se.serial#, 
       se.sql_address, 
       se.machine, 
       se.program, 
       su.tablespace, 
       su.SEGTYPE, 
       su.CONTENTS
  FROM v$session se, 
       v$sort_usage su 
 WHERE se.saddr=su.session_addr 

利用此sql语句查询当前会话,然后kill当前会话:

Alter system kill session 'sid,serial#'

执行此语句后再对temp表空间resize空间大小就可以了。

注:此方法只是对temp表空间做临时性的缩小,以后还会继续增大。 

方法二:

对temp临时表空间重建并设置增长上限值,设置这个值时要预先估算设置合理,不然当增大到此值时会出错,在合理的范围内增加到上限值时数据库会自动释放temp临时表空间。

重建temp临时表空间:

1.--启动数据库

startup 

2.--创建中转临时表空间
create TEMPORARY TABLESPACE TEMP2 TEMPFILE 'D:\PowerDmsDB\DMSDB\TEMP02.DBF' SIZE 2048M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 5120M; 
3.--改变缺省临时表空间 为刚刚创建的新临时表空间temp2
alter database default temporary tablespace temp2;   
4.--删除原来临时表空间
drop tablespace temp including contents and datafiles;

5.--重新创建临时表空间
create TEMPORARY TABLESPACE TEMP TEMPFILE 'D:\PowerDmsDB\DMSDB\TEMP01.DBF' SIZE 2048M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE 5120M;
                                  
6.--重置缺省临时表空间为新建的temp表空间
alter database default temporary tablespace temp; 

7.--删除中转用临时表空间
drop tablespace temp2 including contents and datafiles;

 8.--重新指定用户表空间为重建的临时表空间
alter user zxd temporary tablespace temp; 

至此临时表空间增长过大可以更改完成。 

下面是查询在sort排序区使用的执行耗时的SQL:
Select se.username,se.sid,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

此语句可以做跟踪查看分析时用。

相关文章
|
1月前
|
SQL Oracle 关系型数据库
Oracle临时表详解
Oracle临时表详解
|
5月前
|
消息中间件 Oracle 关系型数据库
Flink CDC确实支持Oracle分区表的CDC,但是在配置时需要特别注意。以下是一些可能的解决方案
Flink CDC确实支持Oracle分区表的CDC,但是在配置时需要特别注意。以下是一些可能的解决方案
44 1
|
8月前
|
Oracle 关系型数据库 数据库
一篇文章教你学会使用Oracle 数据库中、WITH 临时表名 AS ()语法
一篇文章教你学会使用Oracle 数据库中、WITH 临时表名 AS ()语法
74 0
|
11月前
|
SQL 存储 Oracle
Oracle-临时表空间(组)解读
Oracle-临时表空间(组)解读
440 0
|
SQL 分布式计算 运维
【大数据开发运维解决方案】Sqoop增量同步mysql/oracle数据到hive(merge-key/append)测试文档
上一篇文章介绍了sqoop全量同步数据到hive, 本片文章将通过实验详细介绍如何增量同步数据到hive,以及sqoop job与crontab定时结合无密码登录的增量同步实现方法。
【大数据开发运维解决方案】Sqoop增量同步mysql/oracle数据到hive(merge-key/append)测试文档
|
SQL 运维 分布式计算
【大数据开发运维解决方案】Sqoop全量同步mysql/Oracle数据到hive
前面文章写了如何部署一套伪分布式的handoop+hive+hbase+kylin环境,也介绍了如何在这个搭建好的伪分布式环境安装配置sqoop工具以及安装完成功后简单的使用过程中出现的错误及解决办法, 接下来本篇文章详细介绍一下使用sqoop全量同步oracle/mysql数据到hive,这里实验采用oracle数据库为例,
【大数据开发运维解决方案】Sqoop全量同步mysql/Oracle数据到hive
|
SQL 分布式计算 运维
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理
前面几篇文章详细介绍了sqoop全量增量导入数据到hive,大家可以看到我导入的数据如果有时间字段的话我都是在hive指定成了string类型,虽然这样可以处理掉时间字段在hive为空的问题,但是在kylin创建增量cube时需要指定一个时间字段来做增量,所以上面那种方式不行,这里的处理方式为把string改成timestamp类型,看实验:
【大数据开发运维解决方案】sqoop增量导入oracle/mysql数据到hive时时间字段为null处理
|
SQL 运维 Oracle
【大数据开发运维解决方案】Oracle通过sqoop同步数据到hive
将关系型数据库ORACLE的数据导入到HDFS中,可以通过Sqoop、OGG来实现,相比较ORACLE GOLDENGATE,Sqoop不仅不需要复杂的安装配置,而且传输效率很高,同时也能实现增量数据同步。 本文档将在以上两个文章的基础上操作,是对第二篇文章环境的一个简单使用测试,使用过程中出现的错误亦可以验证暴漏第二篇文章安装的问题出现的错误,至于sqoop增量同步到hive请看本人在这篇文章之后写的测试文档。
【大数据开发运维解决方案】Oracle通过sqoop同步数据到hive
|
SQL 运维 Oracle
【大数据开发运维解决方案】Sqoop增量同步Oracle数据到hive:merge-key再次详解
这篇文章是基于上面连接的文章继续做的拓展,上篇文章结尾说了如果一个表很大。我第一次初始化一部分最新的数据到hive表,如果没初始化进来的历史数据今天发生了变更,那merge-key的增量方式会不会报错呢?之所以会提出这个问题,是因为笔者真的有这个测试需求,接下来先对oracle端的库表数据做下修改,来模拟这种场景。
【大数据开发运维解决方案】Sqoop增量同步Oracle数据到hive:merge-key再次详解
|
运维 分布式计算 Oracle
【大数据开发运维解决方案】Linux Solr5.1安装及导入Oracle数据库表数据
在solr页面中点击core admin–>add core 增加一个core。和id字段如果不做主键,需要将required="true"去掉。配置文件介绍中已经说了问题的主要原因是schema配置文件中存在。2、取消ID的required=true,修改为指定的字段即可。保存退出,至于为什么这么改,看后面遇到的问题及解决方法。1、将uniqueKey修改为你导入solr的字段。能够正常查询出来数据,简单导入完成。最后结果如上截图及配置。
【大数据开发运维解决方案】Linux Solr5.1安装及导入Oracle数据库表数据