1. 达梦数据库默认表空间
1)SYSTEM(系统表空间,用于存放数据字典信息)
2)ROLL(回滚表空间,用于存放的回滚数据,支持MVCC(事务多版本))
3)TEMP(临时表空间,用于存放是临时数据)
4)MAIN(main表空间,如果用户创建数据对象,不指定存储位置,默认存放到main)
5)HMAIN(Hmain表空间,用于存放的是huge table的信息)
查找数据库中的表空间
SQL> select tablespace_name from dba_tablespaces;
2. 创建一个表空间
案例1:
创建一个表空间tbs,数据文件存放到$DM_HOME/data/DB_NAME中,初始文件大小为31M。
错误:SQL> create tablespace tbs datafile ‘/dm7/data/DAMENG/TBS.dbf’ SIZE 31;
由于初始文件的大小必须是page的4096倍,当前我本机为8k,则初始文件大小应为32M,因此
正确:SQL> create tablespace tbs datafile ‘/dm7/data/DAMENG/TBS.dbf’ SIZE 32;
其中查看page大小:
SQL>select page;
案例2:
创建一个表空间tbs2,要求2个数据文件,分别存放到不同的disk上,初始大小为32M,单个文件大100M。
SQL> 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;
其中找出表空间的可用大小:
SQL> select tablespace_name,bytes/1024/1024 from dba_free_space where tablespace_name=‘TBS2’;
未指定扩展的大小是:
SQL> select page;
SQL> select sf_get_extent_size();
案例3:
规划表空间tbs3,初始文件大小32M,每次扩展1M,最大33M。
SQL> create tablespace tbs3 datafile ‘/dm7/data/DAMENG/tbs3.dbf’ size 32 autoextend on next 1 maxsize 33;
3. 如何维护和管理表空间?
1)表空间不足(3种方法)
A. 创建大的表空间数据导出在导入
B. 把表空间数据文件resize
C.增加数据文件(推荐)
SQL> alter tablespace tbs3 add datafile ‘/dm7/data/DAMENG/tbs3_1.dbf’ size 32 autoextend on maxsize 50;
2)表空间更换存储位置
SQL> select tablespace_name,file_name from dba_data_files where tablespace_name=‘TBS’;
注意:表空间更换存储位置,要求表空间offline
SQL> select tablespace_name,status from dba_tablespaces;
0表示的是online,1表是的是offline
SQL> alter tablespace tbs offline;
SQL> alter tablespace tbs rename datafile ‘/dm7/data/DAMENG/TBS.dbf’ to ‘/dm7/tbs/TBS.dbf’;
SQL> alter tablespace tbs online;
3)删除表空间
SQL> drop tablespace tbs3;
注意:不能删除存在数据的表空间