暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【达梦8】 表空间的管理

原创 李美静 恩墨学院 2021-09-24
2435

本篇文章主要来介绍达梦8 数据库中存储管理的逻辑存储结构,表空间的管理。
此篇文章主要内容如下脑图:
表空间管理01.PNG

一 表空间的概述

在 DM 数据库中,表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。
在创建 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 表空间。
    每一个用户都有一个默认的表空间。对于 SYS、SYSSSO、SYSAUDITOR 系统用户,默 认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间。
    通过实验方式查看表空间信息:
    相关的数据字典:
SQL> desc v$tablespace;

行号     NAME          TYPE$        NULLABLE
---------- ------------- ------------ --------
1          ID            INTEGER      Y
2          NAME          VARCHAR(128) Y
3          CACHE         VARCHAR(20)  Y
4          TYPE$         TINYINT      Y
5          STATUS$       TINYINT      Y
6          MAX_SIZE      BIGINT       Y
7          TOTAL_SIZE    BIGINT       Y
8          FILE_NUM      INTEGER      Y
9          ENCRYPT_NAME  VARCHAR(128) Y
10         ENCRYPTED_KEY VARCHAR(500) Y
11         COPY_NUM      INTEGER      Y

行号     NAME      TYPE$        NULLABLE
---------- --------- ------------ --------
12         SIZE_MODE VARCHAR(128) Y
12 rows got
SQL> desc dba_tablespaces;

行号     NAME            TYPE$        NULLABLE
---------- --------------- ------------ --------
1          TABLESPACE_NAME VARCHAR(128) Y
2          BLOCK_SIZE      BIGINT       Y
3          INITIAL_EXTENT  VARCHAR(1)   Y
4          NEXT_EXTENT     VARCHAR(1)   Y
5          MIN_EXTENTS     VARCHAR(1)   Y
6          MAX_EXTENTS     VARCHAR(1)   Y
7          MAX_SIZE        BIGINT       Y
8          PCT_INCREASE    VARCHAR(1)   Y
9          MIN_EXTLEN      VARCHAR(1)   Y
10         STATUS          INTEGER      Y
11         CONTENTS        VARCHAR(9)   Y

行号     NAME                     TYPE$      NULLABLE
---------- ------------------------ ---------- --------
12         LOGGING                  VARCHAR(1) Y
13         FORCE_LOGGING            VARCHAR(1) Y
14         EXTENT_MANAGEMENT        VARCHAR(1) Y
15         ALLOCATION_TYPE          VARCHAR(1) Y
16         PLUGGED_IN               VARCHAR(1) Y
17         SEGMENT_SPACE_MANAGEMENT VARCHAR(1) Y
18         DEF_TAB_COMPRESSION      VARCHAR(8) Y
19         RETENTION                VARCHAR(1) Y
20         BIGFILE                  VARCHAR(1) Y
21         PREDICATE_EVALUATION     VARCHAR(1) Y
22         ENCRYPTED                VARCHAR(1) Y

行号     NAME         TYPE$      NULLABLE
---------- ------------ ---------- --------
23         COMPRESS_FOR VARCHAR(1) Y

23 rows got

查询数据库中的表空间:

SQL> select name,cache,file_num,status$ from v$tablespace;

行号     NAME     CACHE  FILE_NUM    STATUS$    
---------- -------- ------ ----------- -----------
1          SYSTEM          1           0
2          ROLL            1           0
3          TEMP            1           0
4          MAIN            1           0
5          BOOKSHOP NORMAL 1           0
6          DMHR     NORMAL 1           0

6 rows got
SQL> select tablespace_name,contents,status from dba_tablespaces;

行号     TABLESPACE_NAME CONTENTS  STATUS     
---------- --------------- --------- -----------
1          SYSTEM          PERMANENT 0
2          ROLL            UNDO      0
3          TEMP            TEMPORARY 0
4          MAIN            PERMANENT 0
5          BOOKSHOP        PERMANENT 0
6          DMHR            PERMANENT 0
7          HMAIN           PERMANENT NULL
7 rows got

