达梦数据库之TEMP表空间

TEMP:临时表空间,存放临时表数据、临时结果集等。

和临时表空间相关的参数:

SQL> select name, value, type from v$parameter t where name like 'TEMP%';

行号 NAME VALUE TYPE

---------- ---------------- ------------ ---------

1 TEMP_PATH /data/DAMENG READ ONLY

2 TEMP_SIZE 10 IN FILE

3 TEMP_SPACE_LIMIT 0 SYS

已用时间: 15.510(毫秒). 执行号:601.

TEMP_PATH 临时表空间路径。

TEMP_SIZE 临时表空间初始大小。

TEMP_SPACE_LIMIT 临时表空间的空间限制,0 表示不限制。

临时表空间的自动扩展不可以关闭。

SQL> alter tablespace TEMP datafile 'TEMP.DBF' autoextend off;

alter tablespace TEMP datafile 'TEMP.DBF' autoextend off;

第1 行附近出现错误[-3411]:试图设置表空间[TEMP]中文件的autoextend属性.

已用时间: 0.396(毫秒). 执行号:0.

查看、更改临时表空间的大小:

SQL> select name,type,value,sys_value,file_value from v$parameter where name='TEMP_SIZE';

行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE

---------- --------- ------- ----- --------- ----------

1 TEMP_SIZE IN FILE 10 10 10

SQL> alter system set 'TEMP_SIZE' = 80 spfile;

DMSQL 过程已成功完成

已用时间: 4.293(毫秒). 执行号:610.

SQL> select name,type,value,sys_value,file_value from v$parameter where name='TEMP_SIZE';

行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE

---------- --------- ------- ----- --------- ----------

1 TEMP_SIZE IN FILE 10 10 80

已用时间: 3.850(毫秒). 执行号:611.

TEMP表空间增大原因:

排序、多表关联查询、索引创建等操作,在对应内存空间不够情况下需要使用temp存放结果集。

创建的临时表及数据存储均使用temp表空间。

使用SQL扩展临时表空间:

SQL> select count(*) from test;

行号 COUNT(*)

---------- --------------------

1 7020544

已用时间: 0.123(毫秒). 执行号:524.

select name,id,type$,pid from test order by 1,2,3,4;

查看:

SELECT a.tablespace_name , round(b.max_total/(1024*1024),2) Max_Total_M, round(total/ (1024 * 1024),2) System_Allocated_Total_M, round(free/ (1024 * 1024),2) System_Allocated_Free_M, round((total- free)/(1024 * 1024),2) System_Allocated_Used_M , round((total - free) / total, 4) * 100 "System_Allocated_Used_%", round(((total- free)/max_total),6)*100 "Max_Used_%" FROM ( SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name ) a, ( SELECT tablespace_name, SUM(bytes) total, sum(decode(AUTOEXTENSIBLE,'NO',bytes,MAXBYTES)) max_total FROM dba_data_files GROUP BY tablespace_name ) b WHERE a.tablespace_name = b.tablespace_name;

行号 TABLESPACE_NAME MAX_TOTAL_M SYSTEM_ALLOCATED_TOTAL_M SYSTEM_ALLOCATED_FREE_M SYSTEM_ALLOCATED_USED_M System_Allocated_Used_% Max_Used_%

---------- --------------- ----------- ------------------------ ----------------------- ----------------------- ----------------------- ----------

1 SYSTEM 67108863 182 163.66 18.34 10.08 0

2 ROLL 67108863 154 83.53 70.47 45.76 0.0001

3 TEMP 67108863 184 183.75 0.25 0.3 0

4 MAIN 67108863 128 127.66 0.34 0.27 0

收缩 TEMP 表空间的方法:

1、 重启数据库,TEMP 表空间数据文件会重建。

2、 在线收缩临时表空间使用 SP_TRUNC_TS_FILE 函数。

我们先缩小到100M:

sp_trunc_ts_file(3,0,100);

SQL> sp_trunc_ts_file(3,0,100);

DMSQL 过程已成功完成

已用时间: 0.464(毫秒). 执行号:616.

SQL> SELECT

ts.NAME "表空间" ,

ts.ID "表空间编号" ,

df.id "文件编号" ,

df.max_size "文件最大大小(MB)" ,

df.total_size*df.PAGE_SIZE/1024/1024 "当前文件大小(MB)",

df.free_size *df.PAGE_SIZE/1024/1024 "文件空闲大小(MB)",

df.path "文件路径"

FROM

V$TABLESPACE AS ts,

V$DATAFILE AS df

2 3 4 5 6 7 8 9 10 11 12 WHERE

ts.type$=2

and ts.ID = df.GROUP_ID;13 14

行号 表空间 表空间编号 文件编号 文件最大大小(MB) 当前文件大小(MB) 文件空闲大小(MB) 文件路径

---------- --------- --------------- ------------ ---------------------- ---------------------- ---------------------- ---------------------

1 TEMP 3 0 67108863 128 127 /data/DAMENG/TEMP.DBF 

缩小到了 128的样子。

我们再尝试重启数据库看看:

dmdba@localhost ~]$ DmServiceDMSERVER stop

Stopping DmServiceDMSERVER: [ OK ]

[dmdba@localhost ~]$ DmServiceDMSERVER start

Starting DmServiceDMSERVER: [ OK ]

[dmdba@localhost ~]$ disql SYSDBA/SYSDBA@localhost:15236 

服务器[localhost:15236]:处于普通打开状态

登录使用时间 : 3.442(ms)

disql V8

SQL> SELECT

ts.NAME "表空间" ,

ts.ID "表空间编号" ,

df.id "文件编号" ,

df.max_size "文件最大大小(MB)" 2 3 4 5 ,

df.total_size*df.PAGE_SIZE/1024/1024 "当前文件大小(MB)",

df.free_size *df.PAGE_SIZE/1024/1024 "文件空闲大小(MB)",

df.path "文件路径"

FROM

V$TABLESPACE AS ts,

V$DATAFILE AS df

6 7 8 9 10 11 12 WHERE

ts.type$=2

and ts.ID = df.GROUP_ID;13 14

行号 表空间 表空间编号 文件编号 文件最大大小(MB) 当前文件大小(MB) 文件空闲大小(MB) 文件路径

---------- --------- --------------- ------------ ---------------------- ---------------------- ---------------------- ---------------------

1 TEMP 3 0 67108863 84 83 /data/DAMENG/TEMP.DBF 

已用时间: 9.366(毫秒). 执行号:500.

重启释放的更彻底。

社区地址:https://eco.dameng.com

猜你喜欢

转载自blog.csdn.net/duanpian_dba/article/details/127589519