达梦数据库基本操作-表空间管理

表空间是一个比较重要的逻辑概念,表空间是由物理数据文件组成。在实际的系统中,我们都会为业务用户创建独立的表空间和用户。
创建表空间的语法如下:
CREATE TABLESPACE <表空间名> <数据文件子句>[<数据页缓冲池子句>][<存储加密子句>]
<数据文件子句> ::= DATAFILE <文件说明项>{,<文件说明项>}
<文件说明项> ::= <文件路径> [ MIRROR <文件路径>] SIZE <文件大小>[<自动扩展子句>]
<自动扩展子句> ::= AUTOEXTEND <ON [<每次扩展大小子句>][<最大大小子句> |OFF>
<每次扩展大小子句> ::= NEXT <扩展大小>
<最大大小子句> ::= MAXSIZE <文件最大大小>
<数据页缓冲池子句> ::= CACHE = <缓冲池名>
<存储加密子句> ::= ENCRYPT WITH <加密算法> [[BY] <加密密码>]
 
在创建表空间时,通常只需要指定表空间名称,数据文件路径、数据文件大小、其他属性。有几点需要注意:
1) 单个表空间的数据文件数量不能超过256个
2) 达梦数据库最多支持65535个表空间
3) 数据文件的单位是MB,在创建的时候只需要写数字。不需要额外添加单位。数据文件大小取决于页大小。
数据库页大小每个字符类型字段实际最大长度(字节)每行记录最大字段外其他字段总长度(字节)表空间单个数据文件最小 (MB)/最大 (MB)
4 KB1938204716/8388608
8 KB3878409532/16777216
16 KB8000819564/33554432
32 KB818816176128/67108864
1.创建表空间
SQL> create tablespace tbs_aa  datafile '/dm/dmdbms/data/PROD/tbs_aa01.dbf' size 256;
操作已执行
已用时间: 41.303(毫秒). 执行号:306.
SQL>
SQL> create tablespace tbs_bb  datafile '/dm/dmdbms/data/PROD/tbs_bb01.dbf' size 256  ,'/dm/dmdbms/data/PROD/tbs_bb02.dbf' size 256;
操作已执行
已用时间: 26.996(毫秒). 执行号:307.
SQL>
SQL>
SQL> select a.name,b.id,b.path from v$tablespace a, v$datafile b where a.id=b.group_id;

行号     NAME         ID          PATH
---------- ------------ ----------- -----------------------------------
1          SYSTEM       0           /dm/dmdata/prod/SYSTEM.DBF
2          TBS_BB       1           /dm/dmdbms/data/PROD/tbs_bb02.dbf
3          TBS_BB       0           /dm/dmdbms/data/PROD/tbs_bb01.dbf
4          TBS_AA       0           /dm/dmdbms/data/PROD/tbs_aa01.dbf

5          TBS_PROD_IDX 0           /dm/dmdbms/data/PROD/idx_prod01.dbf
6          TBS_PROD     0           /dm/dmdbms/data/PROD/tbs_prod01.dbf
7          DMHR         0           /dm/dmdata/prod/DMHR.DBF
8          BOOKSHOP     0           /dm/dmdata/prod/BOOKSHOP.DBF
9          MAIN         0           /dm/dmdata/prod/MAIN.DBF
10         TEMP         0           /dm/dmdata/prod/TEMP.DBF
11         ROLL         0           /dm/dmdata/prod/ROLL.DBF

11 rows got

已用时间: 1.955(毫秒). 执行号:308.
SQL>
 
可以到看,创建表空间命令可以一次指定2个数据文件。
2.扩张表空间
表空间大小的扩张有两种主要方法:
a) 扩展现有的数据文件大小
b) 增加新的数据文件
为tbs_aa 表空间添加了一个新的数据文件
SQL>
SQL> alter tablespace tbs_aa add datafile '/dm/dmdbms/data/PROD/tbs_aa02.dbf' size 256;
操作已执行
已用时间: 14.775(毫秒). 执行号:309.
SQL>
SQL>
SQL> select a.name,b.id,b.path from v$tablespace a, v$datafile b where a.id=b.group_id;

