临时表空间:用来存放用户的临时性数据,在需要时覆盖,关闭时自动删除,不能存放 永久性数据。临时表空间在硬盘中。
1、临时表空间概念介绍 和 举例介绍
临时表空间用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序。像数据库中一些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能会用到临时表空间。当操作完成后,系统会自动清理临时表空间中的临时对象,自动释放临时段。这里的释放只是标记为空闲、可以重用,其实实质占用的磁盘空间并没有真正释放。这也是临时表空间有时会不断增大的原因。
- 例如:(大数据量的排序)当用户对很多数据行进行排序时,排序在PGA中进行。但是如果排序的数据过多,导致内存不足时,oracle会把要排序的数据分成多份,每次只取一份放在PGA中进行排序,其他的部分都放到临时表空间中,当PGA里的部分排序完成后,把排序好的部分交换到临时表空间中,同时再从临时表空间里取一份没有排序的数据到PGA中进行排序,这样直到所有数据排序完成为止。
临时表空间与临时表空间组 ?
临时表空间组是一组由临时表空间组成的组:
①临时表空间与临时表空间组不能同名。
②临时表空间组不能被显示 的创建和删除。
③创建:当我们把第一个临时表空间分配给一个临时表空间组时,oracle会自动创建这个临时表空间组。
④删除:将临时表空间组的最后一个临时表空间删除,就会删除这个临时表空间组。
表空间相关视图和语句、
用法 | 语句 |
---|---|
查看数据库中有哪些表空间 | select * from v$tablespace; |
同上述作用,查询的信息更多 | select * from dba_tablespaces; |
查看所有的数据文件(除临时文件) | select * from dba_data_files; |
查看临时文件,临时表空间所对应的文件 | select * from dba_temp_files; |
查看临时文件信息 | select * from v$tempfile; |
查看临时表空间组 | select * from dba_tablespace_groups; |
查看默认的临时表空间 | select property_name, property_value from database_properties where property_name = ‘DEFAULT_TEMP_TABLESPACE’; |
临时表空间的创建:
创建一个临时表空间 ,不属于组: create temporary tablespace temp_name tempfile‘ 路径+文件名‘ size 大小 [autoextend on] ; --size单位m兆 autoextend on 自动增长 create temporary tablespace temp2 tempfile ‘D:\app\Administrator\oradata\orcl\temp2a.dbf‘ size 10m autoextend on ; 创建一个临时表空间属于组: create temporary tablespace temp_name tempfile‘ 路径+文件名‘ size 大小 [autoextend on] tablespace group group_name ; create temporary tablespace temp3 tempfile ‘D:\app\Administrator\oradata\orcl\temp3a.dbf‘ size 10m autoextend on tablespace group temp_grp;
有关临时表空间的相关操作:
将临时表空间temp2加入到临时表空间组temp_grp中:
alter tablespace temp2 tablespace group temp_grp;
将临时表空间temp2从临时表空间组temp_grp中移除:
alter tablespace temp2 tablespace group ‘‘ ; --组名置空
给temp表空间添加一个临时文件temp3aa.dbf :
alter tablespace temp2 add tempfile ‘D:\app\Administrator\oradata\orcl\temp3aa.dbf‘ size 10m autoextend on ;
修改系统默认的临时表空间:
①将默认临时表空间改成临时表空间组 temp_grp (可包含多个临时表空间):
alter database default temporary tablespace temp_grp;
②将默认临时表空间改成临时表空间temp2:
alter database default temporary tablespace temp_grp;