db2diag.log文件内容分析

合集下载

DB2 备份 以及 各个参数

DB2 备份 以及 各个参数

00001 SYSCATSPACE
00002 USERSPACE1
----------------------------------------------------------------------------
Comment: DB2 BACKUP SAMPLE OFFLINE
Backup successful. The timestamp for this backup image is : 20060528135607
查看到
LOGRETAIN 选项为 OFF
Path to log files 选项为 /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
修改LOGRETAIN 选项为 ON
DB2 备份 以及 各个参数 (二)
(2009-08-25 19:16:26)
B D 20060528134320001 F D S0000000.LOG S0000000.LOG
----------------------------------------------------------------------------
Contains 2 tablespace(s):
[db2inst1@fedora ~]$ db2 connect to sample
SQL1116N A connection to or activation of database "SAMPLE" cannot be made
because of BACKUP PENDING. SQLSTATE=57019
Overflow log path (OVERFLOWLOGPATH) =

DB2手册

DB2手册

1前言 (8)2DB2专有名词解释 (8)2.1I NSTANCE(实例) (8)2.2DB2A DMINISTRA TION S ERVER(管理服务器) (8)2.3C ONTAINER(容器) (8)2.4DRDA (8)2.5DARI (8)2.6SPM (8)2.7FCM (8)2.8ADSM (8)2.9DCE (8)3DB2编程 (9)3.1建存储过程时C REATE 后一定不要用TAB键 (9)3.2使用临时表 (9)3.3从数据表中取指定前几条记录 (9)3.4游标的使用 (9)3.5类似DECODE的转码操作 (10)3.6类似CHARINDEX查找字符在字串中的位置 (10)3.7类似DATEDIF计算两个日期的相差天数 (11)3.8写UDF的例子 (11)3.9创建含IDENTITY值(即自动生成的ID)的表 (11)3.10预防字段空值的处理 (11)3.11取得处理的记录数 (11)3.12从存储过程返回结果集(游标)的用法 (11)3.13类型转换函数 (12)3.14存储过程的互相调用 (12)3.15C存储过程参数注意 (13)3.16存储过程FENCE及UNFENCE (13)3.17SP错误处理用法 (13)3.18V ALUES的使用 (13)3.19给SELECT 语句指定隔离级别 (14)3.20A TOMIC及NOT A TOMIC区别 (14)3.21C及SQL存储过程名称都要注意长度 (14)3.22怎样获得自己的数据库连接句柄 (14)3.23类似于ORACLE的N AME PIPE (14)3.24类似于ORACLE的TRUNCATE清表但不记日志的做法 (14)3.25用CLI编程批量的INSERT (14)4DB2一些不好的限制 (18)4.1临时表不能建索引 (18)4.2CURSOR不能定义为WITH UR(可以但...).. (18)4.3CURSOR ORDER BY以后不能FOR UPDATE (18)4.4程序中间不能自由改变隔离级别 (18)4.5UPDATE 不能用一个表中的记录为条件修改另一个表中的记录。

DB2数据库管理最佳实践笔记-10日常运维

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在优化SQL时需要处理更多的信息,并占用更多的系统存储空间,可能会导致性能的下降。

DB2性能工具简介

DB2性能工具简介

