达梦数据库的系统表空间有哪些?
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 表空间
案例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;
表空间不足的时候,如何去维护表空间:
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';
SQL> alter tablespace tbs1 online;
至此,表空间存储位置修改完成!
SQL> drop tablespace tbs1;
注意:如果表空间存数据,不允许直接删除!
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