db2表空间及日志文件调整

系统 2768 0

1.SQLState '57011' and errorCode '-964'
  原因:数据库的日志文件已满
  解决方法:修改日志文件大小(加大),增加日志文件个数,增加辅助日志文件个数(三个修改参数可以任意选择)

  查看数据库的配置参数:get db cfg for <dbname>  
         日志文件大小(4KB)  (LOGFILSIZ) = 1024 (每个日志文件大小为1024*4KB=4MB)
         主日志文件的数目     (LOGPRIMARY) = 3
         辅助日志文件的数目   (LOGSECOND) = 1

  修改数据库的配置参数:update db cfg for <dbname> using <p> <v>
  修改日志文件大小:update db cfg for <dbname> using LOGFILSIZ  4096
  修改主日志文件个数:update db cfg for <dbname> using LOGPRIMARY  6
  修改辅助日志文件个数:update db cfg for <dbname> using LOGSECOND 10

x

db2pd -db DNJC transactions
db2pd -db DNJC -dynamic
db2pd -db DNJC -logs


表空间满了,肯定使用的是DMS的表空间,对于DMS表空间,可以有以下几种方式扩容:
1. 向表空间中添加新的容器:
ALTER TABLESPACE 表空间名 ADD (FILE '容器文件路径和名称' 容器文件大小)
2. 把现有的容器扩大:也有两种方法
(1)ALTER TABLESPACE 表空间名 RESIZE(FILE '已满的容器名' 更改后容器的大小)
(2)ALTER TABLESPACE 表空间名 EXTEND(FILE '已满的容器名' 准备增加的大小)
若表空间直接用的是祼设备的话,就需要把file 改成device.
在做的时候一定要考虑到rebalance时间,增加了容器以后DB2会自动重新balance数据,根据tablespace的数据大小需要一定的时间来完成。这期间访问速度会下降很多。
要注意是几K页的表空间,4K最大表空间限制在64G,8K是128G,16K是256G,32K是512G,如果有上述限制是不可以直接加CONTAINER的,那只有再建一个新的表空间!
问一下容器文件太大对读写性能有多大影响?
一直有这样的疑问,在表空间不够的时候,到底是增大文件的大小好还是添加一个容器文件好
如果你有分离的磁盘,当然是在物理上分离的磁盘上建立文件容器好了,i/o比较快。
windows环境中还是扩大container的size比较实用,可以避免rebalance


增加表空间大小
DB2数据库使用时,如果表空间满了,该如何扩容呢?下文将教给您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页。

创建表空间:
create tablespace TS4R_INDEX
pagesize 4K
managed by database using(file 'E:\DNJC\TS4R_INDEX' 10G)
extentsize 32
bufferpool BP_4K
dropped table recovery off;

改变容器大小:
db2 alter tablespace idx_data resize(file 'd:\db2\datafile_netdb\idx_data' 32000);
增加容器:
db2 alter tablespace idx_data add(file 'd:\db2\datafile_netdb\idx_data_exl' 640);
表空间设为自增长:
db2 alter tablespace idx_data autoresize yes increasesize 10240K maxsize none;
查看表空间是否为自增长及增长大小:
db2 get snapshot for tablespaces on netdb |more;

db2 get snapshot for locks on 数据库名称,只能查看一个数据库的死锁,是否有办法查询所有数据库的死锁 用list db directory得到所有数据库名,再循环执行快照命令
db2 get snapshot for dynamic sql on db 得到的结果文本各个项的具体含义

 

db2表空间及日志文件调整


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论