在数据库数据页损坏无法进行正常的数据操作时,可以通过db2dart进行数据恢复。当行,则可以在已损坏的表中用 db2dart命令进行数据导出,前提是数据库能连接上。 Db2dart dbname /ddel 然后按提示输入表id,表空间id,起始页,导出页数 Filename used for output data file is TS2T10.DEL. If existing file, data will be appended to it. Formatted data being dumped ... Dumping Page 0 .... Dumping Page 1 .... Table object data formatting end. 导出的数据就在TS2T10.DEL中,以文本形式保存。 由于db2dart命令不需要通过db2数据库管理器进行对数据库的访问,而是直接从磁盘 中读取数据的数据,因此,就算是数据表无法访问,也能进行数据的导出。不过当数 据量大时速度会十分慢。
db2dart 当数据库出现问题的时候,可以用db2dart进行检查,验证数据库以及相关数据库对象是 否正确 db2dart dbname /db Table inspection start: UCAR.TABLE4 Data inspection phase start. Data obj: 7 In pool: 2 Data inspection phase end. Index inspection phase start. Index obj: 7 In pool: 2 Scanning pages for unique index itoken(0) root page:385p. Scanning pages for unique index itoken(1) root page:386p. Index inspection phase end. Table inspection end. ......... Database inspection phase end. ______________________________________ The requested DB2DART processing has completed successfully! All operation completed without error; no problems were detected in the database. ______________________________________ Complete DB2DART report found in: PRODDB.RPT

db2日志说明

db2日志说明

db2日志说明db2日志记录1. 日志的意义:主要在于数据恢复。

Db2实施了提前写日志存档模式,当发出删除、插入或更新数据库中某一数据的SQL调用时,所作出的数据变更首先要写到日志中去。

当发出一条SQL提交确认命令时,DB2首先要把redo所需要的日志写入磁盘。

如果断电的话,所有被提交的事务都会重新做一遍,而未提交的则会rollback。

事务:为了保证数据的可恢复性和一致性引入的概念。

比如执行了两条sql语句,但是他们是为了完成同一件事,因此他们会被当做一个整体。

当发生意外情况时,如果已经commit,但是未写到磁盘,就要执行redo重新执行一遍。

如果还没有commit,就要全部回滚。

日志作用:比如昨天晚上进行了数据库备份,但是今天中午数据库出现了问题(如存储介质损坏)需要恢复,那么只能恢复到昨天晚上的状态,今天上午的数据都没法恢复,这时如果数据库日志没有损坏,就可以通过日记把这段时间的操作重新执行一遍。

2. 日志分为循环日志和归档日志:日志中只记录DML操作(insert,update和delete操作),当我们前台执行了一条insert,update或delete语句,日志中就会相应的记录这条SQL语句的redo操作和undo操作几种操作类型:DDL(Data Definition Language 数据定义语言),用于操作对象和对象的属性(数据库,表,视图等)。

具体表现在Create,Drop 和Alter操作上。

不会对具体的数据进行操作,而是对对象进行操作。

像主键约束、唯一约束、非空约束、外键约束、核查约束和缺省约束这些操作都是使表具有某些特性,所以在这里我认为他们都是表的属性,也属于DDL操作。

DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。

主要表现在Insert,Delete和Update等操作上。

db2日志原理及案例

db2日志原理及案例

NO 0 0 520 OFF OFF NEARSYNC OFF OFF 5 20 OFF
日志规划
• 日志空间大小规划
– 初始设置为数据量大小的10-20%,然后监控调整 – 设置logprimary, logsecond, logfilsiz参数
• 规划路径
– – – – 活动日志路径:newlogpath 镜像日志路径:mirrorlogpath 归档日志设置:logarchmeth1: off/disk/tsm/logretain 归档日志设置2:logarchmeth2
SQLOGDIR
mirrorlogpath
S~3.LOG S~4.LOG S~5.LOG
S~0.LOG
S~1.LOG
S~2.LOG
数据库日志相关的一些参数
Primary log files (LOGPRIMARY) Secondary log files (LOGSECOND) Log size (LOGFILSIZ) New log path ? + ?
16
日志存放位置
Instance /your/choice
NODE0000
newlogpath
S~3.LOG S~4.LOG S~5.LOG
SQL0000n
/2nd/choice
Different disk drive and potentially a different disk controller unit
Student exercise
• 数据库恢复 • Db2dart • Patch日志控制文件
崩溃恢复(crash recovery)
• DB2异常终止 • 操作系统异常
需要思考的问题?

db2数据库事务日志满

