达梦数据库表空间管理

达梦数据库

  • 表空间
    • 默认表空间
    • 创建表空间
      • 案例1
      • 案例2
      • 案例3
    • 维护和管理表空间
      • 表空间不足
      • 表空间更换存储位置
      • 删除表空间

表空间

达梦数据库的物理结构是:文件系统——数据文件,逻辑结构是:数据库——表空间——段——簇——页,两者的交集是数据文件和表空间,表空间由多个数据文件构成。

默认表空间

// 查看默认表空间
select tablespace_name from dba_tablespaces;
  1. SYSTEM(系统表空间,存放数据字典信息)
  2. ROLL(回滚表空间,存放回滚数据,支持MVCC事务多版本)
  3. TEMP(临时表空间,存放临时数据)
  4. MAIN(main表空间,如果用户创建数据对象,不指定存储位置,默认存放在本空间)
  5. HMAIN(hmain表空间,存放的是huge table的信息)

创建表空间

案例1

创建一个表空间tbs,数据存放到$DM_HOME/data/DB_NAME中,初始文件大小为31M

create tablespace tbs datafile ‘/dm7/data/DAMENG/TBS.dbf’ SIZE 31;

注意: 执行以上命令会出错,因为初始文件的大小要求是page的4096倍。

案例2

创建一个表空间tbs2,要求有两个数据文件,分别存放到不同的disk上,初始大小为32M,单个文件最大100M

mkdir dist{1, 2};
create tablespace tbs2 datafile ‘/dm7/data/DAMENG/disk1/TBS2_1.dbf’ size 32 autoextend on maxsize 100, ‘/dm7/data/DAMENG/disk2/TBS2_2.dbf’ size 32 autoextend on maxsize 100;

注意: 要设置最大值,必须打开自动扩展功能autoextend on

找出表空间的可用大小:

desc dba_free_space
select tablespace_name,bytes/1024/1024 from dba_free_space where tablespace_name=’TBS2’;

未指定扩展的大小是多少:

select page;
select sf_get_extent_size();
8K * 16 = 128K

案例3

规划表空间tbs3,初始文件大小32M,每次扩展1M,最大33M

create tablespace tbs3 datafile ‘/dm7/data/DAMENG/TBS3.dbf’ size 32 autoextend on next 1 maxsize 33;

维护和管理表空间

表空间不足

create table test tablespace
  1. 创建一个大的表空间数据导出再导入
  2. 把表空间的数据文件resize
  3. 推荐:增加数据文件
alter tablespace tbs3 add datafile ’/dm7/data/DAMENG/tbs3_1.dbf’ size 32 autoextend on maxsize 50;

表空间更换存储位置

select tablespace_name,file_name from dba_data_files where tablespace_name = ‘TBS’;

注意:表空间更换存储位置,要求表空间offline

select tablespace_name,status from dba_tablespaces;

status中0表示的是online,1表示offline;

alter tablespace tbs offline;
alter tablespace tbs rename datafile ‘/dm7/data/DAMENG/TBS.dbf’ to ‘/dm7/tbs/TBS.dbf’;
alter tablespace tbs online;

删除表空间

如果表空间存在数据,不予许直接删除

drop tablespace tbs;

你可能感兴趣的:(达梦数据库表空间管理)