已经通过下面第2种方法扩了表空间,因为裸设备本身就在存储上横跨12块硬盘,所以也没必要通过加入容器提高IO吞吐,采用不需要reblance的第二种方式。表空间扩了以后应用提示游标调用失败,重启应用服务后提示消失.以下内容来自IBM800和网上资源加容器是可以online加的。1.添加一...
显示全部已经通过下面第2种方法扩了表空间,因为裸设备本身就在存储上横跨12块硬盘,所以也没必要通过加入容器提高IO吞吐,采用不需要reblance的第二种方式。表空间扩了以后应用提示游标调用失败,重启应用服务后提示消失.
以下内容来自IBM800和网上资源
加容器是可以online加的。
1.添加一个容器,DB2会在命令发出后的某个时间做reblance。在做reblance时,只允许读表空间,不允许写表空间。且所有的访问会变得非常的缓慢。
ALTER TABLESPACE 表空间名 ADD (FILE '容器文件路径和名称' 容器文件大小)
可以在alter tablespace时加begin new stripe set选项避免reblance。有个缺点是这样旧数据在一个容器中,新数据在新的容器中,在访问数据时只能使用到一个容器的I/O而不能并行I/O。
2.增加容器的容量,不需要做reblance。但是不像加一个容器那样并行I/O。
把现有的容器扩大:也有两种方法
(1)ALTER TABLESPACE 表空间名 RESIZE(FILE '已满的容器名' 更改后容器的大小)
(2)ALTER TABLESPACE 表空间名 EXTEND(FILE '已满的容器名' 准备增加的大小)
DB2现有表空间扩容方法
1)直接添加一个容器的例子:
db2 " ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000) "
加容器之后DB2会有一个自动balance的过程,可能会持续几个小时!!!
2)改变现有容器的大小(该方法不会触发balance,但如果表空间建立在裸设备上,则要扩冲裸设备空间):
db2 " ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000) "
注意这种方式就是将原有的相应容器都改成大小是2000页
db2 "ALTER TABLESPACE TS1 RESIZE (ALL 2000)"
这种方式就是把表空间中所有的容器大小都改成2000页
db2 " ALTER TABLESPACE TS1 EXTEND (FILE '/conts/cont0' 1000, DEVICE '/dev/rcont1' 1000, FILE 'cont2' 1000) "
这种方式就是将相应的容器都扩大1000页,也就是增加1000页。
db2 " ALTER TABLESPACE DATA_TS EXTEND (ALL 1000)"
这种方式就是将所有的容器都增加1000页。
注意:
1、如果要增加新的祼设备文件,需要注意权限的问题,即当建好裸设备以后,注意把/dev下的lvname和rlvname的属组改成数据库实例用户,例如db2inst1
2、如果增加新的裸设备文件,则数据库需要在各个裸设备之间进行数据重平衡,数据库的表空间在重平衡完成前,业务做不了,读不了数据。Rebalance的时间通常和硬件有很大关系。如果数据量较小且硬件性能较好,rebalance的时间通常很短。
3、增加新容器可以通过stripeset来要求不做rebalance,将新增数据放在新的容器中。一般这种方法使用在数据迁移上,如:
ALTER TABLESPACE USERSPACE1 BEGIN NEW STRIPE SET (file '/newfile' 200G)
ALTER TABLESPACE USERSPACE1 DROP (file '/oldfile')
4、增加新容器通常要求和原大小相同,这样有利用平衡数据。
5、在业务运行期间的数据库操作都具有一定的风险,建议做好备份并在业务负载较小的情况下进行操作。
收起