db2数据库事务日志满
但还有另外一种原因,即在日志空间并未用尽的情况下,当某个占有最旧活动日志的应用长时间未作提交操作,阻止了日志的 LSN 的分配,造成日志空间无法使用,同样会引发这一日志满的报错。对于这种情况,可以提交该交易或利用 FORCE 命令来终止此应用程序,以便释放它所占用的日志空间,使 LSN 可以继续分配,空闲的日志空间可用。这里就提供了由这一原因导致日志满问题的解决方法。
DB21024I 该命令为异步的,可能不会立即生效。
根据提示,由于该命令是异步操作,可再次使用:
db2 list applications
验证应用是否已被真正停止,如果输出中已没有该应用,它
Hale Waihona Puke 为了您的安全,请只打开来源可靠的网址
打开网站 取消
来自: /%D3%F4%C3%C6%BB%A8%C9%FA%BD%B4/blog/item/4af11d138842615df819b88a.html
SQL0964C 数据库的事务日志已满。
DB2 活动日志满通常是由于存在大量未提交事务的数据,使得活动日志的空间不能及时释放,使新的事务无法申请到可用日志空间,而最终报出 SQL0964C 的错误所致。为使应用程序成功运行,而不是被回滚,通常会考虑根据情况选择增大以上公式中的某些数据库参数,以增大活动日志空间来解决这一问题。
Appl id holding the oldest transaction = 787273
同样可以找到这个应用程序的句柄。这时使用以下命令可以在无需断开数据库其它应用程序的连接的情况下强行终止该应用程序:
db2 force application (787273)
DB20000I FORCE APPLICATION 命令成功完成。

db2系统命令和配置参数大全

db2系统命令和配置参数大全
db2untag - 释放容器标记
db2updv9 - 将数据库更新为版本 9 当前级别
db2xdbmig - 迁移 XSR 对象
db2xprt - 格式化陷阱文件
disable_MQFunctions - 禁用 WebSphere MQ 函数
db2daslevel - 显示 DAS 级别
db2dclgn - 声明生成器
db2diag - db2diag.log 分析工具
db2drdat - DRDA 跟踪
db2drvmp - DB2 数据库驱动器映射
DB2 系统命令与配置参数大全
DB2 系统命令与配置参数大全
DB2 系统命令
dasauto - 自动启动 DB2 管理服务器
dascrt - 创建 DB2 管理服务器
dasdrop - 除去 DB2 管理服务器
dasmigr - 迁移 DB2 管理服务器
db2imigr - 迁移实例
db2inidb - 初始化镜像数据库
db2inspf - 格式化检查结果
db2isetup - 启动实例创建界面
db2iupdt - 更新实例
db2jdbcbind - DB2 JDBC 程序包绑定程序
db2exfmt - 说明表格式
db2exmig - 迁移说明表命令
db2expln - SQL 和 XQuery 说明
db2extsec - 设置 DB2 对象的许可权
db2flsn - 查找日志序号
comm_bandwidth - 通信带宽
conn_elapse - 连接耗用时间
cpuspeed - CPU 速度
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

