与 sms 表空间相关联的容器是文件系统目录,而这些目录中的文件会随着表空间中对象的增长而增长。文件会增加至达到其中一个容器上的文件系统限制或达到数据库的表空间大小限制。
dms 表空间由文件容器或原始设备容器组成,它们的大小是在将容器指定给表空间时设置的。当容器中的所有空间都已被使用时,则认为表空间已满。但是,与 sms 不同,您可以使用 alter TABLESPACE 语句来添加或扩展容器,从而允许将更多的存储器空间提供给表空间。dms 表空间还具有称为“自动调整大小”的功能。当可以自动调整大小的 dms 表空间中的空间被消耗时,DB2 数据库系统可能回扩展一个或多个文件容器。sms 表空间具有类似于自动增长的功能但术语“自动调整大小”专门用于 dms。
DB2 列的自动增长都是通过序列实现的。所以你需要确定DB2的列引用的是哪个序列,才能确定当前值、下一列值。如何确定引用哪个序列,最简单的办法是问谁添加的自动增长序列。最2的办法是直接挨个查syscat.sequences视图。执行values(next value for 序列名)能打印下一自动增长值。
插入这样的值,跟插入正常列一样。因为next value for seq_001 实际就是打印一个数字。你知道序列规则的话直接填真实数值插入就可以。
create sequence seq_001
start with 1
increment by 1
no maxvalue
no cycle
cache 21
insert into test1(cid,cname,sex,age) values(next value for seq_001,'scott','M',30)
根据表空间的类型不同,扩容方法不同。DB2一般分SMS和DMS两种类型表空间,一个是系统管理表空间,一个是数据库管理表空间。
1、SMS表空间的container是文件系统目录或文件,一般container是自动扩展的,这种情况下你需要扩容文件系统。
查看表空间类型和container
$db2 list tablespaces show detail$db2 list tablespace containers for <tablespaceid>
2、DMS表空间也有自动扩展类型和使用裸设备的情况(container是文件或裸设备),如果是自动扩展则扩容文件系统。非自动扩展的扩容方式是增加container。
DMS+文件
$db2 connect to <dbname>$db2 "alter tablespace <tablespaceName> begin new stripe set (file '<filePath>/<fileName>' 655360)"
DMS+裸设备
$db2 connect to <dbname>$db2 "alter tablespace <tablespaceName> begin new stripe set (device '/dev/rLR_XXXXXX' 671088640)"
语句中使用了begin new stripe set,表示新的数据直接写到新的container上,不进行数据reblance。否则替换为add,表示在container间进行数据reblance(会在后台执行,可用list utilities查看进度)
括号中的数字表示container的page个数(表空间pagesize×这个数字即是container的大小)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)