Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。临时表空间的主要作用:

索引create或rebuild
Order by 或 group by
Distinct 操作
Union 或 intersect 或 minus
Sort-merge joins
analyze

 

重启数据库可以释放临时表空间,如果不能重启实例,而一直保持问题sql语句的执行,temp表空间会一直增长。即使重建了临时表空间,过一段时间后,临时表空间的使用率就达到99%,然后,表空间就开始增长,直到耗尽硬盘空间。如下图所示临时表空间,刚建立时是8G,现在已到32G:

为了防止临时表空间无限制的增加,我采用隔一段时间就重建临时表空间的方法,为了方便,我保留两组语句,轮流执行即可,假定现在临时表空间名称是temp,新建一个tempa表空间,删除temp表空间,方法如下:

create   temporary   tablespace   TEMPA   TEMPFILE   '/opt/app/oracle/oradata/orcl/tempa01.dbf '   SIZE   8192M   REUSE   AUTOEXTEND   ON   NEXT  1024K   MAXSIZE   UNLIMITED;   --创建中转临时表空间 
alter   database   default   temporary   tablespace   tempa;      --改变缺省临时表空间

drop   tablespace   temp   including   contents   and   datafiles;     --删除原来临时表空间

新建的临时表空间如下图所示:

过一段时间,当临时表空间增长到一定的程度,再新建一个temp表空间,删除tempa表空间,即:

create   temporary   tablespace   TEMP   TEMPFILE   '/opt/app/oracle/oradata/orcl/temp01.dbf '   SIZE   8192M   REUSE   AUTOEXTEND   ON   NEXT  1024K   MAXSIZE   UNLIMITED;   --创建中转临时表空间 
alter   database   default   temporary   tablespace   temp;    --改变缺省临时表空间
drop   tablespace   tempa   including   contents   and   datafiles;  --删除原来临时表空间

这样就可以保证临时表空间不至于过大,防止过多的占用有限的硬盘空间。

=====================================================

用下面语句可查看当前临时表空间使用空间大小与正在占用临时表空间的sql语句:

select sess.SID, segtype, blocks * 8 / 1000 "MB", sql_text
  from v$sort_usage sort, v$session sess, v$sql sql
 where sort.SESSION_ADDR = sess.SADDR
   and sql.ADDRESS = sess.SQL_ADDRESS
 order by blocks desc;

下面语句查询临时表空间的空闲程度:

select 'the ' || name || ' temp tablespaces ' || tablespace_name ||
       ' idle ' ||
       round(100 - (s.tot_used_blocks / s.total_blocks) * 100, 3) ||
       '% at ' || to_char(sysdate, 'yyyymmddhh24miss')
  from (select d.tablespace_name tablespace_name,
               nvl(sum(used_blocks), 0) tot_used_blocks,
               sum(blocks) total_blocks
          from v$sort_segment v, dba_temp_files d
         where d.tablespace_name = v.tablespace_name(+)
         group by d.tablespace_name) s,
       v$database;

最新文章

  1. Git Shell 基本命令(官网脱水版)
  2. 单例模式(singleton)
  3. iOS学习之六种传值方式
  4. 《Algorithms算法》笔记:优先队列(2)——二叉堆
  5. (转)Android中的Shape使用总结
  6. 设计模式学习系列6 原型模式(prototype)
  7. CopyOnWriteArrayList理解与理解
  8. You and your research
  9. 程序实现LayoutAnimationController
  10. Program Files 与Program Files (x86)
  11. jmeter返回的post data乱码
  12. js中的||与&&用法
  13. TCP:传输控制协议
  14. 【Java】java 中的泛型通配符——从“偷偷地”地改变集合元素说起
  15. Java程序只运行一个实例[转]
  16. [HNOI2007]紧急疏散
  17. tar.gz和tar.bz2
  18. LVS搭建负载均衡(二)DR模型
  19. Windows Server 2012安装密钥
  20. Python/Jupyter Notebook以及可视化的运用

热门文章

  1. PHP 判断是否包含某字符串
  2. Xamarin for Visual Studio 破解日志
  3. Linux多线程之互斥
  4. 几个经常用到的字符串的截取(java)
  5. eq相等 ,ne、neq不相等 EL表达式
  6. 【PSR规范专题(5)】PSR-4 改进后的自动加载规范
  7. sublime3 乱码问题
  8. Android:Intel Atom x86模拟器的安装与使用
  9. TCP释放连接的四次挥手过程
  10. J2ee 巴巴网站制作(一)