`
jetway
  • 浏览: 485805 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

db2自动调整表空间的大小

阅读更多

db2自动调整表空间的大小

在 DB2® 数据库系统中存在两种类型的基本表空间:系统管理的空间(SMS)和数据库管理的空间(DMS)。

与 SMS 表空间相关联的容器是文件系统目录,而这些目录中的文件会随着表空间中对象的增长而增长。文件会增加至达到其中一个容器上的文件系统限制或达到数据库的表空间大小限制(请参阅db2.udb.admin.doc/doc/r0001029.htm">SQL and XQuery limits)。

DMS 表空间由文件容器或原始设备容器组成,它们的大小是在将容器指定给表空间时设置的。当容器中的所有空间都已被使用时,则认为表空间已满。但是,与 SMS 不同,您可以使用 ALTER TABLESPACE 语句来添加或扩展容器,从而允许将更多的存储器空间提供给表空间。DMS 表空间还具有称为“自动调整大小”的功能。当可以自动调整大小的 DMS 表空间中的空间被消耗时,DB2 数据库系统可能回扩展一个或多个文件容器。SMS 表空间具有类似于自动增长的功能但术语“自动调整大小”专门用于 DMS。

启用和禁用自动调整大小(AUTORESIZE)
缺省情况下,不会对 DMS 表空间启用自动调整大小功能。下列语句创建不启用自动调整大小功能的 DMS 表空间:

      CREATE TABLESPACE DMS1 MANAGED BY DATABASE
     USING (FILE '/db2files/DMS1' 10 M)要启用自动调整大小功能,将 AUTORESIZE YES 子句指定为 CREATE TABLESPACE 语句的一部分:

      CREATE TABLESPACE DMS1 MANAGED BY DATABASE
     USING (FILE '/db2files/DMS1' 10 M) AUTORESIZE YES在已创建 DMS 表空间之后,还可以通过在 ALTER TABLESPACE 语句上使用 AUTORESIZE 子句来启用或禁用自动调整大小功能:

      ALTER TABLESPACE DMS1 AUTORESIZE YES
   ALTER TABLESPACE DMS1 AUTORESIZE NO有两个其他属性(MAXSIZE 和 INCREASESIZE)与自动调整大小的表空间相关联。

最大大小(MAXSIZE)
CREATE TABLESPACE 语句上的 MAXSIZE 子句定义表空间的最大大小。例如,以下语句创建可增长至 100 兆字节(如果数据库有多个数据库分区,则是每个数据库分区的大小)的表空间:

      CREATE TABLESPACE DMS1 MANAGED BY DATABASE
     USING (FILE '/db2files/DMS1' 10 M)
     AUTORESIZE YES MAXSIZE 100 MMAXSIZE NONE 子句指定表空间没有最大限制。表空间可以一直增长,直到达到文件系统限制或 DB2 表空间限制(请参阅 SQL Reference 中的 SQL Limits 部分)。如果在启用自动调整大小功能时不指定 MAXSIZE 子句,则使用缺省值无最大大小限制。

ALTER TABLESPACE 语句更改已经启用了自动调整大小的表空间的 MAXSIZE 的值。例如:

      ALTER TABLESPACE DMS1 MAXSIZE 1 G
   ALTER TABLESPACE DMS1 MAXSIZE NONE如果指定了最大大小,则 DB2 强制使用的实际值可能会比提供的值略小,原因是 DB2 会尝试使容器增长保持一致。不可能通过使两个数量并准确达到最大值来扩展容器。

增大大小(INCREASESIZE)
当表空间中已没有空闲扩展数据块但请求了一个或多个扩展数据块时,CREATE TABLESPACE 语句上的 INCREASESIZE 子句定义用来增大表空间的空间量。可以显式大小或百分比的形式指定该值。例如:

      CREATE TABLESPACE DMS1 MANAGED BY DATABASE
     USING (FILE '/db2files/DMS1' 10 M)
     AUTORESIZE YES INCREASESIZE 5 M

   CREATE TABLESPACE DMS1 MANAGED BY DATABASE
     USING (FILE '/db2files/DMS1' 10 M)
     AUTORESIZE YES INCREASESIZE 50 PERCENT百分比值意味着每次需要增大表空间时都要计算增大大小,并且增大量基于增大时表空间大小的百分比。例如,如果表空间大小是 20 兆字节而增大大小是百分之 50,则第一次表空间增大 10 兆字节(增大到大小为 30 兆字节),下一次增大 15 兆字节。

如果在启用了自动调整大小功能时未指定 INCREASESIZE 子句,则 DB2 确定要使用的适当值,该值在表空间的存在期间可能会有变化。与 AUTORESIZE 和 MAXSIZE 一样,可以使用 ALTER TABLESPACE 语句更改 INCREASESIZE 的值。

如果指定了增长大小,则 DB2 使用的实际值可能会与提供的值稍有不同。对所用值进行这种调整是为了使表空间中各容器的增大保持一致。

如何扩展表空间
对于可以自动调整大小的表空间,当所有现有空间都已被使用并请求了更多空间时,DB2 会尝试增大该表空间的大小。DB2 确定可以扩展表空间中的哪些容器以便不需要进行重新平衡。DB2 只扩展位于表空间图(该图描述表空间的存储器布局)的最后范围内的那些容器,并且对它们扩展相同的数量。

例如,考虑下列语句:

      CREATE TABLESPACE TS1 MANAGED BY DATABASE
     USING (FILE 'C:\TS1CONT' 1000, FILE 'D:\TS1CONT' 1000,
            FILE 'E:\TS1CONT' 2000, FILE 'F:\TS1CONT' 2000)
     EXTENTSIZE 4
     AUTORESIZE YES请记住,DB2 将每个容器的一小部分(一个扩展数据块)用于元数据,以下是根据 CREATE TABLESPACE 语句为表空间创建的表空间图。(表空间图是表空间快照的输出的一部分。)

      表空间图:

    范围    分割集      分割区  最大     最大        起始        结束   调节 容器
    编号                  偏移    扩展数据块  页      分割区       分割区
    [   0] [   0]      0     995      3983      0    248   0    4 (0,1,2,3)
    [   1] [   0]      0    1495      5983    249    498   0    2 (2,3)表空间图表明标识为 2 和 3 的容器(E:\TS1CONT 和 F:\TS1CONT)是仅有的在图最后面范围内的容器。因此,当 DB2 自动扩展此表空间中的容器时,它将只扩展这两个容器。

注:
如果创建表空间时所有容器的大小都一样,则图中只有一个范围。在这种情况下,DB2 扩展每一个容器。要防止限制为只扩展一小部分容器,创建表空间时使各容器大小相等。
如在 MAXSIZE 部分中所讨论的那样,可以指定对表空间大小的最大限制,也可以提供 NONE 值以便可无限增大表空间。(当使用 NONE 或无限制时,上限实际上是由文件系统或 DB2 表空间限制定义的。)DB2 不会尝试增大表空间至超过上限。但是,在达到上限之前,尝试增大容器可能会因为文件系统已满而失败。在这种情况下,DB2 不会在增大表空间并将会向应用程序返回“空间不足”条件。

解决此情况有两种方法:

增大已满文件系统上可用的空间量。
对表空间执行一些容器操作,使得这些容器不再位于表空间图的最后。使正被讨论的容器不再处于表空间图的最后的最简易方法是将新的分割集添加至具有一组新容器的表空间。最佳示例确保所有容器大小相等。可以使用 ALTER TABLESPACE 语句的 STRIPE SET 子句来添加新的分割集。通过添加新的分割集,就会将新的范围添加至表空间图。借助于新的范围, DB2 自动尝试扩展的容器就会处于此新的分割集中,而旧的容器保持不变。
注:
当暂挂用户启动的容器操作或者正在执行后续生新平衡时,会禁用自动调整大小功能,直到落实了操作或重新平衡完成为止。
例如,表空间具有三个大小一样的容器,每个容器都位于它自己的文件系统上。当对表空间执行一些操作时,DB2 会自动扩展这三个容器。最后,其中一个文件系统变满了,对应的容器就不能再增大了。如果该文件系统上不能再提供更多的可用空间,则必须对表空间执行容器操作,使得存在问题的容器不再处于表空间图的最后范围内。在这种情况下,您可以添加新的分割集并指定两个两个容器(仍然具有空间的每个文件系统上一个),也可以指定多一些或少一些容器(再次确保要添加的每个窗口大小一样并且要使用的每个文件系统上有足够的空间)。当 DB2 尝试增大表空间的大小时,现在它将尝试扩展这些新分割集中的容器而不是旧容器。

上面描述的情况仅适用于未启用自动调整大小的自动存储器表空间。如果自动存储器表空间启用了自动调整大小,则 DB2 会通过添加容器的新分割集来自动处理文件系统变满的情况。

监视
对 DMS 表空间自动调整大小是作为表空间监视器快照输出的一部分显示的。还会显示增大大小值和最大大小值:

   
   启用自动调整大小                    = Yes 或 No
   当前表空间大小(字节)              = ###
   最大表空间大小(字节)              = ### 或 NONE
   增加大小(字节)                    = ###
   增加大小(百分比)                  = ###
   上一次成功调整大小的时间            = YYYY/MM/DD HH:MM:SS.SSSSSS
   上一次调整大小尝试失败              = Yes 或 No使用说明
自动调整表空间大小具有下列含义:

启用了自动调整大小的表空间具有 DB2 通用数据库™ 版本 8.2.1 或更早版本不能识别的相关元数据。在这些版本上尝试使用启用了自动调整大小的表空间的数据库会产生故障(极有可能会返回 SQL0980C 或 SQL0902C 错误)。可能会对尝试连接至数据库或尝试复原数据库发送错误。如果表空间启用了自动调整大小,则对这些表空间禁用“自动调整大小”功能会除去元数据,从而允许在 DB2 版本 8.2.1 或更早版本上使用该数据库。
当禁用“自动调整大小”功能时,如果后来再启用此功能,则与 INCREASESIZE 和 MAXSIZE 相关联的值会丢失。
不能对使用原始设备容器的表空间启用此功能。同样,不能将原始设备容器添加至可以自动调整大小的表空间。这些操作会产生错误(SQL0109N)。如果需要添加原始设备容器,则必须首先禁用此功能。
重定向复原操作不能更改容器定义以包括原始设备容器(SQL0109N)。
由于最大大小限制了 DB2 自动增大表空间的方式,所以最大大小也限制了用户可增大表空间的方式。换言之,当执行向表空间添加空间的操作时,生成的大小必须小于或等于最大大小。可以使用 ALTER TABLESPACE 语句的 ADD、EXTEND、RESIZE 或 BEGIN NEW STRIPE SET 子句来添加空间。

 

日志

. /home/db2admin/sqllib/db2profile

db2 list tablespaces show  detail

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

  查看数据库的配置参数:get db cfg for hbhr  

         日志文件大小(4KB)  (LOGFILSIZ) = 1024 (每个日志文件大小为1024*4KB=4MB)
         主日志文件的数目     (LOGPRIMARY) = 3
         辅助日志文件的数目   (LOGSECOND) = 1

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

 

DB2 报 SQLSTATE=57011错误的解决办法

SQLSTATE=57011   为数据库中表空间已满的异常(错误)

可以用命令查看表空间

db2 => list tablespaces show detail

有两种类型表空间:
第一种类型表空间为:SYSCATSPACE,类型为系统管理表空间(SMS)
第二种类型表空间为:用户自己的表空间(比如xjhspaces11),类型为数据库管理表空间(DMS)
查看表空间中总的表空间(Total pages)和 剩余表空间(Free pages)
如果是系统管理表空间(SMS)不够,则是由于磁盘空间不够,需要增加磁盘空间
如果是数据库管理表空间(DMS)不够,则需要扩展表空间
扩展表空间的命令为:
db2 alter tablespace <tablespace_name> </tablespace_name> extend (all <num_pages> <num_pages></num_pages>)

例如:db2 => alter tabblespace xjhspces11 extend(all 2560M)
扩展了数据库表空间2.5G
注意:对数据库管理表空间的扩展前,必须检查磁盘裸设备的空间,如果空间不够,需要增加磁盘裸设备的空间,再扩展数据库管理表空间,并且在扩展表空间之前,最好备份数据库,以免带来不必要的损失
备份数据库命令:$ db2move databaseName export  (databaseName为数据库名)
备份表命令:$ db2move databaseName export –tn test_table1 (databaseName为数据库名,test_table1为表名)

分享到:
评论

相关推荐

    DB2系统临时表空间过大引发的性能问题-contracted.doc

    6. **调整参数**:根据系统负载和应用需求,适当调整DB2的配置参数,例如增大排序区域大小或调整临时表空间的自动扩展设置。 7. **清理临时表空间**:定期清理不再使用的临时对象,释放空间。 通过上述步骤,可以...

    DB2表空间管理

    - **调整DMS表空间大小**: ```sql ALTER TABLESPACE RESIZE (FILE '&lt;path&gt;' '&lt;new size&gt;'); ``` 例如,调整`acc_tbsp`表空间的大小: ```sql ALTER TABLESPACE acc_tbsp RESIZE (FILE 'd:\db2data\acc_tbsp' ...

    DB2的表空间和缓冲池

    SMS表空间的特点包括:操作系统会自动缓存I/O操作、根据系统设置分配空间、并能够自动扩展表空间大小。但是,SMS表空间不允许删除容器,并且只能在分区数据库中添加新的容器。默认创建的目录表空间、系统临时表空间...

    DB2基础----表空间

    在必要时扩展表空间大小或增加新的数据分区。此外,通过`ALTER TABLESPACE`语句,可以修改表空间的属性,如改变扩展大小或更换存储设备。 五、表空间备份与恢复 为了保证数据安全,定期对表空间进行备份是必要的。...

    数据库原理实验二_DB2创建表和空间_艾孜尔江·艾尔斯兰著.docx

    2. **建立表空间**:数据库创建时,会自动创建几个核心表空间,如SYSCATSPACE、USERSPACE1和TEMPSPACE1。用户可以自定义表空间,例如用户表空间、目录表空间和临时表空间,它们的默认类型通常是SMS。 3. **查看...

    [IBM]DB2_基础__表空间和缓冲池

    1. 目录表空间(SYSCATSPACE):在创建数据库时自动创建,存储系统目录表,是数据库运行的基础。 2. 常规表空间:存储表数据、索引以及非长型数据。DMS和SMS是两种管理方式,DMS允许更精细的控制,而SMS依赖于操作...

    db2表space管理.doc

    表空间的合理规划和管理对于确保DB2数据库的高效运行至关重要,包括根据I/O负载均衡地分布在不同磁盘上、合理设置表空间大小以适应数据增长以及定期检查和优化表空间的使用情况。通过了解和熟练掌握DB2的表空间管理...

    重定向操作db2数据库

    - **表空间大小的自动调整**:如果设置了`AUTORESIZE YES`,则表空间在使用过程中会自动扩展至最大尺寸。在重定向操作后,需要确保目标位置有足够的空间以支持表空间的自动扩展。 通过以上步骤和注意事项的详细介绍...

    DB2数据库性能调整和优化

    1. 表空间设计:合理规划表空间,根据数据访问模式和增长速度分配不同类型的表空间。 2. 磁盘I/O优化:使用RAID技术提升读写速度,合理分配I/O资源。 七、监控和调优工具 1. 使用DB2 MONITOR命令:实时监控数据库...

    [计算机软件及应用]db2培训4数据库创建和表空间规划.ppt

    适时调整表空间的大小和数量,可以确保数据库高效运行并避免存储瓶颈。 总结起来,DB2数据库的创建和表空间规划涉及多方面的工作,包括数据库实例的创建、表空间的定义、系统表的构建、权限的设定,以及存储和性能...

    db2 技术文档

    理解如何监控和调整表空间的大小,以及如何配置自动扩展功能,对于优化数据库性能至关重要。 缓冲机制在数据库系统中起着关键作用,DB2也不例外。数据库缓冲池是内存中的区域,用于存放最近访问过的数据页,以减少...

    DB2 讲义,介绍DB2如何创建数据库等

    - **自动存储(Automatic Storage)**:简化表空间维护,允许DB2自动管理表空间的扩展与收缩,提高存储效率。 - **表空间调整策略**:通过设置`INITIALSIZE`, `INCREASESIZE`, `MAXSIZE`等参数,控制表空间的初始大小...

    IBM DB2优化方法

    - **页大小**:不同表空间可以设定不同页大小(4KB/8KB/16KB/32KB等),可以根据表的数据特性选择合适的页大小,以减少碎片和提高I/O效率。 - **表空间类型**:不同的表空间有不同的类型,例如DMS(Direct Managed ...

    DB2数据库管理手册

    - **表空间管理**: 表空间用于存储表数据,可以通过增加或减少容器来调整表空间大小。 **3.6 建库** - **建立基本数据库**: 定义数据库的基本结构,包括命名空间、字符集等。 - **建立表和索引**: 创建表并为表...

    NC6.5 数据库参考脚本及临时表空间配置.pdf

    DB2的脚本可能涉及如何利用DB2提供的命令和工具来创建数据库和调整数据库参数,例如设置临时表空间的大小和配置。 在文档的“部分内容”中,我们看到了具体的SQLServer脚本实例,包括创建数据库、添加文件组和文件...

    DB2数据库管理指南-性能

    - **自适应缓冲池**:利用自适应缓冲池机制自动调整不同类型数据在缓冲池中的分配比例。 #### 应用程序优化 除了数据库级别的优化外,还需要关注应用程序层面的问题,比如不必要的重复查询、事务管理不当等都可能...

    DB2 通用数据库性能调整的常用方法

    - **reorgchkupdatestatistics命令**:当不确定所有表名或表数量庞大时,使用此命令可自动识别并更新所有表的统计信息。 #### 调整Bufferpool 缓冲池(Bufferpool)是DB2中用于缓存数据库页面的主要内存区域。通过...

    DB2 SQL性能调优秘笈

    合理的表空间管理和存储结构优化也是提高DB2性能的关键因素之一。 1. **分区表**:对于大型表,采用分区技术可以显著提高查询速度,特别是在处理范围查询或过滤特定分区数据时。 2. **数据压缩**:利用DB2的数据...

    Db2 11.5 新特性_高级事务日志空间管理_v3.doc

    - 动态调整:根据预测结果动态调整日志文件大小,确保有足够的空间应对高并发事务。 - 自动清理:在不影响业务的情况下,自动清理不再需要的日志,释放空间。 - 避免阻塞:在日志空间不足时,采取措施避免阻塞新的...

Global site tag (gtag.js) - Google Analytics