作者:iamlaosong

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;

Oracle中暂时表空间的清理的更多相关文章

  1. oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)

    数据文件和日志文件是数据库中最重要的文件.它们是数据存储的地方.每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多.数据在数据文件中是如何组织的?要了解这些内容我们首先必须理解什么是表 ...

  2. Oracle中的表空间

    表空间是什么? Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构是指构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念及它们之间的关系. 表空间是数据库数据 ...

  3. Oracle中undo表空间的切换

    查看操作系统: SQL>  !cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 7.4 (Maipo)查看数据库版本: ...

  4. oracle中的表空间以及和表空间有关的操作

    oracle中表空间 表空间是oracle对物理数据库上相关数据文件的逻辑映射.一个数据库逻辑上被划分成一个或若干个表空间,每个表空间包含了在逻辑上相关联的一组结构.每个数据库至少有一个表空间(sys ...

  5. 如何在Oracle中建立表和表空间?

    1.建表空间 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方 ...

  6. oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段

    今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace,        b.segfile# ...

  7. oracle表空间查询维护命令大全之三(暂时表空间)史上最全

    --UNDO表空间汇总 --查看全部的表空间名字 SELECT NAME FROM V$TABLESPACE; --创建新的UNDO表空间,并设置自己主动扩展參数; CREATE UNDO TABLE ...

  8. Oracle 数据库中查看表空间的2种方法

    在Oracle数据库中查看表空间使用状况是我们在实际应用中经常涉及到的,以下的内容就就是对Oracle 数据库中查看表空间使用状况时所要用到的SQL的描述,希望你能从中获得自己想要的东西. Oracl ...

  9. ORACLE-015:ora-25153 暂时表空间为空,ora01652 无法通过128

    写了一个复杂的select语句,突然oracle就报了:ora-25153 暂时表空间为空,这个错误,于是网上查了下.发现了例如以下解决方法:创建一个新的暂时表空间. 首先要有system权限.登录进 ...

随机推荐

  1. 算法题:给你一个自然数N,求[6, N]之内的全部素数中, 两两之和为偶数的那些偶数。

    /* 算法题:给你一个自然数N,求[6, N]之内的全部素数中. 两两之和为偶数的那些偶数. */ #include <iostream> using namespace std; voi ...

  2. 68.connect-flash 用法详解 req,flash()

    转自:http://yunkus.com/connect-flash-usage/ connect-flash 用法详解  前端工具  2016-10-05  2016-10-05  朝夕熊  11 ...

  3. js关于循环的理解

    学习任何语言都离不开循环,js也是一样,看了网上的资料,整理一份关于js循环的理解. 1.最基础循环,js和其他高级语言一样使用for.while循环 (function() { for(var i= ...

  4. POJ 3037 SPFA

    题意: 思路: 我们可以发现 到每个点的速度是一样的 那这就成水题了-. 裸的SPFA跑一哈 搞定 //By SiriusRen #include <cmath> #include < ...

  5. Android ijkplayer详解使用教程

    1.认识ijkplayer 最近公司准备开发一款视频播放及直播的应用,找了许多开源的框架,大部分都是基于ffmpeg开发的.最开始准备用Vitamio框架开发的,相关的文章也比较丰富,结果对于非个人移 ...

  6. C/C++(基础-运算符详解)

    运算符 任何表达式是有值的 int a = 2; int b = 3; a*=b+4;//a=a*(b+4);"*"*=的优先级层次和=号的层次一样. printf("% ...

  7. kill&&pkill&&killall---删除执行中的程序

    命令功能: 发送指定的信号到相应进程.不指定型号将发送SIGTERM(15)终止指定进程.如果无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程 使用ps命令 ...

  8. BestCoder Round #65 HDOJ5592 ZYB&#39;s Premutation(树状数组+二分)

    ZYB's Premutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  9. 将bat批处理命令文件固定到任务栏

    将bat批处理命令文件固定到任务栏第一种方法:使用链接工具http://www.xstui.com/read/3451.在任务栏点击右键,移动到工具栏,勾选链接工具2.你会在通知栏左侧看到链接字样,将 ...

  10. 公众平台调整SSL安全策略,请开发者注意升级

    公众平台调整SSL安全策略,请开发者注意升级 近一段时间HTTPS加密协议SSL曝出高危漏洞,可能导致网络中传输的数据被黑客监听,对用户信息.网络账号密码等安全构成威胁.为保证用户信息以及通信安全,微 ...