行号     NAME         ID          PATH
---------- ------------ ----------- -----------------------------------
1          SYSTEM       0           /dm/dmdata/prod/SYSTEM.DBF
2          TBS_BB       1           /dm/dmdbms/data/PROD/tbs_bb02.dbf
3          TBS_BB       0           /dm/dmdbms/data/PROD/tbs_bb01.dbf
4          TBS_AA       1           /dm/dmdbms/data/PROD/tbs_aa02.dbf
5          TBS_AA       0              /dm/dmdbms/data/PROD/tbs_aa01.dbf

6          TBS_PROD_IDX 0           /dm/dmdbms/data/PROD/idx_prod01.dbf
7          TBS_PROD     0           /dm/dmdbms/data/PROD/tbs_prod01.dbf
8          DMHR         0           /dm/dmdata/prod/DMHR.DBF
9          BOOKSHOP     0           /dm/dmdata/prod/BOOKSHOP.DBF
10         MAIN         0           /dm/dmdata/prod/MAIN.DBF
11         TEMP         0           /dm/dmdata/prod/TEMP.DBF

行号     NAME ID          PATH
---------- ---- ----------- ------------------------
12         ROLL 0           /dm/dmdata/prod/ROLL.DBF

12 rows got

已用时间: 1.204(毫秒). 执行号:310.
SQL>
 
把数据文件扩大500M
SQL>
SQL> alter tablespace tbs_aa resize  datafile '/dm/dmdbms/data/PROD/tbs_aa02.dbf' to 500;
操作已执行
已用时间: 8.077(毫秒). 执行号:311.
SQL>
SQL>
SQL> select tablespace_name, file_id,  bytes/1024/1024 as "size",file_name from dba_Data_files where tablespace_name='TBS_AA';

行号     TABLESPACE_NAME FILE_ID     size                 FILE_NAME
---------- --------------- ----------- -------------------- ---------------------------------
1          TBS_AA          0           256                  /dm/dmdbms/data/PROD/tbs_aa01.dbf
2          TBS_AA          1           500                  /dm/dmdbms/data/PROD/tbs_aa02.dbf

已用时间: 93.597(毫秒). 执行号:312.
SQL>
SQL>
3.修改数据文件的扩展属性
表空间默认是自动扩展的,用户可以修改表空间的相应属性。
a) 是否开启自动扩展属性 autoextend
b) 每次扩展的大小,取值范围 0~2048 单位 MB
c) 数据文件最大大小,maxsize <文件限制大小> 单位MB
alter tablespace tbs_aa datafile '/dm/dmdbms/data/PROD/tbs_aa02.dbf'  autoextend on next 100 maxsize 20000;
4.修改表空间名
SQL>
SQL> alter tablespace tbs_aa  rename to tbs_dm;
操作已执行
已用时间: 3.656(毫秒). 执行号:314.
SQL>
SQL> select tablespace_name, file_id,  bytes/1024/1024 as "size",file_name from dba_Data_files where tablespace_name='TBS_DM';

行号     TABLESPACE_NAME FILE_ID     size                 FILE_NAME
---------- --------------- ----------- -------------------- ---------------------------------
1          TBS_DM          0           256                  /dm/dmdbms/data/PROD/tbs_aa01.dbf
2          TBS_DM          1           500                  /dm/dmdbms/data/PROD/tbs_aa02.dbf

已用时间: 3.406(毫秒). 执行号:315.
SQL>
5.移动表空间位置
注意:dm的rename 命令会自动帮你移动数据文件的物理位置,不需要人为的mv操作
SQL>
SQL> alter tablespace TBS_DM offline;
操作已执行
已用时间: 123.136(毫秒). 执行号:316.
SQL>
SQL>
SQL> alter tablespace tbs_dm  rename  datafile '/dm/dmdbms/data/PROD/tbs_aa01.dbf'  to '/dm/dmdbms/data/PROD/tbs_aa03.dbf';
操作已执行
已用时间: 00:00:07.188. 执行号:317.
SQL>
SQL> alter tablespace TBS_DM online;
操作已执行
已用时间: 3.422(毫秒). 执行号:318.
SQL>
SQL>
6.删除表空间
SQL>
SQL> drop tablespace tbs_dm;
操作已执行
已用时间: 144.528(毫秒). 执行号:319.
SQL>
SQL>
删除后,对应的数据文件也会在操作系统层面删除。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值