精华内容
下载资源
问答
  • DB2 reorg

    2020-02-24 10:16:21
    DB2不允许对表“xx”执行操作,原因码为"7" 在命令行连接数据库执行reorg table +表名。 具体步骤: 1、cmd 2、db2cmd 3、db2 connect to 数据库名 user 用户名 using 密码 4、db2 reorg table 表名 ...

    DB2不允许对表“xx”执行操作,原因码为"7"
    在命令行连接数据库执行reorg table +表名。

    具体步骤:
    1、cmd
    2、db2cmd
    3、db2 connect to 数据库名 user 用户名 using 密码
    4、db2 reorg table 表名

    展开全文
  • db2 reorg

    2017-05-23 17:05:33
    db2 修改表结构后会出现错误码7这种时候需要整理下碎片  reorg table administrator.test; 这个要在db2cmd中运行。

    db2 修改表结构后会出现错误码7这种时候需要整理下碎片

     reorg table administrator.test;

    这个要在db2cmd中运行。

    展开全文
  • DB2001 深入了解DB2 reorg

    千次阅读 2018-11-18 21:51:37
    从what什么是reorg when什么时候做reorg why为什么要做reorg以及How怎么做reorg这几个方面来了解DB2reorg

    深入了解DB2 reorg【摘自网络】

    概述

    数据库性能调优是一个系统的工程,它不仅要求DBA熟悉DB2的工作原理和各种性能指标,还要求DBA也要熟悉操作系统、存储等其他知识,甚至要熟悉应用的设计原理及其使用数据库的方式等。本文只就reorg进行初步探讨。
    要进行高效的数据访问和获得最佳工作负载性能,具有组织良好的表数据是关键。在对表数据进行许多更改之后,逻辑上连续的数据可能位于不连续的物理数据页上,比如对某张表新增一个字段,或者表的某列是可变长度的(DB2可识别的可变长度的数据类型包括:Varchar/Long/Vargraphic/Blob/Clob/Declob/Xml),这样在插入或者更新操作时就有可能导致行溢出【数据存在真正的数据页面之外,一般认为Blob/Long这类的大对象列类型的存储会把数据存放在数据页面之外。但是,这个理解有点偏差,Blob可以不将数据存放在溢出页面,而即使是Varchar列数据类型,依然有可能存放溢出数据。DB2喜欢MySql的Varchar类型,因为相对于Oracle的Varchar2最大存放4000个字节,Sql Server最大存放8000个字节,MySql的Varchar最大可存放65535个字节。实际InnoDB存储引擎并不支持65535长度的Varchar,这是因为还有别的开销。因此实际能存放的长度为65532。需要注意的是,如果sql_mode没有设为严格模式,则可能出现可以新建长度为65535的字段,但是会有一条警告消息。InnoDB存储引擎的页为16KB,即16384个字节,怎么能存放65532个字节呢?一般情况下,数据都存放在B-treeNode的页类型中,但是当发生行溢出时,则存放行溢出的页类型为Uncompress Blob Page,实际存放的数据都存放在Blob页中,数据页面其实只保存了 Varchar(65532)的前768个字节的前缀(prefix)数据,之后跟的是偏移量,指向行溢出页,即Uncompress Blob Page】。另外,在删除大量行后,也会造成表空间的数据碎片,这些情况下都会降低数据的访问速度,从而影响数据库的性能。
    由于DB2使用CBO【Oracle的优化器有两种优化方式,即基于规则的优化方式(Rule-Based Optimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO),在Oracle8及以后的版本,Oracle强列推荐用CBO的方式。RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。比如我们常见的,当一个where子句中的一列有索引时去走索引。CBO方式:它是看语句的代价(Cost),这里的代价主要指Cpu和内存。优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。统计信息给出表的大小、多少行、每行的长度等信息。这些统计信息起初在库内是没有的,是做analyze后才出现的,很多的时候过期统计信息会令优化器做出一个错误的执行计划,因些应及时更新这些信息。Examda提示:主索引不一定就是优的,比如一个表只有两行数据,一次IO就可以完成全表的检索,而此时走索引时则需要两次IO,这时全表扫描(full table scan)是最好。优化模式包括Rule、Choose、First rows、All rows四种方式。Rule:基于规则的方式。Choose:默认的情况下Oracle用的便是这种方式。指的是当一个表或索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别的小,而且相应的列有索引时,那么就走索引,走RBO的方式。FirstRows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。All Rows:也就是我们所说的Cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有的行,从总体上提高查询的吞吐量。没有统计信息则走RBO的方式。为什么表的某个字段明明有索引,但执行计划却不走索引?1、优化模式是all_rows的方式2、表作过analyze,有统计信息(最可能的就是统计信息有误)3、表很小,上文提到过的,Oracle的优化器认为不值得走索引。】作为数据库的优化器,数据库对象的状态信息对数据库使用合理的 ACCESS PLAN至关重要。DB2 优化器使用目录统计信息来确定任何给定查询的最佳访问方案。如果有关表或索引的统计信息已过时或者不完整,则会导致优化器选择不是最佳的方案,并且会降低 执行查询的速度。当数据库里某个表中的记录变化量很大时,需要在表上做REORG操作来优化数据库性能。

    What

    通过重构行来消除“碎片”数据并压缩信息,对表进行重组。reorg还有一个功能就是可以将表中的数据按照某个索引关键字的顺序排列,从而可以减少某些查询I/O的数量。执行REORG可以考虑分为表上有索引和没有索引两种情况:
    a.如表名为DB2INST1.STAFF,索引名为DB2INST1.ISTAFF
    reorg table db2inst1.staff index db2inst1.istaff use tempspace1
    b.建议REORG时使用USE参数指定数据重排时使用的临时表空间,否则,REORG工作将会在表所在表空间中原地执行.如果表上有多个索引,INDEX参数值请使用最为重要的索引名.
    c.表上没有索引:
    reorg table db2inst1.staff use tempspace1
    reorg table sysibm.systables use tempspace1

    Why

    在对表数据进行许多更改之后,逻辑上连续的数据可能位于不连续的物理数据页上,比如对某张表新增一个字段,或者表的某列是可变长度的,这样在插入或者更新操作时就有可能导致行溢出。另外,在删除大量行后,也会造成表空间的数据碎片,这些情况下都会降低数据的访问速度,从而影响数据库的性能。表重组操作会整理数据碎片来减少浪费的空间,并对行进行重新排序以合并溢出记录,从而加快数据访问速 度并最终提高查询性能。还可以指定根据特定索引来重新排序数据,以便查询通过最少次数据读取操作就可以访问数据。既可重组系统目录表,也可以重组数据库 表。

    When

    对于生产数据库,如果有运维时间窗口,建议执行离线的reorg,并且在执行离线reorg时使用临时表空间(-USE–tbspace-name-)。对于没有运维时间窗口的,可以尝试做在线的reorg,但是因为在线的reorg时间会特别的长,需要人为控制,避开业务高峰期。 以脱机方式重组表是整理表碎片的最快方法。重组可减少表所需的空间量并提高数据访问和查询性能。

    How

    生产数据库做reorg的步骤:REORGCHK->REORG->RUNSTATS ,reorg的同时,可以用db2pd -db ibps -reorgs 查看阶段和进度。
    DB2 优化器使用目录统计信息来确定任何给定查询的最佳访问方案。如果有关表或索引的统计信息已过时或者不完整,则会导致优化器选择不是最佳的方案,并且会降低 执行查询的速度。但是,决定要为给定的工作负载收集哪些统计信息是很复杂的事情,并且使这些统计信息保持最新是一项很花费时间的任务。以往,建议对一个频繁大量更新、插入或者删除操作的表进行 RUNSTATS,建议在重组表之后运行 RUNSTATS 以确保收集并维护正确的统计信息。
    1 RUNSTATS
    由于在第二步中REORGCHK时可以对指定的表进行RUNSTATS操作(在REORGCHK时指定UPDATE STATISTICS),所以第一步事实上是可以省略的。
    2 REORGCHK
    REORGCHK 命令返回有关数据组织的统计信息,并且可以建议您是否需要重组特定表。
    可以分为对系统表和用户表两部分分别进行REORGCHK:
    1) 针对系统表进行REORGCHK
    db2 reorgchk update statistics on table system
    使用UPDATE STATISTICS参数指定数据库首先执行RUNSTATS命令。
    2) 针对用户表进行REORGCHK
    db2 reorgchk update statistics on table user
    REORGCHK是根据统计公式计算表是否需要重整。对于每个表有3个统计公式,对索引有3个统计公式(版本8开始有5个公式),如果公式计算结果该表需重整,在输出的REORG字段中相应值为*,否则为-。
    reorgchk 所使用的度量的考虑因素包括:(当查看 reorgchk 工具的输出时,找到用于表的 F1、F2 和 F3 这几列,以及用于索引的 F4、F5、F6、F7 和 F8 这几列。如果这些列中的任何一列有星号 (),则说明当前的表和/或索引超出了阈值。)
    F1: 属于溢出记录的行所占的百分比。当这个百分比大于 5% 时,在输出的 F1 列中将有一个星号 (
    )。
    F2: 数据页中使用了的空间所占的百分比。当这个百分比小于 70% 时,在输出的 F2 列上将有一个星号 ()。
    F3: 其中含有包含某些记录的数据的页所占的百分比。当这个百分比小于 80% 时,在输出的 F3 列上将有一个星号 (
    )。
    F4: 群集率,即表中与索引具有相同顺序的行所占的百分比。当这个百分比小于 80% 时,那么在输出的F4 列上将有一个星号 ()。
    F5: 在每个索引页上用于索引键的空间所占的百分比。当这个百分比小于 50% 时,在输出的 F5 列上将有一个星号 (
    )。
    F6: 可以存储在每个索引级的键的数目。当这个数字小于 100 时,在输出的 F6 列上将有一个星号 ()。
    F7: 在一个页中被标记为 deleted 的记录 ID(键)所占的百分比。当这个百分比大于 20% 时,在输出的 F7 列上将有一个星号 (
    )。
    F8: 索引中空叶子页所占的百分比。当这个百分比大于 20% 时,在输出的 F8 列上将有一个星号 (*)。

    建议(待实现)

    可以通过一些工具(文本解析)将REORGCHK输入的需要reorg的表通过自动化的方式自动生成相应脚本。

    展开全文
  • db2 reorg(转)

    2018-07-02 16:23:00
    DB2 reorg RUNSTATS: db2 connect to rmdb11 user rmadmin using rmadmin 对所有用户表执行runstats(reorgchk加update参数等同于runstats) $ db2 reorgchk update statistics on table user Doing ...

    DB2 reorg

    RUNSTATS:

    db2 connect to rmdb11 user rmadmin using rmadmin

    对所有用户表执行runstats(reorgchk加update参数等同于runstats)

    $ db2 reorgchk update statistics on table user
    
    Doing RUNSTATS ....

    REORG:

    在检查结果中,所有带星号的表或分区表、以及索引都需要做reorg重建。

    $ db2 reorg table RMADMIN.EXPLAIN_DIAGNOSTIC index SYSIBM.SQL120703164841960 use tempspace1
    DB20000I  The REORG command completed successfully.
    $ db2 reorg table RMADMIN.EXPLAIN_DIAGNOSTIC_DATA index RMADMIN.EXP_DIAG_DAT_I1 use tempspace1
    DB20000I  The REORG command completed successfully.
    $ db2 reorg table RMADMIN.EXPLAIN_PREDICATE index RMADMIN.PRD_I1 use tempspace1
    DB20000I  The REORG command completed successfully.
    $ db2 reorg table RMADMIN.RMSTGGRPCLASS index SYSIBM.SQL120321193908820 use tempspace1
    DB20000I  The REORG command completed successfully.
    $ db2 reorg table RMADMIN.RMOBJECTS   use tempspace1
    SQL2217N  The page size of the system temporary table space used by the REORG 
    utility must match the page size of the table space(s) in which the table data 
    resides (including the LONG or LOB column data).  The cause is based on the 
    following reason codes "1".
    SQL2217N 
    REORG 实用程序使用的系统临时表空间的页大小必须与表数据 (包括 LONG 或 LOB 
    列数据)所在表空间的页大小相匹配。原因基于下列原因码 原因码。 说明
    下面是原因码的列表: 
    1.原因与表的数据的临时表空间的选择相关。 
    2.原因与表的 LONG 或 LOB 数据的临时表空间的选择相关。 如果对 REORG 实用程序显式地指定了系统临时表,那么 REORG 实用程序使用的系统临时表空间的页大小必须与表数据(包括 LONG 或 LOB列数据)所在的表空间的页大小相匹配,否则必须为长数据指定适当的容器。下列其中一项违反了此限制: 
    表数据所在的表空间的页大小与指定的系统临时表空间的页大小不同。 该表包含 LONG 或 LOB列,这些列的数据驻留在页大小与系统临时表空间和表的规则数据的页大小不同的表空间中,但是,无法为 LONG 或 LOB数据对象找到具有正确页大小的表空间。 如果未对 REORG 实用程序指定系统临时表空间或 LONG临时表空间,那么该实用程序在内部查找系统临时表空间。在数据库中不存在使用与表数据页大小相同的页大小的系统临时表空间,或者该系统临时表空间此时不可用。
    用户响应
    如果数据库中不存在使用与表数据页大小相同的页大小的系统临时表空间,请创建一个系统临时表空间,它使用与该表数据的页大小相匹配的页大小。如果表数据的页大小与 
    LOB 或 LONG 数据的页大小不同,那么应确保使用该页大小的系统临时表空间也存在。

    如果数据库中存在使用与表数据页大小相同的页大小的系统临时表空间,但是发出命令时该临时表空间不可用,请在该系统临时表空间可用时重新发出该命令。

    当前使用的临时表空间页大小和该表的页大小不符合,需要新建一个页大小和该表的页大小符合的系统临时表空间。 
    查看各个表空间的pagesize:

    SELECT tbspace, pagesize FROM SYSIBM.SYSTABLESPACES

    查看当前bufferpool:

    SELECT * FROM SYSCAT.BUFFERPOOLS

    新建一个页大小为32K的bufferpool

    $ db2 CREATE BUFFERPOOL temppool32 PAGESIZE 32768
    DB20000I  The SQL command completed successfully.

    新建一个临时表空间,使用刚才那个bufferpool

    $ db2 "create system temporary tablespace tempspace3 pagesize 32K managed by system using ('/rmdb11data/rminst11/NODE0000/SQL00001/tmpspace3') BUFFERPOOL temppool32"
    DB20000I  The SQL command completed successfully.

    重新执行reorg:

    $ db2 reorg table RMADMIN.RMMIGRATIONTASKS index SYSIBM.SQL120321193909130   use tempspace3

    监视表重组:

    select
           substr(tabname, 1, 15) as tab_name,
           substr(tabschema, 1, 15) as tab_schema,
           reorg_phase,reorg_max_phase,
           substr(reorg_type, 1, 20) as reorg_type,
           reorg_status,
           reorg_completion,
           dbpartitionnum
         from sysibmadm.snaptab_reorg
         order by dbpartitionnum

    或者

    db2 GET SNAPSHOT FOR TABLES on DBName

    db2 list history reorg all for DBName

    db2pd -db DBName -reorgs index

    $ db2pd -reorgs -db rmdb11
    
    Database Partition 0 -- Database RMDB11 -- Active -- Up 3 days 21:50:20 -- Date 10/30/2015 14:32:09
    
    Table Reorg Information:
    Address            TbspaceID TableID PartID MasterTbs MasterTab TableName          Type    IndexID    TempSpaceID
    0x070000024C0D1528 5         260     n/a    n/a       n/a       EXPLAIN_PREDICATE  Offline 1          1         
    0x070000024C0DEDA8 5         262     n/a    n/a       n/a       EXPLAIN_DIAGNOSTIC Offline 1          1         
    0x070000024C0E6D28 5         263     n/a    n/a       n/a       EXPLAIN_DIAGNOSTIC Offline 1          1         
    0x070000024B2C9628 7         5       n/a    n/a       n/a       RMMIGRATIONTASKS   Offline 1          13        
    0x070000024B2A64A8 5         17      n/a    n/a       n/a       RMSTGGRPCLASS      Offline 1          1         
    
    Table Reorg Stats:
    Address            TableName          Start               End                 PhaseStart          MaxPhase   Phase      CurCount   MaxCount   Status  Completion
    0x070000024C0D1528 EXPLAIN_PREDICATE  10/30/2015 10:12:38 10/30/2015 10:12:38 10/30/2015 10:12:38 4          IdxRecreat 0          0          Done    0         
    0x070000024C0DEDA8 EXPLAIN_DIAGNOSTIC 10/30/2015 10:10:58 10/30/2015 10:10:59 10/30/2015 10:10:58 4          IdxRecreat 0          0          Done    0         
    0x070000024C0E6D28 EXPLAIN_DIAGNOSTIC 10/30/2015 10:12:13 10/30/2015 10:12:13 10/30/2015 10:12:13 4          IdxRecreat 0          0          Done    0         
    0x070000024B2C9628 RMMIGRATIONTASKS   10/30/2015 12:57:45 n/a                 10/30/2015 14:17:16 4          IdxRecreat 202794     576060     Started 0         
    0x070000024B2A64A8 RMSTGGRPCLASS      10/30/2015 10:13:05 10/30/2015 10:13:05 10/30/2015 10:13:05 4          IdxRecreat 0          0          Done    0         

     

    转载于:https://www.cnblogs.com/dahaoran/p/9254430.html

    展开全文
  • 表数据频繁的insert delete 导致表空间未能释放,碎片化, mysql 有没有类似 db2 reorg 优化表的操作
  • (1)对表执行reorg操作如:db2 reorg table tabschema.tabname,可以理解成四个步骤: 1、排序 2、构建 3、替换 4、重建索引 当执行第1,2,3步时,使用目标表所在的数据表空间,将在数据表空间中建立目标表的影子...
  • (1)对表执行reorg操作如:db2 reorg table tabschema.tabname,可以理解成四个步骤: 1、排序 2、构建 3、替换 4、重建索引 当执行第1,2,3步时,使用目标表所在的数据表空间,将在数据表空间中建...
  • db2 reorg详解

    2017-08-01 00:59:00
    reorg 重组,重新放置数据位置。runstats 统计信息,可以优化查询器 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常、安全、高效运行,防止一些错误...
  • Db2 reorg pending state

    2020-09-17 10:43:55
    Error Operation not allowed for reason code “7” on table ...The table is in the reorg pending state. This can occur after an ALTER TABLE statement containing a REORG-recommended operation. refer Wh
  • db2 reorg pending

    2017-02-24 13:52:00
    通常在数据库上线之前,我们都会对数据库...而某些alter table语句则会导致该表处于reorg-pending状态。下面做一些总结: alter table <tablename> alter <colname> set data type <new data type>...
  • db2 reorg重组表

    2019-04-11 09:54:00
    如下情况需要进行重组表:reorg table tablename 1)自上次重组表之后,对该表进行了大量的插入、更新和删除活动 。 2)对于使用具有高集群率的索引的查询,其性能发生了明显变化 。 3)在执行 RUNSTATS 命令以刷新...
  • db2 reorg table failed处理

    千次阅读 2018-07-02 17:29:00
    对表作reorg操作,发生错误,通过db2 "? sql0xxx"查的错误原因为物理空间已满,然后在$DB2_INSTALL_DIR/sqllib/db2dump/查看db2diag.log可以发现是表空间大小不够。 因为reorg table如果没有指定用哪个...
  • db2 reorg,runstats

    2018-10-29 14:58:22
    db2 -x "select 'reorgchk update statistics on table ' || rtrim(tabschema)||'.'||rtrim(tabname) || ';' from sysca...
  • DB2 REORG TABLE

    2011-05-17 15:46:00
    REORG TABLE ...此语句可以在使用 DB2 CLI 函数的应用程序中使用,也可以通过 CLP 发出。 语法 &gt;&gt;-REORG TABLE--table-name--+------------+---------------------&gt;&lt; ...
  • DB2 REORG TABLE 语法

    千次阅读 2015-04-15 17:10:00
    如果在 DROP TABLE 上启用了重组,则在删除表处理结束时执行“reorg table DB2eSYSTABLES 30 10240”(对于 DB2eSYSCOLUMNS 和 DB2eSYSRELS 也是如此)。 在 C/C++ 程序中,通过使用具有属性 SQL_ATTR_REORG_...
  • 完整的DB2 REORG案例

    千次阅读 2016-11-11 16:42:43
    $ db2 reorg table RMADMIN.EXPLAIN_DIAGNOSTIC_DATA index RMADMIN.EXP_DIAG_DAT_I1 use tempspace1 DB20000I The REORG command completed successfully . $ db2 reorg table RMADMIN.EXPLAIN_PREDICATE ...
  • db2 reorg优化及原因

    万次阅读 2013-12-18 16:28:58
    reorg 重组,重新放置数据位置。runstats 统计信息,可以优化查询器 一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常、安全、高效运行,防止一些...
  • 一次完整的DB2 reorg经历

    万次阅读 2015-11-04 20:07:16
    $ db2 reorg table RMADMIN.EXPLAIN_DIAGNOSTIC_DATA index RMADMIN.EXP_DIAG_DAT_I1 use tempspace1 DB20000I The REORG command completed successfully . $ db2 reorg table RMADMIN.EXPLAIN_PREDICATE ...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 367
精华内容 146
关键字:

db2reorg