二 创建表空间

理论上最多允许有 65535 个表空间,但用户允许创建的表空间 ID 取值范围为
0~32767,超过 32767 的只允许系统使用,ID 由系统自动分配,ID 不能重复使用,即使删除掉已有表空间,也无法重复使用已用 ID 号,也就是说只要创建 32768 次表空间后,用户将无法再创建表空间。
创建表空间的语法:
create tbs.png
语法2.png
语法三.png
实操创建表空间:
tbs表空间,有一个数据文件大小为50M。
注:数据文件在定义时不要加单位,默认为M。

SQL> create tablespace tbs datafile '/dm8/data/DAMENG/tbs01.dbf' size 50;
操作已执行

三 修改表空间

语法:

ALTER TABLESPACE <表空间名> [ONLINE|OFFLINE|CORRUPT|<表空间重命名子句>|<数据文件重命名子句>|<增加数据文件子句>|<修改文件大小子句>|<修改文件自动扩展子句>|<数据页缓冲池子句>]

3.1 修改表空间状态

注意:
MPP 环境下,可能发现节点间的表空间不一致情况,如:EP01 为 ONLINE 状态,
EP02 为 OFFLINE 状态,这个时候,无论执行 ONLINE 还是 OFFLINE 都是报错。需要用户介入 , 才 可 以 解 决 问 题 。 用 户 LOCAL 方 式 登 陆 实 例 , 并 执 行SP_SET_SESSION_LOCAL_TYPE(1),使得该会话可以执行 DDL 操作,再执行 ONLINE 或者 OFFLINE 即可
查看bookshop表空间状态,然后更改状态为offline:
ALTER TABLESPACE bookshop OFFLINE/online;

3.2 修改表空间名

可修改已存在的由用户创建的表空间的名称。比如可修改 bookshop 表空间名为books。
ALTER TABLESPACE bookshop RENAME TO books;

3.3 修改表空间数据缓冲区

用户表空间可以切换使用的数据缓冲区,系统表空间、回滚表空间、重做日志表空间和
临时文件表空间不允许修改数据缓冲区。可以使用的数据缓冲区有 NORMAL 和 KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名 KEEP 是达梦的保留关键字,使用时必须加双引号。例如将 bookshop 表空间绑定到 KEEP 缓冲区。
ALTER TABLESPACE bookshop CACHE= “KEEP”;

四 表空间和数据文件的对应关系

SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID= df.GROUP_ID;
ALTER TABLESPACE bookshop RENAME TO books;
SQL> select tablespace_name,file_name from dba_data_files;

行号     TABLESPACE_NAME FILE_NAME                    
---------- --------------- -----------------------------
1          SYSTEM          /dm8/data/DAMENG/SYSTEM.DBF
2          DMHR            /dm8/data/DAMENG/DMHR.DBF
3          BOOKSHOP        /dm8/data/DAMENG/BOOKSHOP.DBF
4          MAIN            /dm8/data/DAMENG/MAIN.DBF
5          TEMP            /dm8/data/DAMENG/TEMP.DBF
6          ROLL            /dm8/data/DAMENG/ROLL.DBF

6 rows got

五 表空间文件失效检查

如果数据文件被删除,DM8 系统能够及时检测出来,并立刻停止对其继续使用并通知用户。
在 dm.ini 中参数 FIL_CHECK_INTERVAL 的值指定 DM8 系统检查数据文件是否仍存在的时间间隔。将其设为 0 表示不进行检查。
也可以通过系统过程 SP_FILE_SYS_CHECK来手动的进行检查系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除.
在误操作删除数据文件之后,可以通过执行此系系统过程,让数据库自行检查OS上的数据文件是否正常,如果检查失败,文件已不存在,那么在关闭数据库之前发现问题,可以利用句柄完成恢复。
当然如果有备份也可以用备份来恢复。

最后修改时间:2021-09-24 16:05:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论