Oracle临时表空间

当 Oracle 在执行一些 SQL 时,会需要一些临时空间来存储执行时产生的中间数据。这些临时空 间由 Orac le

从指定的临时表空间中分配给进程。主要有三种情况会占用临时空间:临时表/索引操作、排序和 临时 LO B

对象操作。

A.临时表/索引:

在会话中,当第一次对临时表进行 INSERT(包括 CTAS)时 ,Orac le 会从临时表空间中为临时 表

及其索引分配临时空间一存储数据。

B.排序:

任何会使用到排序的操作,包括 JOIN、创建(重建)INDEX、ORDER  BY、聚合计算 (GROUP

BY)以及统计数据收集,都可能使用到临时表空间。排序操作首先会选择在内存中的 Sort  Area

进行(Sort  In  Memory),一旦 Sort Area 不足,则会使用临时空间进行排序操作 (Sort In  Disk)。

看下面的例子:

SQL> alter session set sort_area_size = 10000000;

Session altered.

SQL> select owner, object_name from t_test1 order by objec t_id;

47582 rows selected.

Exec ution Plan

Plan hash value : 1312425564

Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

| 0 | SELECT STATEMENT | | 47582 | 1486K| 155 (4)| 00:00:02 |

| 1 | SORT ORDER  BY | | 47582 | 1486K| 155 (4)| 00:00:02 |

| 2 | TABLE ACCESS FULL| T_TEST1 | 47582 | 1486K| 150 (1)| 00:00:02 |

Statistics

1 recursive calls

0 db block gets

658 c onsistent gets

0 physic al reads

0 redo size

1566184 bytes sent via SQL*Net to c lient

35277 bytes received via SQL*Net from client

3174 SQL*Net roundtrips to/from c lient

1 sorts (memory)

0 sorts (disk)

47582 rows processed

SQL> alter session set sort_area_size = 10000;

Session altered.

SQL> select owner, object_name from t_test1 order by objec t_id;

47582 rows selected.

Exec ution Plan

Plan hash value : 1312425564

| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time|

| 0 | SELECT STATEMENT | | 47582 | 1486K| | 1251 (1)| 00:00:16 |

| 1 | SORT ORDER  BY | | 47582 | 1486K| 4136K| 1251 (1)| 00:00:16 |

| 2 | TABLE ACCESS FULL| T_TEST1 | 47582 | 1486K| | 150 (1)| 00:00:02 |

Statistics

6 recursive calls

20 db bloc k gets

658 c onsistent gets

629 physical reads

0 redo size

1566184 bytes sent via SQL*Net to c lient

35277 bytes received via SQL*Net from client

3174 SQL*Net roundtrips to/from c lient

0 sorts (memory)

1 sorts (disk)

47582 rows processed

C.临时 LOB 对象:

LOB 对象包括 BLOB、CLO B、NCLOB、和 BFILE。在 PLSQL 程序块中,如果定义了 LOB 变量,

则这些 LOB 变量就是临时 LOB 对象。临时 LOB 对象被创建在临时表空间上,直到 LOB 数据被

释放,或者会话结束。

本文出自 “Oracle之路” 博客,请务必保留此出处 http://19880614.blog.51cto.com/4202939/791762

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-09-17 03:31:34

Oracle临时表空间的相关文章

ORACLE 临时表空间TEMP 满了怎么办?

oracle|临时表         最近遇到这样一个问题:前一段时间网页查询ORACLE表正常,可最近一直页面无法显示.打印出SQL放到PL/SQL Devoloper 执行,报"无法通过8(在表空间XXX中)扩展 temp 段",还有一个页面,可以查询出记录,但无法统计数据!       经过分析产生原因可能是:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象.  解决方法:知道由于ORACLE将表空间作为

Oracle 临时表空间使用注意

