TEMP 表空间完全由 DM 数据库自动维护。当 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP 表空间。
Temp 表空间可自动扩充,为了不影响磁盘空间的使用,通常会通过 ini 参数 TEMP_SIZE 配置大小,TEMP_SPACE_LIMIT 设置上限,通过存储过程 SP_TRUNC_TS_FILE 来收缩 Temp 表空间文件。
生产环境中要针对 Temp 表空间的大小做专项检查,经常过大可能说明内存过小或者存在大量排序或者中间结果集存放,需要视情况开展优化工作。
修改临时表空间500M 或 10G,静态参数,需要重启生效,
不管TEMP自动扩展到多大,或是新增了TEMP文件,重启数据库后,TEMP会回到初始参数大小。
sp_set_para_value(2,'TEMP_SIZE',500);
sp_set_para_value(2,'TEMP_SIZE',10240);
设置临时表空间上限为100G,动态参数:
sp_set_para_value(1,'TEMP_SPACE_LIMIT',102400);
alter tablespace TEMP add datafile '/app/dmdbms/data/DMDB/TEMP01.DBF' size 100;
select * from v$tablespace where NAME='TEMP';
select
file_name,file_id,tablespace_name,bytes/1024/1024,AUTOEXTENSIBLE from dba_data_files where tablespace_name='TEMP';
sp_trunc_ts_file(
Ts_id int ----指定截断文件的临时表空间 ID
File_id int ----指定截断文件的文件 ID
To_size int ----指定将文件截断至多大,以 M 单位
)
比如:SP_TRUNC_TS_FILE(3,0,64);
文章
阅读量
获赞