2.2.1 表空间管理
在达梦数据库中,表空间由一个或者多个数据文件组成。达梦数据库中的所有对象在逻辑上都存放在表空间中,而在物理上都存储在所属表空间的数据文件中。创建达梦数据库时,会自动创建5个表空间,即:SYSTEM表空间、ROLL表空间、MAIN表空间、TEMP表空间和HMAIN表空间。
每一个用户都有一个默认的表空间。对于SYS、SYSSSO、SYSAUDITOR用户,默认表空间是SYSTEM表空间;对于SYSDBA用户,默认表空间是MAIN表空间;对于新创建的用户,如果没有指定默认表空间,则系统自动指定MAIN表空间为默认表空间。如果用户创建表,一般情况下,建议用户自己创建一个表空间来存放业务数据,或者将数据存放在默认的MAIN表空间中。
用户可以通过执行如下语句来查看表空间相关信息。
SYSTEM、ROLL、MAIN和TEMP表空间查看语句如下:
HMAIN表空间查看语句如下:
1.创建表空间
(1)使用DM管理工具创建表空间,如图2-1所示,其参数说明如表2-1所示。
图2-1 创建表空间
表2-1 使用DM管理工具创建表空间参数说明
续表
(2)使用SQL语句创建表空间。
创建表空间语法格式如下:
创建表空间时需注意以下事项。
(1)创建表空间的用户必须具有创建表空间的权限,一般使用具有DBA权限的用户进行创建、修改、删除等表空间管理活动。
(2)表空间名在服务器中必须是唯一的。
(3)一个表空间最多可以拥有256个数据文件。
2.修改表空间
随着数据库的数据量不断增加,原来创建的表空间可能不能满足数据存储的需要,应当适时对表空间进行修改,增加数据文件或者扩展数据文件的大小。同样地,可以使用DM管理工具和SQL语句修改表空间。
(1)使用DM管理工具修改表空间,如图2-2所示。
(2)使用SQL语句修改表空间。
图2-2 修改表空间
表空间修改语法格式如下:
修改表空间时要注意以下事项。
(1)修改表空间的用户必须具有修改表空间的权限,一般使用具有DBA权限的用户进行创建、修改、删除等表空间管理活动。
(2)修改表空间数据文件大小时,其大小必须大于数据文件自身大小。
(3)如果表空间有未提交事务,不能修改表空间的OFFLINE状态。
(4)重命名表空间数据文件时,表空间必须处于OFFLINE状态,修改成功后再将表空间状态修改为ONLINE状态。
3.删除表空间
当业务发生变动或业务系统需要升级时,有些旧的表空间就需要删除,用新的表空间来替代。由于表空间中存储了表、视图、索引等数据对象,删除表空间必然导致数据损失,因此达梦数据库对删除表空间有严格限制。我们可以使用DM管理工具和SQL语句删除表空间。
(1)使用DM管理工具删除表空间,如图2-3所示。
图2-3 删除表空间
(2)使用SQL语句删除表空间。
删除表空间语法格式如下:
删除表空间时要注意以下事项。
(1)不允许删除SYSTEM、RLOG、ROLL和TEMP表空间。
(2)删除表空间的用户必须具有删除表空间的权限,一般使用具有DBA权限的用户进行创建、修改、删除等表空间管理活动。
(3)系统处于SUSPEND或MOUNT状态时不允许删除表空间,系统只有处于OPEN状态时才允许删除表空间。
(4)如果表空间存放了数据,则不允许删除表空间。如果确实要删除表空间,则必须先删除表空间中的数据对象。
4.查询表空间EMP的相关信息
DM8使用段、簇和页实现数据的物理组织。DM支持使用系统函数来查看表的空间使用情况,包括:
(1)TABLE_USED_SPACE。已分配给表的页面数;
(2)TABLE_USED_PAGES。表已使用的页面数。
跟表空间相关的数据字典如下:
(1)DBA_DATA_FILE。表空间相关信息查询;
(2)DBA_FREE_SPACE。表空间空余信息查询。
相关SQL查询语句如下:
表空间EMP的相关信息查询结果如图2-4所示。
图2-4 表空间EMP的相关信息查询结果
5.查询表空间空闲情况
相关SQL查询语句如下:
表空间空闲情况查询结果如图2-5所示。
图2-5 表空间空闲情况查询结果