在之前的2篇博客中我们了解了达梦数据库表空间的基本操作,如下:
DM7 达梦数据库 表空间 管理 说明
https://www.cndba.cn/dave/article/3569DM 达梦数据库 创建表空间 秒结束 测试
https://www.cndba.cn/dave/article/3757
实际上达梦数据库的临时表空间是另外一种管理方式,我们先查询达梦数据库表空间相关的信息,如下:
[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA@127.0.0.1:6236
服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 2.109(ms)
disql V8
SQL> select tablespace_name,FILE_NAME,bytes/1024/1024 from dba_data_files;
服务器[127.0.0.1:6236]:处于普通打开状态
已连接
行号 TABLESPACE_NAME FILE_NAME BYTES/1024/1024
---------- --------------- -------------------------------- --------------------
1 SYSTEM /dm/dmdbms/data/cndba/SYSTEM.DBF 23
2 MAIN /dm/dmdbms/data/cndba/MAIN.DBF 128
3 TEMP /dm/dmdbms/data/cndba/TEMP.DBF 2048
4 ROLL /dm/dmdbms/data/cndba/ROLL.DBF 128
已用时间: 17.282(毫秒). 执行号:104.
SQL>
在这里我们看到有4个表空间,其中TEMP 临时表空间大小2048M。 这里要注意,虽然达梦与Oracle 在管理上很类似,但在TEMP 表空间管理上,达梦与Oracle 的差距很大。
我们这里先查看实例的配置参数dm.ini:
[root@www.cndba.cn cndba]# cat dm.ini |grep TEMP
TEMP_PATH = /dm/dmdbms/data/cndba #temporary file path
TEMP_SIZE = 1024 #temporary file size in Megabytes
TEMP_SPACE_LIMIT = 20480 #temp space limit in megabytes
[root@www.cndba.cn cndba]#
通过查询我们可以得知,达梦的临时表空间大小是由这3个参数控制的,每次在实例启动时,根据这3个参数的配置,来创建和分配临时表空间,而不是Oracle 数据库中可以单独创建临时表空间。 并且在创建表空间时也无法单独指定创建临时表空间。
TEMP_SIZE:参数是静态参数,指定默认创建的临时表空间大小,以 M 为单位。有效值范围(10~1048576)。
TEMP_SPACE_LIMIT:动态,系统级临时表空间大小上限,以 M 为单位。0 表示不限制临时表空间大小。 有效范围(0~ 4294967294)。
注:TEMP_SPACE_LIMIT 一定要大于等于TEMP_SIZE
达梦的参数修改参考我之前的博客:
DM7 达梦数据库 参数 修改方法
https://www.cndba.cn/dave/article/3578
我们这里来测试一下效果:
[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA@127.0.0.1:6236
服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 2.109(ms)
disql V8
SQL> select tablespace_name,FILE_NAME,bytes/1024/1024 from dba_data_files;
服务器[127.0.0.1:6236]:处于普通打开状态
已连接
行号 TABLESPACE_NAME FILE_NAME BYTES/1024/1024
---------- --------------- -------------------------------- --------------------
1 SYSTEM /dm/dmdbms/data/cndba/SYSTEM.DBF 23
2 MAIN /dm/dmdbms/data/cndba/MAIN.DBF 128
3 TEMP /dm/dmdbms/data/cndba/TEMP.DBF 2048
4 ROLL /dm/dmdbms/data/cndba/ROLL.DBF 128
已用时间: 17.282(毫秒). 执行号:104.
SQL> SP_SET_PARA_VALUE(2,'TEMP_SIZE', 666);
DMSQL 过程已成功完成
已用时间: 3.277(毫秒). 执行号:105.
SQL> SP_SET_PARA_VALUE(2,'TEMP_SPACE_LIMIT', 8888);
DMSQL 过程已成功完成
已用时间: 2.675(毫秒). 执行号:106.
SQL> SP_SET_PARA_STRING_VALUE(2,'TEMP_PATH', '/dm/dmdbms/data/dave');
SP_SET_PARA_STRING_VALUE(2,'TEMP_PATH', '/dm/dmdbms/data/dave');
[-836]:不可修改的配置参数.
已用时间: 0.332(毫秒). 执行号:0.
SQL>
注意这里的TEMP_PATH参数,只能手工修改dm.ini 文件,无法通过SQL语句来修改, 修改之后如下:
[dave@www.cndba.cn cndba]$ cat dm.ini|grep TEMP_PATH
TEMP_PATH = /dm/dmdbms/data #temporary file path
[dave@www.cndba.cn cndba]$
重启实例:
[root@www.cndba.cn root]# systemctl restart DmServicedave.service
[root@www.cndba.cn root]#
查询表空间信息:
[dave@www.cndba.cn ~]$ disql SYSDBA/SYSDBA@127.0.0.1:6236
服务器[127.0.0.1:6236]:处于普通打开状态
登录使用时间 : 2.257(ms)
disql V8
SQL> select tablespace_name,FILE_NAME,bytes/1024/1024 from dba_data_files;
行号 TABLESPACE_NAME FILE_NAME BYTES/1024/1024
---------- --------------- -------------------------------- --------------------
1 SYSTEM /dm/dmdbms/data/cndba/SYSTEM.DBF 23
2 MAIN /dm/dmdbms/data/cndba/MAIN.DBF 128
3 TEMP /dm/dmdbms/data/TEMP.DBF 666
4 ROLL /dm/dmdbms/data/cndba/ROLL.DBF 128
已用时间: 11.231(毫秒). 执行号:4.
SQL>
此时表空间已经根据我们之前的参数配置进行创建。
因为达梦的临时表空间与Oracle 的临时表空间管理不同,所以专门写此篇博客,记录一下。