达梦数据库表空间
程序员文章站
2024-03-21 09:55:34
...
创建表空间:
规划磁盘表空间数据库文件的存放位置,数据文件大小。 DM 要求数据文件的大小要大于页大小的 4096 倍,小于页大小的 2(31 次方)-1 倍
默认创建表空间,缓冲区类型为 NORMAL。
create tablespace tbs DATAFILE '/home/dmdbms/DAMENG/TBS01.dbf' SIZE 32 CACHE=normal;
指定缓冲区为 KEEP:
create tablespace tbs_keep DATAFILE '/dm/data/DAMENG/TBSKEEP01.dbf' SIZE 32 CACHE="KEEP";
select page*4096/1024/1024;
select * from DBA_TABLESPACES;
select * from DBA_DATA_FILES;
1、查看表空间
select * from v$tablespace;
select t.name,f.* from v$datafile f ,v$tablespace t where t.id=0 and t.id=f.group_id;
select tablespace_name,FILE_NAME,bytes/1024/1024 from dba_data_files;
2、创建表空间
create tablespace tbs DATAFILE '/home/dmdbms/DAMENG/TBS01.DBF' SIZE 200;
DM 表空间的数据文件只能增加、不能减少,也不能单独删除某个数据文件,只能删除整个表空间。表空间有数据时不能直接删除。
create tablespace tbs datafile '/dm/data/DAMENG/tbs01.dbf' size 128 autoextend on next 1 maxsize 20480,'/dm7/data/DAMENG/tbs02.dbf' size 128 autoextend on next 1 maxsize 20480; -----设置自动扩展,最大限制。
3、表空间扩容、缩小
扩容有两种方式,resize现有datdfile,或增加数据文件
alter tablespace "tbs" resize datafile '/data/dm/DAMENG/TBS01.dbf' to 400;
alter tablespace "tbs" add datafile '/data/dm/DAMENG/TBS02.dbf' size 200;
达梦数据库无法通过resize或者drop datafile来缩小表空间,只能通过迁移,导入导出来实现。
4、临时表空间创建
临时表空间不能单独创建,而是通过dm.ini参数文件修改,并且临时表空间只能有一个
TEMP_PATH = d:\champion\data\DAMENG #temporary file path
TEMP_SIZE = 10 #temporary file size in Megabytes
TEMP_SPACE_LIMIT = 0 #temp space limit in megabytes
重启生效
5、创建大表空间
create huge tablespace "TS_big_data" path 'D:\champion\data\DAMENG\big_data';
6、表空间删除
drop tablespace TBS;
7、表空间迁移
普通表空间数据文件的迁移:
create tablespace tbs DATAFILE '/data/dm/TBS01.DBF' SIZE 200;
select tablespace_name,file_name,bytes/1024/1024 from dba_data_files;
alter tablespace tbs offline;
alter tablespace tbs RENAME DATAFILE '/data/dm/TBS01.DBF' to '/data/dm/DAMENG/TBS01.DBF';
alter tablespace tbs online;
8、查看表空间使用率
SELECT
a.tablespace_name "表空间名称" ,
total / (1024 * 1024) "表空间大小(M)" ,
free / (1024 * 1024) "表空间剩余大小(M)" ,
(total - free) / (1024 * 1024 ) "表空间使用大小(M)" ,
round((total - free) / total, 4) * 100 "使用率 %"
FROM (
SELECT
tablespace_name,
SUM(bytes) free
FROM
dba_free_space
GROUP BY
tablespace_name
) a,
(
SELECT
tablespace_name,
SUM(bytes) total
FROM
dba_data_files
GROUP BY
tablespace_name
) b
WHERE
a.tablespace_name = b.tablespace_name;
更多资讯请上达梦技术社区了解: https://eco.dameng.com