原 Oracle中的临时表空间简介和维护
简介
临时表空间(Temporary Tablespace)用于存储会话在执行排序、哈希连接等操作时产生的临时数据。这些数据通常不会持久化到磁盘,仅在会话结束或实例重启时释放。
创建临时表空间
创建临时表空间时,通常需要指定表空间名称和存储文件的位置。以下是创建临时表空间的SQL语句示例:
1 2 3 4 5 6 7 | CREATE TEMPORARY TABLESPACE temp_tbs TEMPFILE '/u01/app/oracle/oradata/LHR11G/temp_tbs_01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; |
添加临时文件
如果现有临时表空间的存储容量不足,可以通过添加临时文件来扩展其容量。以下是添加临时文件的SQL语句示例:
1 2 3 4 5 6 | ALTER TABLESPACE temp_tbs ADD TEMPFILE '/u01/app/oracle/oradata/LHR11G/temp02.dbf' SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED; |
删除临时文件
在不需要的情况下,可以删除临时文件。需要确保该文件中的数据不再被使用:
1 2 3 4 5 | ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/LHR11G/temp02.dbf' DROP INCLUDING DATAFILES; -- 或 ALTER DATABASE TEMPFILE 3 DROP INCLUDING DATAFILES; |
临时表空间管理
- 查询临时表空间使用情况:可以通过以下查询来检查临时表空间的使用情况:123456SELECT tablespace_name,file_name,bytes / 1024 / 1024 AS size_mb,maxbytes / 1024 / 1024 AS max_size_mb,autoextensibleFROM dba_temp_files;
- 查询会话的临时表空间使用情况:可以通过以下查询来了解当前会话的临时表空间使用情况:1234567891011SELECT s.sid,s.serial#,s.username,s.program,t.tablespace,t.blocks * ts.block_size / 1024 / 1024 AS used_mbFROM v$session s,v$sort_usage t,dba_tablespaces tsWHERE s.saddr = t.session_addrAND t.tablespace = ts.tablespace_name;
- 调整临时表空间的大小:通过扩展临时文件或添加新文件可以调整临时表空间的大小。
这些操作是日常维护Oracle数据库时常用的操作,确保数据库的临时表空间始终有足够的空间以支持各种操作。
数据库默认临时表空间
1 2 3 | SELECT property_value FROM database_properties WHERE property_name = 'DEFAULT_TEMP_TABLESPACE'; |