临时表空间&临时表&临时段

来源:互联网 发布:ant 打包java项目 编辑:程序博客网 时间:2024/06/10 07:35
---------------------------临时表空间

当init.ora中指定的sort_area_size大小不足以满足排序操作时,用户将要在他们先前指定的临时表空间进行排序操作,如果磁盘上存在大量的排序操作,您应当确保用户在不同的磁盘上完成排序工作。
--使用tempfiles,它是本地管理的临时表空间的另一个名称。优点包括:
1.不需要检查数据字典临时表空间的空闲空间,因为tempfiles使用LMT(本地管理表空间)
2.使用tempfiles的本地管理范围更广,它自动跟踪邻近的空闲空间,因此不需要结合
3.tempfiles总是设置为nologgong,您不能重命名tempfiles,不能将tempfile设置为只读,也不能alter daabase命令创建tempfiles。

若将sort_area_szize,hash_Arae_size,pag_aggrgate_target设置太小而无法在内存中排序,可能导致system表空间里的碎片。
发生碎片的原因可能是临时表空间用来对磁盘排序,而不是对内存排序。
--临时表空间有如下特点:
1.如没有指定临时表空间或临时表空间组,用户临时段存储在默认临时表空间。如全没有指定,则存储在system表空间。
2.在内存不足以处理整个数据集时就需要用到这个空间。
3.存储如下语句生成的临时段:create index,select .... order by,distinct,group by,union,intersect,minus,unindexed join,some correlated subqueries

临时表空间采用本地托管,这样可以减少磁盘排序操作时的磁盘争用。本地可用托管临时表空间使用临时文件,临时文集哪附带了一些可用提高性能的特征。
如果使用命令create temporpary talespace,临时表空间有如下特点采用本地管理,而不采用字典托管。
---本地托管临时表空间有如下特征:
1.不会产生撤销信息,一次也不会因这些操作产生对磁盘的影响。
2.不会带有字典托管的临时表空间所导致的相同字典盘区开销
3.不会在创建时分配整个临时文件,您可用增加一个2GB的临时文件,但直到使用它,才会真正用2GB的大小。
4.不像其他的数据文件一样在控制文件中被维护,因此rman无法控制他们。如没有备份临时表空间,并且该空间崩溃或损坏,只需要重建新的即可。

-------------------------------临时表空间组:

使用临时表空间组的最大优点是:向具有多个会话的单个用户提供如下能力,对每个会话使用不同的实际临时表空间
临时表空间组的目标是提供一种方法,从而令可并行化的单个sql操作可用使用多个临时表空间进行排序。这样,就可用在非常大的表上创建索引,而不会有单个表空间尺寸的限制,因为索引创建期间的排序操作可以分布列多个表空间中。
临时表空间组缓解由于单个临时表空间太小而造成的无法保存排序结果的问题,特别时在具有许多分区的表上进行保存时。

在早期版本中,如果单个sql操作超出临时表空间可用空间,则会生成ora-01652错误。用户的默认临时表中没有足够可用的空间。
并且不可以自动扩展表空间或禁用autoextend时,用户查询或DML语句会失败。

-------------------------------临时段

临时段用于存储数据库操作的中间结果,例如排序,索引构建,distinct,union或任何其他需要排序归并操作的操作应该在临时表空间中分配临时段。
临时段的分配具有很多情况,当排序操作无法在内存中进行时,例如排序数据,distinct,group by 等的select语句时,则分配个临时段以保存排序的中间结果。
索引创建一般也需要创建临时段,因为临时段分配和释放经常发生,因此需要创建专门用于保存临时段的表空间,这有助于分散给定操作所需要的I/O,并且可以减少由于临时段的分配和释放而在其他表空间中产生存储碎片的可能性。


-------------------------------临时表

“临时”是就存储在表中的数据而言的,而不是表的定义自身
create global temporary table命令可以创建一个临时表
所有对该表本身拥有权限的用户能够在临时表上执行DML语句,每个用户在该表中只能看到他们自己的数据
(1)在事物处理期间的临时数据
on commit delete rows 删除临时表中所有行
create global temporary table()on commit delete rows;
(2)在会话期间的临时数据
on commit preserve rows可以在超过事物处理期限后仍然保持表中的行,但是当用户会话终止时,将会删除临时表中用户的所有行。
0 0
原创粉丝点击