Temporary Tablespace 介绍
临时 TBS 用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当 ORACLE 里需要用到 SORT 的时候,并且当 PGA 中sort_area_size
大小不够时,将会把数据放入临时 TBS 里进行排序。
像数据库中一些操作:CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN
等都可能会用到临时表空间。当操作完成后,系统会自动清理临时 TBS 中的临时对象,自动释放临时段。这里的释放只是标记为空闲、可以重用,其实实质占用的磁盘空间并没有真正释放。这也是临时 TBS 有时会不断增大的原因。
用于排序,可以建立多个临时 TBS,但默认的临时 TBS 只能有一个。
数据库open状态下,default temporary tablespace
不能offline
和drop
。
如果未指定默认的临时 TBS,Oracle 将会使用 system 作为temp TBS
(非本地管理)。
只有temp TBS
是nologing
不产生日志的。
SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/orcl/temp01.dbf' size 100m reuse;-- 这等于在原地重置了(reuse)临时 TBS,可以在dba_temp_files里没有任何记录时使用这条命令;SQL> select file_id,file_name,tablespace_name from dba_temp_files;FILE_ID FILE_NAME TABLESPACE_NAME------- --------------------------------------- ----------------1 /u01/app/oracle/oradata/orcl/temp01.dbf TEMPSQL> col name for a40;SQL> select file#,name ,bytes/1024/1024 from v$tempfile;FILE# NAME BYTES/1024/1024-------- --------------------------------------- ----------------1 /u01/app/oracle/oradata/orcl/temp01.dbf 100
1.2 建立临时 TBS 的增删改
1.2.1 创建 TBS
SQL> create temporary tablespace temp2 tempfile '/u01/app/oracle/oradata/orcl/temp02.dbf' size 10m;
1.2.2 增加数据文件
SQL> alter tablespace temp2 add tempfile '/u01/app/oracle/oradata/orcl/temp03.dbf' size 5m;SQL> select file_id,file_name,tablespace_name from dba_temp_files;FILE_ID FILE_NAME TABLESPACE_NAME------- --------------------------------------- ----------------1 /u01/app/oracle/oradata/orcl/temp01.dbf TEMP2 /u01/app/oracle/oradata/orcl/temp02.dbf TEMP23 /u01/app/oracle/oradata/orcl/temp03.dbf TEMP2
1.2.3 删除表空间数据文件
-- 将temp2里删掉一个tempfile.SQL> alter tablespace temp2 drop tempfile '/u01/app/oracle/oradata/orcl/temp03.dbf';SQL> select file_id,file_name,tablespace_name from dba_temp_files;FILE_ID FILE_NAME TABLESPACE_NAME------- --------------------------------------- ----------------1 /u01/app/oracle/oradata/orcl/temp01.dbf TEMP2 /u01/app/oracle/oradata/orcl/temp02.dbf TEMP2
1.3 查看默认的临时 TBS
SQL> col PROPERTY_NAME for a30SQL> col PROPERTY_VALUE for a35SQL> col description for a85SQL> select * from database_properties;PROPERTY_NAME PROPERTY_VALUE DESCRIPTION---------------------------- -------------- ------------------------------------DICT.BASE 2 dictionary base tables version #DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespaceDEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespaceDEFAULT_TBS_TYPE SMALLFILE Default tablespace typeNLS_LANGUAGE AMERICAN LanguageNLS_TERRITORY AMERICA Territory.....38 rows selected.
1.4 指定用户使用临时 TBS
SQL> alter user scott temporary tablespace temp2;-- 注意,与default profile不同,删除了temp2,scott的temporary不会转回到temp。
1.5 修改数据库默认临时 TBS
SQL> alter database default temporary tablespace temp2;SQL> select * from database_properties;PROPERTY_NAME PROPERTY_VALUE DESCRIPTION---------------------------- -------------- ------------------------------------DICT.BASE 2 dictionary base tables version #DEFAULT_TEMP_TABLESPACE TEMP2 Name of default temporary tablespaceDEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespaceDEFAULT_TBS_TYPE SMALLFILE Default tablespace typeNLS_LANGUAGE AMERICAN Language...
文章转载自DBA随笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