db2diag.log文件中的标记都表示什么含义?环境:产品: db2 udb平台: Cross Platform软件版本: v6, v7, v8问题描述:db2diag.log文件中的标记都表示什么含义?解答:对db2diag.log文件的正确分析往往是排除错误的第一步, 该文件位于数据库管理器的配置参数DIAGPATH指定的目录下.下面是db2diag.log的部分摘取, 我们来分析一下它们的含义.(1) 2002-05-17-17.30.32.140000 (2) Instance:DB2MPP (3) Node:000(4) PID:2204(db2bp.exe) (5) TID:2224 (6) Appid:*LOCAL.DB2MPP.020*********(7) database_utilities (8) sqlubckp (9) Probe:26DiagData(10) 2cfc ffff2002-05-17-20.17.20.793000 Instance:DB2MPP Node:000PID:596(db2syscs.exe) TID:2176 Appid:base_sys_utilities sqleMergeSqlca Probe:20 Database:SAMPLEReceived sqlcode 1496 for request 8000001e from node number 1(11) Data Title:SQLCA PID:596 TID:2176 Node:000sqlcaid : SQLCA sqlcabc: 136 sqlcode: 1496 sqlerrml: 0sqlerrmc:sqlerrp : SQLESRSUsqlerrd : (1) 0x00000000 (2) 0x00000000 (3) 0x00000000(4) 0x00000000 (5) 0x00000000 (6) 0x00000001sqlwarn : (1) (2) (3) (4) (5) (6)(7) (8) (9) (10) (11)sqlstate:1. 表示记这条日志时的时间戳2. 实例名. 该例子中的实例名是db2mpp3. 分区号. 在单分区的数据库中该值总为04. 应用或代理的进程ID.5. 应用或代理的线程ID. 该值只有在windows平台上有效.6. 应用ID. 该值对应于LIST APPLICATIONS命令的输出.每一个应用都有唯一的应用ID.7. 组件名称(component).8. 报错或信息的功能模块名, 该功能模块从属于上面的组件.9. 功能模块的probe point. 对应于返回错误和信息的功能模块的源代码的位置.10. 诊断信息. 该例子中的db2diag.log文件来源于Windows平台, 所以dump的信息是反字节顺序的.为了把该信息转化为sqlcode, 您需要把2cfc ffff转化成为ffff fc2c同时从十六进制转化为十进制.请注意该值并不是都能转化为有效的sqlcode的.如何使用DB2 v8.2 新提供的db2diag 执行程序对db2diag.log 文件进行过滤和查找?环境产品:DB2 UDB平台:跨平台版本:v8.2问题对在DB2 v8.2 产品中提供的新的诊断辅助工具db2diag 所常用的几个功能进行简单的举例说明。

解答为了方便用户对DB2 诊断日志文件db2diag.log 提供的信息的理解,在DB2 v8.2 中增加了db2diag 这一辅助诊断工具,这里结合几个具体举例,对其常用的一些功能加以介绍。

该可执行程序:db2diag 位于以下路径:Unix 平台- $HOME/sqllib/binWindows 平台- SQLLIB\BIN1. 在多分区实例下,可查看db2diag.log 文件中指定分区的所有信息。

如:用户因第四个分区上的数据库出现问题而仅希望查看该分区信息时,可使用以下命令:db2diag -n 4输出的所有信息都将包含在“NODE: 004”中,参看下面的部分输出。

2004-10-11-19.01.57.744218-300 E7115837C971 LEVEL: EventPID : 119664 TID : 1 PROC : db2star2INSTANCE: dimi NODE : 004FUNCTION: DB2 UDB, base sys utilities, DB2StartMain, probe:911MESSAGE : ADM7513W Database manager has started.START : DB2 DBMDA TA #1 : Build Level, 124 bytes....2. 要显示db2diag.log 文件中所有关于119664 进程的信息,可利用以下命令:db2diag -pid 1196642004-10-11-19.01.56.555034-300 I7109918C313 LEVEL: EventPID : 119664 TID : 1 PROC : db2star2INSTANCE: dimi NODE : 000FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:30CHANGE : CFG DBM: "Instance_Memory" <automatic> From: "11126" To: "11126"....结合上述两种用法,以下命令将抽取db2diag.log 文件中分区0 和 4 上所有119664 进程的相关信息:db2diag -pid 119664 -n 0,43. 为显示db2diag.log 文件中包含的时间戳“2004-11-02-11.00.907665-360”之后的所有信息,可用下述命令:db2diag -time 2004-11-02-11.00.907665-3604. 另外一个较有用的选项是“-rc”。

