当 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 数据被
  释放,或者会话结束。