DB2数据库日常维护-REORG_TABLE
日常统计db2常用命令
1.查看数据库和数据库实例内存分配情况$db2mtrk -i -d 查询所有数据库内存分配情况$db2mtrk -d -v 查询数据库实例下所有应用所分配的内存情况2.主机内存分配情况#svmon -G -O summary=basic,unit=GB 查看物理内存大小(OS)# vmstat -v 查看虚拟内存页分配的大小#vmo -p -o maxperm%=8 -o maxclient%=8 调整Setting maxperm% to 8 in nextboot fileSetting maxclient% to 8 in nextboot fileSetting maxperm% to 8Setting maxclient% to 8#vmo -a |grep -i permmaxperm = 1606264maxperm% = 8minperm = 602349minperm% = 3strict_maxperm = 03. 查看当前并发应用db2 list applications或db2 list applications show detail或 db2 list applications for database dbname [ show detail]4.查看数据库和实例配置参数$ db2 get db cfg for 获取db2某个数据库数据库管理配置环境信息 或者:连接至某个数据库以后执行db2 get db cfg$ db2 get db cfg 查看数据库实例配置参数$db2 list db directory 查看实例连接的所有数据库信息$db2 get dbm cfg 获取db2数据库管理配置环境信息 5.激活数据库和取消激活数据库db2 activate db CRVHNdb2 deactivate db crvhn6.关闭数据库应用进程$db2 force applications all 强行关闭所有数据库进程$db2 "force applications(spid)" 杀掉某个进程db2pd -db crvhn -trandb2 get snapshot for applications 查看应用的快照信息db2pd -util 查看回滚的详细信息db2pd -util show detail 查看回滚的详细信息db2 list history backup all for dbname 查看dbname备份信息db2 get snapshot for DYNAMIC SQL on dbname 查询dbname动态SQL语句db2level 查看数据库版本 db2 get instance 显示当前数据库管理实例 db2 list active databases 列出所有活动的数据库db2 list tables for all 列出当前数据库下所有的表db2 list tables for schema [user] 列出特定用户表 db2 list packages for all 列出当前数据库下所有的包db2 describe table 表名 列出表结构信息db2 list tables for system 列出所有系统表db2 list tables for user 列出用户表 db2 create table t1 like t2 创建一个与数据库中某个表(t2)结构相同的新表(t1)db2 "insert into t1 select * from t2" 将一个表t1的数据导入到另一个表t2 db2 -tvf scripts.sql 执行脚本文件db2 ? 22001 查看错误码信息 $ db2iauto -on 自动启动 $ db2iauto -off 不自动启动 设置实例系统启动时是否自动启动db2 connect reset 或 db2 terminate --断开与数据库的连接 db2look -d -u -e -o .sql --导出数据库的表结构,其中用户空间
db2 reorg table 用法
db2 reorg table 用法
DB2是一种关系型数据库管理系统,它是IBM公司开发的一款数据库软件。在使用DB2时,我们经常需要对表进行重组(reorg),以优化表的性能和提高数据库的效率。本文将介绍DB2 reorg table 的用法,包括什么是reorg table、为什么需要reorg table、如何使用reorg table等方面。
什么是reorg table?
Reorg table是DB2中的一个命令,它用于重组表。重组表是指将表中的数据重新组织,以优化表的性能和提高数据库的效率。重组表可以消除表中的碎片,使表的数据更加紧凑,从而提高查询和更新的速度。
为什么需要reorg table?
在使用DB2时,表的数据会随着时间的推移而不断变化。当表中的数据被删除或更新时,表中的碎片会逐渐增多。这些碎片会占用表的空间,使表的数据分散在不同的磁盘块中,从而降低查询和更新的速度。此外,当表的数据量很大时,查询和更新的速度也会变慢。因此,我们需要使用reorg table命令来优化表的性能和提高数据库的效率。
如何使用reorg table?
使用reorg table命令可以重组表,以优化表的性能和提高数据库的效率。下面是使用reorg table命令的步骤:
1. 打开DB2命令行窗口。
2. 输入以下命令:
reorg table tablename
其中,tablename是要重组的表的名称。
3. 按Enter键执行命令。
4. 等待命令执行完成。
5. 关闭DB2命令行窗口。
在执行reorg table命令时,我们可以使用一些选项来控制重组的方式。下面是一些常用的选项:
DB2 日常维护_官方
| August 9, 2005
© 2005 IBM Corporation
锁信息(Con.)
命令: db2 get snapshot for database on <dbname> | grep -i 应用 db2 get snapshot for database on <dbname> | grep –i 时间 输出: 应用程序连接 = 53 当前连接的应用程序 =1 数据库管理器当前执行的应用程序 =0 与应用程序相关的代理程序数 =1 与应用程序相关的最大代理程序数 = 2 第一个数据库连接时间戳记 = 2005-06-08 10:27:04.903429 上次复位时间戳记 = 上次备份时间戳记 = 2005-05-30 21:10:16.000000 快照时间戳记 = 2005-06-08 11:41:35.339447 锁等待=当前正等待锁定的代理程序数/当前连接的应用程序 死锁发生率=检测到死锁 /(快照时间戳记 -第一个数据库连接时间戳记 ) 锁升级发生率=锁定升级 /(快照时间戳记 -第一个数据库连接时间戳记 )
| August 9, 2005
© 2005 IBM Corporation
编目告诉缓存命中率
命令: db2 get snapshot for database on <dbname> | grep -i目录高速缓存 输出: 目录高速缓存查询 = 2432 目录高速缓存插入 = 24 目录高速缓存溢出 =0 目录高速缓存高水位标记 =0
DB2数据库管理最佳实践笔记-10日常运维
10.1 日常运维工具概述
Runstats是run statistics的缩写,意思是收集统计信息,目的是为DB2优化器提供最佳路径选择;
Reorg是重组的意思,目的是减少表和索引在物理存储上的碎片,提供性能;
Reorgchk是重组前的检查
Rebind是对一些包、存储过程或静态程序进行重新绑定。
几个工具的执行流程:
首先通过Runstats收集表和索引的统计信息,然后执行Reorg重组,如果有必要则执行,然后再次收集统计信息。最后,对于静态语句、存储过程等,执行Rebind绑定.
10.2 Runstats
在系统运行一个查询的时候,优化器需要决定用某种方式来访问数据。只有当DB2对表中的数据有一个大概的了解,才能知道每一步操作大约需要处理多少数据,返回多少行。当优化器了解了这些信息后,就会根据一系列的运算,判定出各种访问途径所需要消耗的资源,然后从中选择一个消耗资源最少的方法.
最普通的Runstats就是统计表和索引中有多少行数据,有多少不同的数值.
Runstats命令使用DISTRIBUTION参数手机数据分布.数据分布分为两种,一种叫做频率采样(Frequency),一种叫做百分比采样(Quantile)。当收集数据分布时,两种采样方式都会被收集.其中频率采样是手机表中拥有相同数量最多的几行,比如10000行数据中9000行为10,然后500行为9,然后100行为8,剩下的部分平均分布.如果我们制定Frequency为3的话,那么系统就会记录下来有9000行10,500行9,然后100行8,剩下的部分在估算时则假定平均分布。而百分比采样则是将整个10000行数据分成相等大小的若干段,然后记录每一段的段首和段尾的数值,当需要查询一个数据段时(比如C1〉10 AND C1<15),就可以根据每一个数据段的启始数值加上段落的大小,估算出符合查询条件的记录数量。
db2_表空间状态
图 2. 可以使用 LIST TABLESPACES 命令确定连接数据库中表空间的当前状态。
表 2. 受支持的表空间状态
状态
十六进制状 态值
描述
示例
在执行指定时间
点的(point-intime)表空间前 滚操作之后,或 者在执行指定了
DB2 基础: 阐明表和表空间的状态
Roman B. Melnyk (roman_b_melnyk@hotmail.com), DB2 信息开发
简介: DB2 使用表和表空间状态来控制对数据的访问,或帮助保护数据库的完整性。本文描 述了这些状态,并以工作示例的方式,展示了出现这些状态的典型条件和如何对其做出响 应。
是指将表空间区 alter tablespace ts1 add (file
段(extent)从 '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c2'
某一位置移动到 1024);
另一位置,试图 list tablespaces;
保持数据成一整 connect reset;
表空间 表空间
表 表空间 表空间 表空间
表 表空间或 表
Normal
表空间或 表
Not Load Restartable
db2字段修改(增,删,改)操作
db2字段修改(增,删,改)操作
1.添加字段
alter table [table_name] add [column_name] [column_type] add [column_name] [column_type];
2.添加字段带默认值
alter table [table_name] add column [column_name] [column_type] not null with default [value];
3.删除字段
alter table [table_name] drop column [column_name];
4.修改字段类型
alter table [table_name] alter column [column_name] set data type [column_type];
5.将原表列not null属性修改为null属性
alter table [table_name] alter column [column_name] drop not null;
以上所有的修改都会将表处于reorg pending状态所以我们必须进⾏reorg才能使该表恢复到正常状态。否则表不可以使⽤,查询或更新报错DB2 sqlstate 57016
6.reorg操作
reorg table [table_name]
如果我们不是DBA的话,好多链接数据库的客户端⼯具是不能执⾏ reorg table [table_name] 的,我们可以⽤下⾯的语句执⾏reorg操作:call SYSPROC.ADMIN_CMD('reorg table [table_name]')
DB2最新维护手册
DB2维护手册
目录
DB2维护手册 (1)
一、DB2入门-数据库实例 (5)
二、DB2日常维护日操作 (20)
1、检查管理服务器是否启动 (21)
2、检查DB2实例是否已经启动 (21)
3、查看表空间状态是否正常 (21)
4、查看表的状态 (22)
5、查看磁盘空间 (23)
6、检查存储管理软件是否正常 (23)
7、检查数据库备份是否正常 (24)
8、检查归档日志是否正确归档了 (24)
9、查看缓冲池的命中率 (24)
10、查看当前运行最频繁的SQL,其命中率是否正常 (24)
11、查看当前连接的应用程序,有没有非法连接 (25)
12、检查有没有死锁 (25)
13、对表和索引进行RUNSTATS (25)
14、检查表是否需要重组 (25)
15、对需要重组的表进行重组 (26)
三、DB2日常维护月操作 (27)
1、查看DB2日志 (27)
2、检查备份和日志是否都保存好了 (27)
四、DB2日常维护季度操作 (27)
1、通过快照监控器,查看系统性能如何 (27)
2、数据库补丁级别 (28)
五、注意事项 (28)
1、不要删除活动日志文件 (28)
2、注意交易日志存储空间 (28)
3、按照系统的实际工作量配置日志空间 (29)
4、设置正确数据库代码页 (29)
5、检查许可证(L ICENSE)安装情况 (30)
6、创建数据库前调整好系统时间 (30)
7、不要随便执行CHOWN (CHMOD)–R(UNIX/L INUX) (30)
8、在归档日志模式下使用LOAD记得加NONRECOVERABLE参数 (31)
REORGTABLE命令优化数据库性能
REORGTABLE命令优化数据库性能
【转】DB2⽇常维护——REORG TABLE命令优化数据库性能
⼀个完整的⽇常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,
保证数据库的正常、安全、⾼效运⾏,防⽌⼀些错误重复发⽣。
由于DB2使⽤CBO作为数据库的优化器,数据库对象的状态信息对数据库使⽤合理的 ACCESS PLAN⾄关重要。
DB2 优化器使⽤⽬录统计信息来确定任何给定查询的最佳访问⽅案。如果有关表或索引的统计信息已过时或者不完整,
则会导致优化器选择不是最佳的⽅案,并且会降低执⾏查询的速度。当数据库⾥某个表中的记录变化量很⼤时,
需要在表上做REORG操作来优化数据库性能
⼀、完整的REORG表的过程
值得注意的是,针对数据库对象的⼤量操作,如反复地删除表,存储过程,会引起系统表中数据的频繁改变,
在这种情况下,也要考虑对系统表进⾏REORG操作。⼀个完整的REORG表的过程应该是由下⾯的步骤组成的:
RUNSTATS -> REORGCHK -> REORG -> RUNSTATS -> BIND或REBIND
注:执⾏下⾯命令前要先连接数据库
1 RUNSTATS
由于在第⼆步中REORGCHK时可以对指定的表进⾏RUNSTATS操作(在REORGCHK时指定UPDATE STATISTICS),
所以第⼀步事实上是可以省略的。
2 REORGCHK
在对表数据进⾏许多更改之后,逻辑上连续的数据可能会位于不连续的物理数据页上,在许多插⼊操作创建了溢出记录时尤其如此。按这种⽅式组织数据时,数据库管理器必须执⾏其他读操作才能访问顺序数据。另外,在删除⼤量⾏后,也需要执⾏其他的读操作。
DB2数据库常用命令数据库学习
DB2数据库常用命令数据库学习你可以用 get snapshot for locks on XXX 看是那个表锁了,再从相关的操作去查原因吧db2pd -d 库名 -locks和db2pd -d 库名 -wlockswindow环境下在db2cmd下,使用db2 get snapshot for locks on dbname-查看数据库管理器级别快照信息 db2 get snapshot for dbm -查看数据库级别快照信息 db2 get snapshot for database on dbname -查看应用级别快照信息 db2 get snapshot for application agentid appl-handler 注:appl-handler可以从list applicaitions的输出中得到 -查看表级别快照信息 db2 get snapshot for tables on dbname 注:需要把tables快照开关设为ON才会有作用 -查看锁快照信息 db2 get snapshot for locks on dbname 或 db2 get snapshot for locks on for application agentid appl-handler -查看动态sql语句快照信息 db2 get snapshot for dynamic sql on dbname db2 get monitor switchesdb2 update monitor switches using lock on statement oncreate event monitor mymonitor for deadlocks,statements write to file 'D:\temp' set event monitor mymonitor state 1db2evmon - path 'D:\temp'DB2频繁出现死锁,常用解决命令db2 get snapshot for locks on sampledb2 get db cfg for sampledb2 update db cfg using dlchktime 10000 4. 查看快照信息 -查看数据库管理器级别快照信息 DB2 get snapshot for dbm -查看数据库级别快照信息 DB2 get snapshot for database on dbname -查看应用级别快照信息 DB2 get snapshot for application agentid appl-handler 注:appl-handler可以从list applicaitions的输出中得到 -查看表级别快照信息 DB2 get snapshot for tables on dbname 注:需要把tables快照开关设为ON才会有作用 -查看锁快照信息 DB2 get snapshot for locks on dbname 或 DB2 get snapshot for locks for application agentid appl-handler -查看动态sql语句快照信息 DB2 get snapshot for dynamic sql on dbname 5.使用事件查看器 可以使用时间查看器收集锁事件,SQL语句事件,从而根据事件分析锁原因。 事件类型 使用事件监控器,首先要选定所关注的事件类型,DB2中有很多事件类型,可以用于锁分析的通常会用到以下三种: DEADLOCKS DEADLOCKS WITH DETAILS STATEMENTS 步骤: -创建事件监控器 create event monitor evmname for eventtype write to file ‘directory’ 例:create event monitor mymonitor for deadlocks, statements write to file ‘c:\temp’ -把事件监控器打开 接上例: set event monitor mymonitor state 1 注:1为打开,0为关闭 事件监控器开始工作,当所
DB2动态生成维护脚本
昨天写的脚本,可以根据reorgchk的结果,动态生成相关的reorg table语句。三点说明:1,此脚本中、英文DB2都适用。2,如果是WINDOWS平台,可以先将reorgchk的结果传到UNIX上,存名为/tmp/reorgchk.txt,然后跳过第一个命令继续。3,最后的db2rbind语句可根据实际的数据库名,自己修改。db2 reorgchk update statistics on table all > /tmp/reorgchk.txtsed 's/表:/Table: /' /tmp/reorgchk.txt | \awk '{if (NF == 2 && $1 ~ /^Table/) printf "\n\n"$2" "; if (NF == 12 && $NF ~ /\*/) printf "table "$1"."$2" ";if (NF == 15 && $NF ~ /\*/) printf "index "$1"."$2" "}' | \awk '{if ($2 == "table") print "db2 reorg table "$1"\ndb2 runstats on table "$1" with distribution and detailed indexes all allow write access";if ($2 == "index") print "db2 reorg indexes all for table "$1"\ndb2 runstats on table "$1" with distribution and detailed indexes all allow write access"}END {print "db2rbind sample -l db2rbind.out"}' | \sort |uniq这个是脚本执行后动态生成的语句:db2 reorg indexes all for table SYSIBM.SYSDATATYPESdb2 reorg indexes all for table SYSIBM.SYSINDEXESdb2 reorg indexes all for table SYSIBM.SYSPLANDEPdb2 reorg indexes all for table SYSIBM.SYSRELSdb2 reorg indexes all for table SYSIBM.SYSROUTINEPARMSdb2 reorg indexes all for table SYSIBM.SYSROUTINESdb2 reorg table DB2ADMIN.EMPLOYEEdb2 reorg table SYSIBM.SYSINDEXESdb2 reorg table SYSTOOLS.HMON_ATM_INFOdb2 runstats on table DB2ADMIN.EMPLOYEE with distribution and detailed indexes all allow write accessdb2 runstats on table SYSIBM.SYSDATATYPES with distribution and detailed indexes all allow write accessdb2 runstats on table SYSIBM.SYSINDEXES with distribution and detailed indexes all allow write accessdb2 runstats on table SYSIBM.SYSPLANDEP with distribution and detailed indexes all allow write accessdb2 runstats on table SYSIBM.SYSRELS with distribution and detailed indexes all allow write accessdb2 runstats on table SYSIBM.SYSROUTINEPARMS with distribution and detailed indexes all allow write accessdb2 runstats on table SYSIBM.SYSROUTINES with distribution and detailed indexes all allow write accessdb2 runstats on table SYSTOOLS.HMON_ATM_INFO with distribution and detailed indexes all allow write accessdb2rbind sample -l db2rbind.out
Db2数据库系统日常管理和维护资料大全分析
Db2 V8 数据库系统日常管理和维护资料大全
DB2中有关日期和时间的函数,及应用
DAYNAME 返回一个大小写混合的字符串,对于参数的日部分,用星期表示这一天的名称(例如,Friday)。
DAYOFWEEK 返回参数中的星期几,用范围在1-7 的整数值表示,其中1 代表星期日。
DAYOFWEEK_ISO 返回参数中的星期几,用范围在1-7 的整数值表示,其中1 代表星期一。
DAYOFYEAR 返回参数中一年中的第几天,用范围在1-366 的整数值表示。DAYS 返回日期的整数表示。
JULIAN_DAY 返回从公元前4712 年1 月1 日(儒略日历的开始日期)到参数中指定日期值之间的天数,用整数值表示。
MIDNIGHT_SECONDS 返回午夜和参数中指定的时间值之间的秒数,用范围在0 到86400 之间的整数值表示。
MONTHNAME 对于参数的月部分的月份,返回一个大小写混合的字符串(例如,January)。
TIMESTAMP_ISO 根据日期、时间或时间戳记参数而返回一个时间戳记值。TIMESTAMP_FORMAT 从已使用字符模板解释的字符串返回时间戳记。TIMESTAMPDIFF 根据两个时间戳记之间的时差,返回由第一个参数定义的类型表示的估计时差。
TO_CHAR 返回已用字符模板进行格式化的时间戳记的字符表示。TO_CHAR 是V ARCHAR_FORMAT 的同义词。
TO_DA TE 从已使用字符模板解释过的字符串返回时间戳记。TO_DA TE 是TIMESTAMP_FORMA T 的同义词。
db2重组表结构命令
DB2中重组表结构的命令是 `REORG TABLE`。
这个命令用于重构表的行,以消除分段数据和压缩信息。在分区表上,可以对单个分区进行重组。使用`REORG TABLE`命令时,需要具备以下权限之一:SYSADM、SYSCTRL、SYSMAINT、DBADM、SQLADM或表模式上的SCHEMAADM,以及对表的CONTROL特权。
以下是`REORG TABLE`命令的基本语法:
```sql
REORG TABLE table-name [, ...] [IN [SCHEMA] schema-name] [INDEX INCLUDING | INDEX EXCLUDING | INDEX ALL | INDEX NONE] [RECLAIM EXTENTS]
```
其中:
1. `table-name`:指定要重组的表的名称,该表可以位于本地数据库或远程数据库中。
2. `[IN [SCHEMA] schema-name]`:可选参数,指定表所在的模式名称。如果省略模式名称,将使用默认模式。
3. `INDEX INCLUDING | INDEX EXCLUDING | INDEX ALL | INDEX NONE`:可选参数,指定是否包括索引的重组。
4. `RECLAIM EXTENTS`:按列组织的表支持的参数,用于回收未使用的空间。
需要注意的是,对于类型表,指定的表名必须是层次结构的根表的名称。对于多维集群(MDC)或插入时间集群(ITC)表的重组,不能指定索引。
存储过程名SYSPROC.ADMIN_CMD的使用
存储过程名SYSPROC.ADMIN_CMD的使⽤
1.使⽤db2的⼈都知道,DB2存储过程中只能操作DDL和DML语句,不能操作CLP命令
2.还有⼀些连接DB2的客户端⼯具也不能做CLP操作,如:RUNSTATS,REORG,import,load
为了可以在存储过程中或者客户端⼯具中使⽤这些CLP命令,我们可以调⽤⼀个存储过程,SYSPROC.ADMIN_CMD
如:1. 重组表dpc_taskctl
CALL SYSPROC.ADMIN_CMD('reorg table dpc_taskctl')
DB2之上机操作和问题解决
DB2学习笔记
DB2上机操作命令
1实例相关:
查询实例:db2ilist
查看当前实例:db2 get instance
创建实例:db2icrt instance_name(windows)
db2icrt -u fenced_user_IDinstance_name(linux)
使用实例:set db2instance=实例名称
删除实例:db2idrop -finstance_name
迁移实例:db2imigr instance_name
更新实例:db2iupdt instance_name
连接实例:db2 attach to instance_name
断开实例:db2 detach
启动实例:db2start
关闭实例:db2stop [force]
2数据库相关:
查询数据库:db2 list database directory [on /home/db2inst1]
db2 list active databases
创建数据库:
db2 create database yzht using codeset ISO8859-1 territory cn pagesize 4096 db2 create database itp using codeset GBK territory cn pagesize 8192
db2CREATE DATABASE DB2_GCB ON G: ALIAS DB2_GCB USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32
linux关闭db2数据库命令
linux关闭db2数据库命令
DB2数据库在linux操作系统下可以通过相关命令启动关闭,下面由店铺为大家整理了linux关闭db2数据库的相关命令,希望对大家有所帮助。
linux关闭db2数据库命令
1.停止数据库
DB2stop
linux下关于DB2数据库的其他命令
2.启动数据库
DB2start
3.连接数据库
DB2 connect to o_yd user DB2 using pwd
4.读数据库管理程序配置
DB2 get dbm cfg
5.写数据库管理程序配置
DB2 update dbm cfg using 参数名参数值
6.读数据库的配置
DB2 connect to o_yd user DB2 using pwd
DB2 get db cfg for o_yd
7.写数据库的配置
DB2 connect to o_yd user DB2 using pwd
DB2 update db cfg for o_yd using 参数名参数值
8.关闭所有应用连接
DB2 force application all
DB2 force application ID1,ID2,,,Idn MODE ASYNC
(DB2 list application for db o_yd show detail)
9.备份数据库
DB2 force application all
DB2 backup db o_yd to d:
(DB2 initialize tape on \.tape0)
(DB2 rewind tape on \.tape0)
db2 9.5数据库日常操作
db2数据库日常操作1. DB2 9.5的安装(for windows)
执行安装盘上的setup.exe进入选择产品界面(如下图):选择安装产品标签——选择DB2企业服务器版本9.5
点击安装产品按钮进入安装向导(如下图):
点击下一步
选中”我接受许可证协议中的全部条款”点下一步
选择“典型安装”点击下一步
域用户选择默认使用本地用户账户
设置用户名和密码
注意:
这里设置的用户名和密码要和windows里的帐户相对应.
帐户也可自定义,如果是新加的windows用户,必须授予用户管理员权限(如下图)创建windwos用户
勾选密码永不过期选项授予用户权限
点击添加按钮
确定后权限授予完成
实例名可以按需要配置
去掉准备DB2工具目录的选项
去掉设置DB2服务器以发送通知的选项
去掉启用操作系统安全性的选项
安装完成
2. DB2的日常操作
执行脚本时需打开命令编辑器
(1)建库
CREA TE DA TABASE [database] AUTOMA TIC STORAGE NO ON 'D:\' USING CODESET GBK TERRITORY CN COLLA TE USING SYSTEM PAGESIZE 4096;
创建用户并授予权限(在用其它管理员用户登陆的情况下)
CONNECT TO NCDB;
GRANT
DBADM,CREA TET AB,BINDADD,CONNECT,CREA TE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEM A,LOAD,CREA TE_EXTERNAL_ROUTINE,QUIESCE_CONNECT,SECADM ON DA TABASE TO USER db2admin;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
转)DB2日常维护——REORG TABLE命令优化数据库性能
2009-04-24 16:18
一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作,以便更好的监控和维护数据库,保证数据库的正常、安全、高效运行,防止一些错误重复发生。
由于DB2使用CBO作为数据库的优化器,数据库对象的状态信息对数据库使用合理的 ACCESS PLAN至关重要。DB2 优化器使用目录统计信息来确定任何给定查询的最佳访问方案。如果有关表或索引的统计信息已过时或者不完整,则会导致优化器选择不是最佳的方案,并且会降低执行查询的速度。当数据库里某个表中的记录变化量很大时,需要在表上做REORG操作来优化数据库性能
一、完整的REORG表的过程
值得注意的是,针对数据库对象的大量操作,如反复地删除表,存储过程,会引起系统表中数据的频繁改变,在这种情况下,也要考虑对系统表进行REORG 操作。一个完整的REORG表的过程应该是由下面的步骤组成的:
RUNSTATS -> REORGCHK -> REORG -> RUNSTATS -> BIND或REBIND
注:执行下面命令前要先连接数据库
1 RUNSTATS
由于在第二步中REORGCHK时可以对指定的表进行RUNSTATS操作(在REORGCHK时指定UPDATE STATISTICS),所以第一步事实上是可以省略的。
2 REORGCHK
在对表数据进行许多更改之后,逻辑上连续的数据可能会位于不连续的物理数据页上,在许多插入操作创建了溢出记录时尤其如此。按这种方式组织数据时,数据库管理器必须执行其他读操作才能访问顺序数据。另外,在删除大量行后,也需要执行其他的读操作。
表重组操作会整理数据碎片来减少浪费的空间,并对行进行重新排序以合并溢出记录,从而加快数据访问速度并最终提高查询性能。还可以指定根据特定索引来重新排序数据,以便查询时通过最少次数据读取操作就可以访问数据。
下列任何因素都可能指示用户应该重组表:
1)自上次重组表之后,对该表进行了大量的插入、更新和删除活动。
2)对于使用具有高集群率的索引的查询,其性能发生了明显变化。
3)在执行 RUNSTATS 命令以刷新统计信息后,性能没有得到改善。
4)REORGCHK 命令指示需要重组表(注意:在某些情况下,REORGCHK 总是建议重组表,即使在执行了重组后也是如此)。例如,如果使用 32KB 页大小,并且平均记录长度为 15 字节且每页最多包含 253 条记录,则每页具有 32700- (15 x 253)=28905 个未使用字节。这意味着大约 88% 的页面是可用空间。用户应分析 REORGCHK 的建议并针对执行重组所需的成本平衡利益。
5)db.tb_reorg_req(需要重组)运行状况指示器处于 ATTENTION 状态。此运行状况指示器的集合详细信息描述通过重组可获得好处的表和索引的列表。
REORGCHK 命令返回有关数据组织的统计信息,并且可以建议您是否需要重组特定表。然而,定期或在特定时间对目录统计信息表运行特定查询可以提供性能历史记录,该记录使用户可以发现可能具有更广性能隐含的趋势。
DB2 V9.1 引入了自动重组功能,可以对表和索引进行自动重组。自动重组通过使用 REORGCHK 公式来确定何时需要对表进行重组。它会定期评估已经更新了统计信息的表,以便了解是否需要重组。
REORGCHK命令的语法如下:
. -UPDATE STATISTICS--.
>>-REORGCHK--+--------------------+----------------------------->
'-CURRENT STATISTICS-'
.-ON TABLE USER-----------------.
>--+-------------------------------+---------------------------><
'-ON--+-SCHEMA--schema-name---+-'
| .-USER-------. |
'-TABLE--+-SYSTEM-----+-'
+-ALL--------+
'- table-name-'
下面我们来看一下各个选项的含义:
UPDATE STATISTICS:更新表的统计数据,根据该统计数据判断是否需要重
组表。
CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表。
TABLE table_name:对单个表进行分析。
TABLE ALL:对数据库所有的表进行分析。
TABLE SYSTEM:对系统表进行分析。
TABLE USER:对当前用户模式下的所有表进行分析。
如果数据库中数据量比较大,在生产系统上要考虑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:群集率,即表中与索引具有相同顺序的行所占的百分比。当这个百分比