达梦数据库的表空间

本文详细介绍了达梦数据库的默认表空间,包括SYSTEM、ROLL、TEMP、MAIN和HMAIN,并提供了创建表空间的实例,如调整数据文件大小、设置自动扩展和更改存储位置。同时,讨论了表空间维护,包括处理表空间不足的三种方法、更换存储位置的步骤以及删除表空间的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
注意:不能删除存在数据的表空间

### DM达梦数据库表空间的概念与使用 #### 一、表空间概述 DM达梦数据库中的表空间是一个逻辑存储单元,用于管理和分配磁盘上的物理文件资源。它将数据按照功能划分为不同的区域,便于维护和优化性能[^1]。 #### 二、主要表空间的功能描述 以下是DM达梦数据库中常见的五种表空间及其用途: - **SYSTEM 表空间** 存放系统的元数据信息,包括数据字典和其他全局系统数据。这是数据库的核心部分之一,任何操作都依赖于其完整性[^2]。 - **ROLL 表空间** 主要负责存储回滚记录,在事务处理机制中起到重要作用。特别是支持多版本并发控制 (MVCC),确保不同时间点的数据一致性[^4]。 - **TEMP 表空间** 提供了一个临时工作区给查询执行计划需要用到的中间结果集或者排序操作等场景下的暂存需求。 - **MAIN 表空间** 默认情况下新创建的对象如果没有特别指明所属,则会被放置在此处;它是普通用户最常使用的常规业务对象存放地[^3]。 - **HMAIN 表空间** 针对超大尺寸格设计专用分区方案时所涉及的大规模数据集合管理领域适用此类型配置选项。 #### 三、查看现有表空间命令 可以利用如下SQL语句来获取当前实例中存在的所有可用表空间名称列: ```sql SELECT TABLESPACE_NAME FROM DBA_TABLESPACES; ``` 此外还有其他几个重要视图可以帮助进一步探索关于各个具体类别下更详细的属性参数设置情况比如`DBA_DATA_FILES`, `V$TABLESPACE`; 及专门针对巨大型结构化资料组态状况报告工具——即所谓 Huge Table Space 的专属监控接口:`V$HUGE_TABLESPACE`[^1]. #### 四、实际应用案例分析 假设我们需要新增加一个新的自定义表空间叫做MY_NEW_TBS, 并且希望将其设定为未来新建默认归属目标的话,那么可以通过下面这段脚本来实现这一目的: ```sql CREATE BIGFILE TABLESPACE MY_NEW_TBS DATAFILE '/path/to/newfile.dbf' SIZE 10M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED; ALTER DATABASE DEFAULT TABLESPACE MY_NEW_TBS; ``` 这里需要注意的是路径以及初始大小可以根据实际情况调整适应环境差异性要求[^2]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值