用命令行方式创建SMS表空间的简单语法:
CREATE TABLESPACE ; MANAGED BY SYSTEM USING (';')
例一:在Windows上创建一个SMS表空间:
CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING ('d:\acc_tbsp','e:\acc_tbsp','f:\acc_tbsp')
完成的结果为在D、E、F三个磁盘上创建了三个名称为acc_tbsp的文件夹,每个文件夹下面都有一个名为SQLTAG.NAM的文件。
例二:删除例一所创建的SMS表空间。
DROP TABLESPACE RESOURCE
运行完这条命令,相应的表空间会从DB2注册表中删除,但是磁盘上的三个文件夹仍然存在,需要手工删除。
用命令行方式创建DMS表空间的简单语法:
CREATE TABLESPACE ; MANAGED BY DATABASE USING (FILE ';'
或者
CREATE TABLESPACE ; MANAGED BY DATABASE USING (DEVICE ';'
例三:在Windows上创建一个DMS表空间,使用各自有5000页的两个文件容器:
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (FILE 'd:\db2data\acc_tbsp' 5000, FILE 'e:\db2data\acc_tbsp' 5000)
运行结果为:在D、E磁盘的db2data文件夹下面各创建了一个名为acc_tbsp的文件,大小都为20000K(默认情况下每页大小为4K)。
例四:在例三所创建的表空间中添加一个容器。
ALTER TABLESPACE RESOURCE ADD(FILE 'f:\db2data\acc_tbsp' 5000)
运行的结果为在RESOURCE表空间中包含了三个容器(文件):d:\db2data\acc_tbsp、 e:\db2data\acc_tbsp、 f:\db2data\acc_tbsp。
例七:删除例三中创建的DMS表空间。
DROP TABLESPACE RESOURCE
运行的结果为在DB2的注册表中把RESOURCE表空间删除,同时在磁盘上把相对应的文件夹和文件都一起自动删除。
例八:在UNIX上创建一个DMS表空间,使用各有10000页的3个逻辑卷:
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (DEVICE'/dev/rdblv6' 10000, DEVICE '/dev/rdblv7' 10000, DEVICE '/dev/rdblv8'10000)
上面语句中提到的UNIX设备必须已经存在,且实例拥有者和SYSADM组必须能够写入它们。
SMS与DMS的对比
特性 SMS DMS
能够在表空间中动态增加容器的数目吗 N Y
能够把索引数据存放到不同表空间的表中吗 N Y
能够把大对象数据存放到不同表空间的表中吗 N Y
表可以分散存放到多个表空间中吗 N Y
仅在需要时才分配空间吗 Y N
表空间可以被放在不同的磁盘中吗 Y N
创建之后,区段大小能够改变吗 N N
例九:创建系统临时表空间。
CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp MANAGED BY SYSTEM USING(‘d:\tmp_tbsp’,’e:\tmp_tbsp’)
系统临时表只能存储在系统临时表空间中,所以数据库必须始终至少有一个系统临时表空间。
例十:创建用户临时表空间。
CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY DATABASEUSING(FILE ‘d:\db2data\user_tbsp’ 5000, FILE ‘e:\db2data\user_tbsp’5000)
用户临时表空间用于存储已说明的临时表(用 DECLARE GLOBAL TEMPORARY TABLE 语句定义)
例十一:用RENAME语句给表空间重命名
RENAME TABLESPACE RESOURCE TO RES1
用该语句给表空间重命名之后,将自动更改所有引用该表空间的目录记录,所以无须关心该表空间中的个别对象。
例十二:在RESOURCE表空间中创建一张名为T1的表
CREATE TABLE T1(ABC INT) IN RESOURCE