对于以前的DB2 版本,用户经常希望了解的db2diag.log 中的常出现十六进制返回码所提示的信息,在v8.2 上,如果使用该选项便可得到关于这些十六进制返回码的解释。

如对于以下一段信息:2004-10-19-12.19.46.033037-300 I7202340C354 LEVEL: SeverePID : 139048 TID : 1 PROC : db2hmon 4INSTANCE: dimi NODE : 000FUNCTION: DB2 UDB, routine_infrastructure, sqlerFmpOneTimeInit, probe:100MESSAGE : DiagDataDA TA #1 : Hexdump, 4 bytes0x2FF225B0 : FFFF FBEE ..........为了解十六进制0xFFFF FBEE 所提示的信息,可使用下面的命令:db2diag -rc FFFFFBEE其输出为:Input ECF string 'FFFFFBEE' parsed as 0xFFFFFBEE (-1042).ERROR: ../sqz/sqlzwhatisrc.C:Input ZRC 0xFFFFFBEE (-1042) cannot be identified as a V7 or V6 ZRC value即该返回码提示的错误码为:SQL1042C,用户可使用:db2 "? sql1042"获得关于这个错误的具体解释。

5. 为显示db2diag.log 中所记录的严重错误,使用:db2diag -gi "level=severe"输出可参看例4 中提供的。

如果要得到有关该工具的更多选项的帮助信息,可使用:db2diag -h使用db2diag工具的高级选项过滤查找db2diag.log诊断日志记录内容提要db2diag.log是DB2中非常重要的诊断日志,一般出现问题后,首先就要查看db2diag.log 文件。

但是很多时候特别是在多分区数据库中,查看db2diag.log变得非常费时。

因为所有分区所有应用程序的诊断日志都会写到DB2的诊断日志中。

从DB2版本8.2开始,DB2提供了db2diag工具可以用来过滤查找特定的日志,您可以参见下面的文档获得使用db2diag 的基本方法:/cn/suppor ... DocId=1807545B21000有时候我们需要做一些更高级的过滤查询,以便帮助我们进一步诊断问题,该文章通过例子对于db2diag中的高级选项做了介绍。

正文首先简单介绍db2diag.log中的条目构成,如下所示为一条标准的db2diag.log日志条目:2005-12-26-19.09.14.702039+480 I84831569A398 LEVEL: SeverePID : 1060946 TID : 1 PROC : db2agent (XXXX) 0INSTANCE: db2inst1 NODE : 000 DB : XXXXAPPHDL : 0-222 APPID: C0A86402.OD11.03F806110349FUNCTION: DB2 UDB, relation data serv, sqlrr_fetch, probe:20RETCODE : ZRC=0x80120086=-2146303866=SQLR_PRTCLE "DRDA Protocol Error"其中上面的黑体字部分是我们的每条诊断日志的不同列标识。

其中FUNCTION包含:PRODUCT,COMPONENT,FUNCNAME,PROBE,这几个也是可以单独搜索的列标志。

利用db2diag工具的-g选项可以对每一个列标志进行搜索,下面是-g选项的说明:-g: 搜索符合搜索一系列“<列标志>=<列值>”条件的诊断日志记录,条件中间使用逗号分开。

搜索区分大小写。

-gi: 功能等同于-g,搜索不区分大小写。

-gv: 搜索不符合一系列“<列标志>=<列值>”条件的诊断日志记录,条件中间使用逗号分开。

搜索区分大小写。

-gvi:功能等同于-gv,搜索不区分大小写。

另外我们的条件表达式支持如下几种:= 全字精确匹配查询:= 部分匹配模糊查询!= 查找不符合全字精确匹配查询条件的记录!:= 查找不符合部分匹配模糊查询条件的记录^= 选择查找列中以后面的查找条件开头的记录!^= 选择查找列中不以后面的查找条件开头的记录关于高级查找功能的帮助,您可以随时通过"db2diag -h filter" 获得。

相关文档
最新文档