zoukankan      html  css  js  c++  java
  • db2表空间及日志文件调整

    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:DNJCTS4R_INDEX' 10G)
    extentsize 32
    bufferpool BP_4K
    dropped table recovery off;

    改变容器大小:
    db2 alter tablespace idx_data resize(file 'd:db2datafile_netdbidx_data' 32000);
    增加容器:
    db2 alter tablespace idx_data add(file 'd:db2datafile_netdbidx_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 得到的结果文本各个项的具体含义

  • 相关阅读:
    python爬取图片
    IDEA创建SpringBoot项目报错,不能连接https://start.spring.io/
    ES模块化的理解
    Web标准(网站标准)理解
    Mongodb安装
    Linux Ntp时间同步服务
    SentinelResource 注解
    Sentinel的流量控制
    Sentinel简介
    nacos安装
  • 原文地址:https://www.cnblogs.com/BradMiller/p/3197867.html
Copyright © 2011-2022 走看看