首页 > 数据库 > 国内数据库 > 达梦数据库表空间管理
所有对象的逻辑存放位置,由一个或者多个数据文件组成,物理上全部存储在所属表空间的数据文件中。
从表空间的使用角度可以将表空间分成系统管理表空间和用户使用表空间。
系统管理表空间 :
SYSTEM 表空间存放数据库的字典信息,用户不能创建表和索引。
ROLL 表空间存放执行DML操作之前的值, 实现读数据的一致性,相当于oracel的UNDO,但达梦只能有一个ROLL空间。可以对 ROLL 表空间添加数据文件,但不能新 增 ROLL 表空间。
TEMP 临时表空间。 存放创建索引、无法在内存中完成的排序、SQL 语句中间结果集使用,用来存放用户临时表、大量的排序可能占用临时表空间。
TEMP_SIZE:临时表空间的初始大小 TEMP_SPACE_LIMIT:临时表空间限制的最大值,为 0 表示不限制,建议生成环 境修改。 sp_set_para_value(1, 'TEMP_SPACE_LIMIT', 1024);
HMAIN 表空间属于 HTS 表空间,用户无需干涉。
用户 使用 表空间:
MAIN 用户默认的表空间。用户创建时如果没有指定默认表空间,则系统自动指定 MAIN 表。
用户 自定义表空间 。 完全由用户根据业务需求创建的用来存储数据及索引的表空间。
包括创建、扩展、删除、修改(名称、状态、数据缓冲区)、表空间信息查询、参数设置等
3.1、创建表空间
可以一次指定一个或多个数据文件
语法:CREATE TABLESPACE <表空间名> DATAFILE <数据文件路径及文件名> SIZE <大小> [, <数据文件路径及文件名> SIZE <大小>];
例: CREATE TABLESPACE ts_example DATAFILE '/dm8/server/data/DAMENG/xxx/ts_example1.dbf' SIZE 128 ,
'/dm8/server/data/DAMENG/xxx/ts_example2.dbf' SIZE 128 ;
此语句创建名为ts_example的表空间,其下包括两个数据文件
3.2、扩展表空间
通过扩展其下数据文件的大小来增加表空间大小
语法:ALTER TABLESPACE <表空间名> RESIZE DATAFILE <数据文件路径及文件名> TO <大小>;
例: ALTER TABLESPACE ts_example RESIZE DATAFILE '/dm8/server/data/DAMENG/xxx/ts_example1.dbf' TO 512 ;
3.3、修改表空间
修改名称
ALTER TABLESPACE <原名> RENAME TO <新名>;
修改状态为联机
ALTER TABLESPACE <表空间名> ONLINE ;
修改状态为脱机
ALTER TABLESPACE <表空间名> OFFLINE ;
修改数据缓冲区(要重启服务器生效)
ALTER TABLESPACE <表空间名> CACHE = "KEEP";或
ALTER TABLESPACE <表空间名> CACHE = "NORMAL";
3.4、删除表空间
DROP TABLESPACE <表空间名> ;
3.5、查询表空间相关信息
1)、查询 表空 间的相关信息
SELECT * FROM V$TABLESPACE;
NAME 表空间名称
CACHE CACHE 名
TYPE$ 表空间类型:1 DB 类型,2 临时表空间
STATUS$ 状态。0 ONLINE,1 OFFLINE,2 RES_OFFLINE 3 CORRUPT
MAX_SIZE 最大大小。0 代表只受操作系统限制(暂无实际意义)
TOTAL_SIZE 总大小(以页为单位)
FILE_NUM 包含的文件数
ENCRYPT_NAME 加密算法名
ENCRYPTED_KEY 加密密钥,16 进制
2)、查询 表空间的数据文件的信息
SELECT * FROM DBA_DATA_FILES ;
FILE_NAME 数据文件名称
FILE_ID 数据文件所属文件 id
TABLESPACE_NAME 数据文件所属表空间名
BYTES 数据文件大小,单位:字节
BLOCKS 数据文件块大小
STATUS 数据文件状态。AVAILABLE 可用,INVALID 不可用
RELATIVE_FNO 所在表空间的数据文件个数
AUTOEXTENSIBLE 是否可自动扩展
MAXBYTES 最大数据文件大小,单位:字节
MAXBLOCKS 最大数据文件大小,单位:块
INCREMENT_BY 可用于自动扩展的数据块数量
USER_BYTES 用户数据可使用的文件大小
USER_BLOCKS 数据可使用的块数量
ONLINE_STATUS 文件状态
3)、查询表空间大小及使用情况
select tablespace_name,
sum(bytes/1024/1024) || 'M' as total,-- 总量
sum(user_bytes/1024/1024)||'M' free,--
剩余量
sum(user_bytes)*100/sum(bytes) residual --剩余比率
from dba_data_files group by tablespace_name
;
3.6、表空间管理的其他设置
1)、设置 ROLL空间的 回滚段的保留时间
UNDO_RETENTION:回滚段的保留时间,单位为秒
sp_set_para_double_value(1, 'UNDO_RETENTION', 600);
2)、设置
临时表空间参数
select * from v$dm_ini t where t.PARA_NAME like '%TEMP%';

TEMP_SIZE:临时表空间的初始大小
TEMP_SPACE_LIMIT:临时表空间限制的最大值,为 0 表示不限制,建议生成环境修改。
sp_set_para_value(1, 'TEMP_SPACE_LIMIT', 1024);
4.1、出现表空间容量不足,数据登录不了的场合,解决方法如下:
方法一、增加表空间下数据文件的大小
ALTER TABLESPACE ts_example RESIZE DATAFILE '/dm8/server/data/DAMENG/xxx/ts_example1.dbf' TO 512 ;
方法二、设置表空间的扩展属性为自动扩展。
创建时设置
CREATE TABLESPACE ts_example DATAFILE '/dm8/server/data/DAMENG/xxx/ts_example1.dbf' SIZE 128 AUTOEXTEND ON NEXT
10 MAXSIZE 1024 ;
创建后再修改设置
ALTER TABLESPACE ts_example DATAFILE '/dm8/server/data/DAMENG/xxx/ts_example1.dbf' AUTOEXTEND ON;
4.2、集群环境中出现节点间的表空间状态 不一致问的场合,解决方法如下:
1) 用户 LOCAL 方式登陆
2) 执行SP_SET_SESSION_LOCAL_ TYPE(1)
3) 执行 ALTER TABLESPACE <表空间名> ONLINE或ALTER TABLESPACE <表空间名> OFFLINE
4.3、linux系统中表空间文件 失效的场合:
问题出现原因:表空间的数据文件在系统中被删除
解决方案(前提被删除的文件句柄没有关闭):
1) 、调用系统过程 SP_TABLESPACE_PREPARE_RECOVER(表空间名)
2) 、使用linux系统ps命令找到数据库服务的PID: ps -ef|grep dmserver
3)、使用linux系统 ls 命令查看被删除文件对应的副本:ls /proc/<PID>/fd –l,
查看文件后有(deleted)字样
4)、使用linux系统cp命令将文件复制到原位置
5)、调用系统过程 SP_TABLESPACE_RECOVER(表空间名)
4.4、 当创建的数据文件路径没有操作权限时,会报创建数据文件失败的错误:
通过chown命令给数据库用户赋权。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31516720/viewspace-2759000/ ,如需转载,请注明出处,否则将追究法律责任。