表空间以及用户管理

一、表空间管理

1.1 DM 逻辑存储架构

DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库
内 部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对
象都 存放在这些表空间中。同时,表空间被进一步划分为段、簇和页(也称块)。通过这
种细分,可以使得 DM 数据库能够更加高效地控制磁盘空间的利用率。
在这里插入图片描述

在 DM8 中存储的层次结构如下:

  1. 数据库由一个或多个表空间组成;
  2. 每个表空间由一个或多个数据文件组成;
  3. 每个数据文件由一个或多个簇组成;
  4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
  5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
  6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元

1.2、表空间

在创建 DM 数据库时,会自动创建 5 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN
表空间、TEMP 表空间和 HMAIN 表空间。

  1. SYSTEM 表空间存放了有关 DM 数据库的字典信息,用户不能在 SYSTEM 表空间
    创建表和索引。
  2. ROLL 表空间完全由 DM 数据库自动维护,用户无需干预。该表空间用来存放事务
    运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视
    图。
  3. MAIN 表空间在初始化库的时候,就会自动创建一个大小为 128M 的数据文件
    MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为
    用户默认的表空间。
  4. TEMP 表空间完全由 DM 数据库自动维护。当用户的 SQL 语句需要磁盘空间来完
    成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完
    成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP 表空间。
  5. HMAIN 表空间属于 HTS 表空间,完全由 DM 数据库自动维护,用户无需干涉。
    当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下,充当默认 HTS 表空间。

1.3、表空间使用常用语法

1.3.1、语法格式