oracle|临时表 临时表空间使用注意:1.临时表空间 是用于在进行排序操作(如大型查询,创建索引和联合查询期间存储临时数据)每个用户都有一个临时表空间2.对于大型操作频繁,(大型查询,大型分类查询,大型统计分析等),应指定单独的临时表空间,以方便管理 3.分配用户单独临时表空间,一般是针对 大型产品数据库,OLTP数据库,数据库仓库对于小型产品不需要单独制定临时表空间,使用默认临时表空间

如何重做Oracle临时表空间

应用场景:临时表空间满了,无法释放 解决方法总结如下: --1 创建中转临时表空间 create temporary tablespace temp02 tempfile '/oradata/CRPT_TEMP_TRA.dbf' size 20G reuse autoextend on next 1M ; --2 修改用户临时表空间为中转临时表空间 alter user crmreport temporary tablespace temp02 --3 删除用户原始的临时表空间 TBS_CRPT

Oracle临时表空间问题解决的例子

今天一哥们讲OA里面的某些模块失效了,一查系统日志,原来是Oracle数据库的临时表空间满了,中午吃饭的时候就把数据库重启一下(这种方式最简便也不容易出错),没想到临时表空间还是有问题,后面进行如下处理得到恢复: 1.查看临时表空间大小: select name,to_char(bytes/1024/1024)||'M' from v$tempfile; 结果显示临时表大小为0M,如下显示: NAME TO_CHAR(BYTES/1024/1024)||'M' /app/oracle/orada

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

数据库temp临时表空间增大,一般在数据安装时设置临时表空间大小,默认的情况下都是设置为自动增长.这样会引起一个问题:在数据库使用中temp表空间会自动扩展的越来越大,造成磁盘空间使用不足. 引起临时表空间增大主要使用在以下几种情况: 1.order by or group by (disc sort占主要部分): 2.索引的创建和重创建: 3.distinct操作: 4.union & intersect & minus sort-merge joins: 5.Analyze 操作: 6

oracle临时表空间大量占用问题的处理

一个电信运营商客户的核心交易系统,临时表空间大量被占用,临时表空间被撑到了600GB.这样的问题复杂吗?取决于很多因素,不过今天所要讲的案例,并不复杂,如果我们对临时表空间在何种情况下使用有足够了解. 首先,我们要去检查是什么会话占用了临时表空间,具体占用了多少,临时段的具体类型是什么.正如我们要想知道这个月的花费过大,去分析原因时就要去看是哪些开销过大.开销了多少金额.开销的用途等. 这个步骤比较简单,查询v$sort_usage就可以了: view plaincopy to clipboar

oracle 临时表空间组的概念

整理自:http://blog.sina.com.cn/s/blog_40c09b550100ifi6.html 在oracle10g以前,每个用户只能使用一个临时表空间,就是其默认临时表空间.oracle10g及其以后版本提供了新的临时表空间组的功能,允许将多个临时表空间打包成一个组,然后指定用户的默认临时表空间为该临时表空间组,从而达到一个用户可以使用多个临时表空间的目的.   一个临时表空间组至少包含一个临时表空间.临时表空间组无法显式创建,当第一个临时表空间分配给该组时自动创建,当组内所

ORACLE临时表空间总结

临时表空间概念   临 时表空间用来管理数据库排序操作以及用于存储临时表.中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中 sort_area_size大小不够时,将会把数据放入临时表空间里进行排序.像数据库中一些操作: CREATE INDEX. ANALYZE.SELECT DISTINCT.ORDER BY.GROUP BY. UNION ALL. INTERSECT.MINUS.SORT-MERGE JOINS.HASH JOIN等都可能会用到临时表空间.当

Oracle Temp临时表空间及其故障处理

 Oracle Temp临时表空间及其故障处理  Oracle 11g中Temp临时表空间.文件的新特性  临时表空间是Oracle体系结构中比较特殊的结构.通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),临时段分配等工作都是系统自动完成.当临时数据不需要时,Oracle后台进程SMON也会负责将临时段回收. 在Oracle的备份恢复体系中,临时文件的地位比较低.在进行备份动作时,RMAN都不会进行临时文件恢复.在恢复启动过程中,如果发现临时文件不存在,通常Oracle也会自动将临