DM达梦数据库表空间管理

1、DM表空间介绍

达梦数据库的系统表空间有哪些?

select tablespace_name from dba_tablespaces;
select name from v$tablespace;
SQL> select name from v$tablespace;

LINEID     NAME  
---------- ------
1          SYSTEM
2          ROLL
3          TEMP
4          MAIN
  • System表空间:数据字典和全局的系统数据。

  • ROLL:存放了数据库运行过程中产生的回滚记录。

    UNDO_RETENTION: 单位是秒。
    Sp_set_para_double_value(2,’UNDO_RETENTION’,2400)

  • TEMP:临时表空间, 临时段,临时表默认都存放在临时表空间上。

  • MAIN: 数据库默认的表空间,创建数据对象时,如果不指定存储位置,默认存放到该表空间。

  • HMAIN: huge 表空间

2、表空间规划及相关案例

案例1:创建表空间

SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 31;

用上述语句创建表空间会报错,如:
在这里插入图片描述
因为添加的数据文件大小最小为 4096页大小,如页大小为 8K,则可添加的文件最小值为 40968k=32M
所以应该改成:
在这里插入图片描述

案例2:创建一个表空间,初始大小50M,最大100M

SQL> create tablespace tbs2 datafile '/dm7/data/DAMENG/tbs2_01.dbf' size 50 autoextend on maxsize 100;

在这里插入图片描述

案例3:创建一个表空间,初始50M,每次扩展1M,最大100M

SQL> create tablespace tbs3 datafile '/dm7/data/DAMENG/tbs3_01.dbf' size 50 autoextend on next 1 maxsize 100;

在这里插入图片描述

案例4:创建一个表空间,初始50M,表空间由2个数据文件组成,分别存储到不同的磁盘上,每次扩展1m,每个数据文件最大100M

SQL> create tablespace tbs4 datafile '/dm7/data/DAMENG/tbs4_01.dbf' size 50 autoextend on next 1 maxsize 100,'/dm7/data/tbs4_02.dbf' size 50 autoextend on next 1 maxsize 100;

在这里插入图片描述

3、维护表空间

表空间不足的时候,如何去维护表空间:

  • 创建大表空间,数据导出,导入。
  • Resize 数据文件大小。
  • 增加数据文件。
SQL> alter tablespace tbs2 add datafile '/dm7/data/DAMENG/tbs2_02.dbf' size 50 autoextend on maxsize 100;

在这里插入图片描述
更换存储位置:
达梦表空间的状态:
0------ Online
1-------offline;

SQL> select TABLESPACE_NAME,STATUS from dba_tablespaces;

在这里插入图片描述
注意:system,roll,temp 不能offline;

–更换存储位置例子:
更换TBS1的存储位置。
1、表空间 offline;

SQL> alter tablespace tbs1 offline;

2、修改存储位置

SQL> alter tablespace tbs1 rename datafile '/dm7/data/DAMENG/tbs1_01.dbf' to '/dm7/data/tbs1_01.dbf';

在这里插入图片描述
3、表空间online

SQL> alter tablespace tbs1 online;

至此,表空间存储位置修改完成!

4、删除表空间

SQL> drop tablespace tbs1;

注意:如果表空间存数据,不允许直接删除!

5、HUGE表空间管理

huge表空间创建:
这里不同的是:huge表空间创建时需要指定一个空的目录,而不是数据文件。

SQL> create huge tablespace H1 path '/opt/dm/dmdbms/data/DAMENG/H1';
executed successfully

在huge表空间中建表:

SQL> create huge table huge_t1(id int,name varchar) storage (on H1);
executed successfully

删除huge表空间:
需要先删除表空间中对象。

SQL> drop table huge_t1 purge;
executed successfully
SQL> drop huge tablespace H1;
executed successfully
发布了155 篇原创文章 · 获赞 88 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39540651/article/details/105053306