CREATE TABLESPACE <表空间名> <数据文件子句>[<数据页缓冲池子句>][<存储加密子句>]
<数据文件子句> ::= DATAFILE <文件说明项>{,<文件说明项>}
<文件说明项> ::= <文件路径> [ MIRROR <文件路径>] SIZE <文件大小>[<自动扩展子句>]
<自动扩展子句> ::= AUTOEXTEND <ON [<每次扩展大小子句>][<最大大小子句> |OFF>
<每次扩展大小子句> ::= NEXT <扩展大小>
<最大大小子句> ::= MAXSIZE <文件最大大小>
<数据页缓冲池子句> ::= CACHE = <缓冲池名>
<存储加密子句> ::= ENCRYPT WITH <加密算法> [[BY] <加密密码>]

1.3.2、注意事项

在创建表空间时,通常只需要指定表空间名称,数据文件路径、数据文件大小、其他属
性。有几点需要注意:

  1. 单个表空间的数据文件数量不能超过 256 个
  2. 达梦数据库最多支持 65535 个表空间
  3. 数据文件的单位是 MB,在创建的时候只需要写数字。不需要额外添加单位。数据文
    件大小取决于页大小。
数据库页大小 每个字符类型字段实际最大长度(字节) 每行记录最大字段外其他字段总长度(字节) 表空间单个数据文件 最小/最大(MB)
4KB 1938 2047 16/8388608
8KB 3878 4095 32/16777216
16KB 8000 8195 64/33554432
32KB 8188 16176 128/67108864

1.3.3、创建表空间

SQL> create tablespace test datafile '+DMDATA/data/dsc/test.dbf' size 512; 
操作已执行 
已用时间: 00:00:03.122. 执行号:932. 
SQL> select file_name, tablespace_name, status, autoextensible from dba_data_files 
where tablespace_name='TEST'; 

行号     FILE_NAME               TABLESPACE_NAME STATUS    AUTOEXTENSIBLE 
---------- ------------------------- --------------- --------- --------------
1          +DMDATA/data/dsc/test.dbf TEST          AVAILABLE YES 

已用时间: 4.082(毫秒). 执行号:933. 

--创建表空间指定两个数据文件 
SQL> create tablespace test1 datafile '+DMDATA/data/dsc/test1_01.dbf' size 
256,'+DMDATA/data/dsc/test1_02.dbf' size 256; 
操作已执行 
已用时间: 00:00:07.732. 执行号:934. 
SQL>
SQL> select file_name, tablespace_name, status, autoextensible from dba_data_files 
where tablespace_name='TEST1'; 

行号     FILE_NAME                   TABLESPACE_NAME STATUS    AUTOEXTENSIBLE 
---------- ----------------------------- --------------- --------- --------------
1          +DMDATA/data/dsc/test1_01.dbf TEST1          AVAILABLE YES 
2          +DMDATA/data/dsc/test1_02.dbf TEST1          AVAILABLE YES 

已用时间: 2.341(毫秒). 执行号:935. 

1.3.4、扩展表空间

扩展表空间有两种方法:(1)、增加数据文件(2)、resize 原数据文件大小
例:扩展表空间 TEST

--resize 数据文件 
SQL> alter tablespace test resize datafile '+DMDATA/data/dsc/test.dbf' to 500; 
操作已执行 
已用时间: 00:00:02.357. 执行号:936.
 
--增加数据文件 
SQL> alter tablespace test add datafile '+DMDATA/data/dsc/test_02.dbf' size 256; 
操作已执行 
已用时间: 00:00:03.276. 执行号:937. 

--查询表空间情况 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible from dba_data_files where tablespace_name='TEST'; 

行 号        FILE_NAME                               TABLESPACE_NAME Size (MB) 
STATUS   AUTOEXTENSIBLE 
---------- ---------------------------- --------------- -------------------- 
--------- --------------
1                 +DMDATA/data/dsc/test.dbf        TEST              500 
AVAILABLE YES 
2                 +DMDATA/data/dsc/test_02.dbf TEST                  256 
AVAILABLE YES 

已用时间: 5.102(毫秒). 执行号:939.
SQL>

1.3.5、修改数据文件扩展属性

表空间默认是自动扩展的,用户可以修改表空间的相应属性。
(1)是否开启自动扩展属性 autoextend
(2)每次扩展的大小,取值范围 0~2048 单位 MB
(3)数据文件最大大小,maxsize <文件限制大小> 单位 MB

--关闭自动扩展 
SQL> alter tablespace test datafile '+DMDATA/data/dsc/test.dbf' autoextend off; 
操作已执行 
已用时间: 122.623(毫秒). 执行号:940. 
SQL> 

--开启自动扩展并设置最大限制 
SQL> alter tablespace test datafile '+DMDATA/data/dsc/test_02.dbf' autoextend on 
next 10 maxsize 10240; 
操作已执行 
已用时间: 186.332(毫秒). 执行号:941. 
SQL> 

--查询数据文件自动扩展信息 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible,  INCREMENT_BY,  MAXBYTES/1024/1024  "MaxSize(MB)"  from dba_data_files where tablespace_name='TEST'; 

行 号      FILE_NAME                            TABLESPACE_NAME Size (MB) 
STATUS  AUTOEXTENSIBLE INCREMENT_BY MaxSize(MB) 
---------- ---------------------------- --------------- -------------------- 
--------- -------------- ------------ -----------
1                +DMDATA/data/dsc/test.dbf    TEST                   500 
AVAILABLE NO           0            0 
2                +DMDATA/data/dsc/test_02.dbf TEST                   256 
AVAILABLE YES         10            10240 

已用时间: 2.341(毫秒). 执行号:943.

1.3.6、修改表空间名以及移动数据文件

--在线修改表空间名称 
SQL> alter tablespace test rename to test3; 
操作已执行 
已用时间: 232.025(毫秒). 执行号:944. 

--查询表空间信息 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible,  INCREMENT_BY,  MAXBYTES/1024/1024  "MaxSize(MB)"  from 
dba_data_files where tablespace_name='TEST3'; 

行 号       FILE_NAME                           TABLESPACE_NAME Size (MB) 
STATUS   AUTOEXTENSIBLE INCREMENT_BY MaxSize(MB) 
---------- ---------------------------- --------------- -------------------- --------- -------------- ------------ -----------
1                 +DMDATA/data/dsc/test.dbf  TEST3                   500 
AVAILABLE NO           0             0 
2                +DMDATA/data/dsc/test_02.dbf TEST3                256 
AVAILABLE YES          10           10240 

已用时间: 4.232(毫秒). 执行号:945. 
SQL> 

--RENAME 数据文件位置,自动帮你移动不需要人为手动 

SQL> alter tablespace test3 offline; 
操作已执行 
已用时间: 173.767(毫秒). 执行号:946. 
SQL> 
SQL> alter tablespace test3 rename datafile '+DMDATA/data/dsc/test.dbf' to 
'+DMDATA/data/dsc/test3_01.dbf'; 
操作已执行 
已用时间: 00:00:05.531. 执行号:947. 
SQL> 
SQL> alter tablespace test3 rename datafile '+DMDATA/data/dsc/test_02.dbf' to 
'+DMDATA/data/dsc/test3_02.dbf'; 
操作已执行
已用时间: 00:00:02.654. 执行号:948. 
SQL> 
SQL> alter tablespace test3 online; 
操作已执行 
已用时间: 157.354(毫秒). 执行号:949. 
SQL> 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible,   INCREMENT_BY,   MAXBYTES/1024/1024   "MaxSize(MB)"   from 
dba_data_files where tablespace_name='TEST3'; 

行 号       FILE_NAME                            TABLESPACE_NAME Size (MB) 
STATUS   AUTOEXTENSIBLE INCREMENT_BY MaxSize(MB) 
---------- ----------------------------- --------------- -------------------- 
--------- -------------- ------------ ----------- 
1                  +DMDATA/data/dsc/test3_01.dbf TEST3                500 
AVAILABLE NO            0            0 
2                  +DMDATA/data/dsc/test3_02.dbf TEST3                256 
AVAILABLE YES           10           10240 

已用时间: 3.654(毫秒). 执行号:950.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值