互联网服务数据库

在线扩充db2表空间问题

请教各位高手,我如果要扩充db2表空间,能否在线不停机扩充?
因为表空间是建立在裸设备上的,还想问是否要先扩充系统裸设备的空间,然后在扩充数据库表空间,还是说可以直接扩充表空间,同时裸设备也跟着自动扩大?
如果是分区数据库的话,同一实例的两个节点是否要每个节点都分开扩充?
谢谢。
参与7

6同行回答

建议在业务停止的时候增加,以前有一次加表空间,导致数据库从主机切换到备机的情况显示全部
建议在业务停止的时候增加,以前有一次加表空间,导致数据库从主机切换到备机的情况收起
2010-08-20
浏览898
qi0200000qi0200000数据库管理员黑龙江农信
已经通过下面第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、在业务运行期间的数据库操作都具有一定的风险,建议做好备份并在业务负载较小的情况下进行操作。收起
互联网服务 · 2010-08-19
浏览967
templarmatemplarma系统运维工程师中信银行
还要注意表空间有容量限制的显示全部
还要注意表空间有容量限制的收起
互联网服务 · 2010-08-03
浏览934
louis0058louis0058项目总监gdsy
呵呵,我刚做了在线表空间扩充,只不过是文件系统,不是裸设备db2 “ALTER TABLESPACE CWGL_DL RESIZE ( FILE '/data/DB2/NODE0000/SQL00003/CWGL_DL' 12800 )”aix下记得加双引号裸设备的一样db2 “ALTER TABLESPACE CWGL_DL RESIZE ( device '/device/rcgl_dt_sys' 12800 )...显示全部
呵呵,我刚做了在线表空间扩充,只不过是文件系统,不是裸设备
db2 “ALTER TABLESPACE CWGL_DL RESIZE ( FILE '/data/DB2/NODE0000/SQL00003/CWGL_DL' 12800 )”
aix下记得加双引号
裸设备的一样
db2 “ALTER TABLESPACE CWGL_DL RESIZE ( device '/device/rcgl_dt_sys' 12800 )”
用extend也可以收起
软件开发 · 2010-07-29
浏览927
qi0200000qi0200000数据库管理员黑龙江农信
添加一个容器,DB2会在命令发出后的某个时间做reblance。在做reblance时,只允许读表空间,不允许写表空间。且所有的访问会变得非常的缓慢。真的在这个过程中会只读么? 那可很恐怖啊显示全部
添加一个容器,DB2会在命令发出后的某个时间做reblance。在做reblance时,只允许读表空间,不允许写表空间。且所有的访问会变得非常的缓慢。
真的在这个过程中会只读么? 那可很恐怖啊收起
互联网服务 · 2010-07-29
浏览912
lcy86779511lcy86779511安全审计师哈尔滨银行
你只要向表空间里面增加新的裸设备就可以了。显示全部
你只要向表空间里面增加新的裸设备就可以了。收起
互联网服务 · 2010-07-29
浏览928

提问者

qi0200000
数据库管理员黑龙江农信

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2010-07-29
  • 关注会员:1 人
  • 问题浏览:5034
  • 最近回答:2010-08-20
  • X社区推广