当前位置:文档之家› DB2常见错误信息

DB2常见错误信息

DB2常见错误信息
DB2常见错误信息

DB2数据库基础

青岛中天公司(系统集成部)

2004年8月

目录

第一章UDB概况 (1)

1.1 UDB产品家族 (1)

第二章基本关系数据库概念 (3)

2.1 数据库对象概述 (3)

第三章数据库的表空间 (8)

3.1 系统目录表空间 (8)

3.2 用户表空间 (8)

3.3 临时表空间 (8)

3.4 处理表空间 (9)

3.5 获取表空间状态 (11)

第四章DB2数据库日志机制 (12)

4.1 工作单元 (12)

4.2 事务 (12)

4.3 日志文件的使用 (12)

4.4 日志管理配置参数 (13)

4.5 日志的类型 (14)

4.6 日志文件的用途 (16)

4.7 维护日志文件 (18)

第五章DB2常用命令 (19)

5.1 管理相关命令 (19)

5.2 应用相关命令 (20)

5.3 监控相关命令 (21)

第六章数据移动工具 (23)

6.1 DB2实用工具支持的文件格式 (23)

6.2 Export工具 (24)

6.3 Import工具 (25)

6.4 Load工具 (27)

6.5 Load载入过程的各个阶段 (30)

6.6 Db2look工具 (31)

第七章数据库备份与恢复 (33)

7.1 备份-backup (33)

7.2 恢复-restore (36)

7.3 Db2move (38)

第八章控制数据访问 (40)

8.1 权限和特权 (40)

第九章DB2数据库性能调整 (44)

9.1 数据库管理器配置参数 (44)

9.2 数据库配置参数 (44)

9.3 DBM CFG、DB CFG配置对性能的影响 (44)

9.4 并行读写 (48)

9.5 其它性能考虑 (48)

第一章UDB概况

1.1UDB产品家族

UDB(Universal Database )的前身为DB2,是IBM公司开发的关系型数据库管理系统。从其诞生之日开始,DB2就定位于要为各种规模的企业提供稳定、高效的数据管理支持。可以`说,DB2是当前适用范围最广泛的数据库产品。我们对DB2产品的划分通常分为两种方法:一种方法是按其所能支持的硬件和操作系统平台进行划分,另一种方法是按其所能支持的用户规模的不同进行划分。

DB2产品几乎覆盖了当前所有流行的硬件和操作系统平台。在大型机操作系统上,有DB2 for OS/390、DB2 for MVS/ESA、DB2 for VSE 和DB2 for VM等多种产品;在由IBM 公司设计的小型机AS/400上,DB2已经嵌入在操作系统OS/400之中,成为其不可分割的一部分。DB2对UNIX操作系统的支持同样十分广泛,可以在AIX、HP-UX、Solaris、SCO-UNIX、SINIX 等多种系统上找到其相应的版本。另外,在PC操作系统上,DB2可以对Window 9x、Windows NT以及OS/2等多种操作系统提供支持。UDB 6.1还增加了对Linux操作系统的支持。以上我们所提到的只是DB2服务器所能运行的平台,DB2的客户端所能支持的平台更为广泛,除了以上提到的所有平台之外,DB2的客户端还能运行在Dos、Windows 3.x、Mac OS以及SGI公司的IRIS系统之上。最早的 DB2产品是DB2 for MVS/ESA,以后的产品设计时都延续了它的基本结构及关键算法,保障了不同系统之间的可移植性和互操作性。但是,由于不同操作系统之间存在着不小的差异,DB2系列产品还针对相应的平台进行了一定的优化,以适应操作系统的特性。

UDB产品除了能够对各种硬件和操作系统平台进行支持之外,为了适应不同用户群的需要,UDB提供了不同级别的产品,对小到个人用户,大到跨国企业的不同需求提供支持。以下是对UDB 6.1版本不同级别产品的特点介绍:

UDB卫星版:是专门为移动用户设计的小型数据库产品。适合于偶尔连接DB2控制服务器来与公司系统交换数据的单用户系统。它既能允许用户对本地数据进行各种修改,又可以接受远程卫星控制器的集中管理,减轻本地用户的管理负担。该版本只能运行在Windows平台。(该版本属于UDB 6.1版本新增版本)

UDB个人版:是专门为个人用户设计的功能完备的个人数据库产品,允许用户在本地建立数据库、更改数据、开发应用程序从本地对数据库管理系统进行存取以及通过内置的客户端对远程数据库服务器进行管理。。该版本的限制在于不能对远程应用程序提供全面支持。该版本可以运行在Windows、OS/2以及Linux平台。

UDB工作组版:适用于小型局域网的数据管理需求。具有UDB个人版的全部功能,并能够对远程应用程序提供全面支持。该版本可以运行在Windows、OS/2以及Linux平台。(UDB工作组版 5.0可以运行在UNIX平台)

UDB企业版:简称为UDB EE,适用于企业级的数据管理需求。具有UDB工作组版的全部功能,并能够利用对称多处理(SMP)技术提高系统性能。在它的程序包中,包含了DB2 Connect企业版,允许Intel平台和UNIX平台的客户端应用程序访问大型机和

AS/400上的数据库服务。UDB企业版可以运行在Windows、OS/2、Linux以及UNIX平台。

UDB企业扩展版:简称为UDB EEE,适用于大规模的企业应用。大规模的企业应用的基本要求是稳定(宕机时间短)和高效(处理速度快),UDB企业扩展版能够利用群集(cluster)和大规模并行处理(MPP)技术提高系统的稳定性和性能。

UDB丰富的产品线给用户提供了极大的选择余地。是构造企业信息系统的基石。

第二章基本关系数据库概念2.1数据库对象概述

一些数据库对象之间的关系

实例

实例(instance)也称为数据库管理器。每一个实例都是一个完整的环境。它所包含的代码能够用来建立所有其他对象、将数据放入这些对象、使用这些对象中的数据、控制对这些对象中的数据进行访问、维护这些对象中的数据等操作。

实例的start及stop直接影响到在此实例上创建的各数据库能否正常使用,所以在运行相关实例级的数据库命令时一定要考虑对其它同实例下的数据库的影响;这方面内容在后面的命令介绍部分有详细说明。

数据库

关系数据库将数据表示成表的集合。表由数目已定的列和任意数目的行组成。每个数据库都包括一组描述数据的逻辑和物理结构的系统目录表,一个包含为该数据库分配的参数值的配置文件以及一个带有正在进行的事务和可归档事务的恢复日志。

节点组

节点组是一个或多个数据库分区组成的集合。

表空间

表空间是指存储表的地方,它定义了数据库的逻辑表和与这些表相关练的数据的物理存储之间的关系。物理存储位置称为容器,它们可以是磁盘等存储设备上的一个文件,也可以是其上的一块磁盘空间。

表空间可以是一个由操作系统来系统管理的表空间(system manage space-SMS),也可以是一个由数据库管理器本身来管理的表空间(database manage space-DMS)。

2.1.1.1 系统管理表空间

SMS类型的表空间,由用户决定文件的存放位置(SMS类型的表空间只能是文件形式,不支持裸设备等空间形式),数据库管理器控制它们的名称,而操作系统的文件系统负责管理它们;数据库管理器会在表空间容器中均匀分布数据。语句:

CREATE TABLESPACE

PAGESIZE

MANAGED BY SYSTEM USING ()

注意:只要SMS表空间的任何一个容器变满,就会认为SMS表空间为满。因此,最好为所有容器分配相同的空间。具有相同尺寸的容器也可以保证数据能够在所有容器中均匀存放,提高数据库的读写性能。

2.1.1.2 数据库管理表空间

DMS类型的表空间由数据库管理器控制存储空间,数据库管理器控制着一个特殊的文件系统,用来操作与这些设备相关联的空间,表空间定义包括了属于表空间的可以存储数据的设备列表。

数据库管理器使用条纹化技术在表空间容器上均匀分布数据;与SMS表空间不同,构成DMS表空间的容器不需要具有相同的尺寸,然而要进行条纹化,如果尺寸不同,将会导致性能欠佳。因此,设备的尺寸应该和容器的尺寸相等。例句:

CREATE TABLESPACE PAGESIZE MANAGED BY DATABASE USING ()

2.1.1.3 SMS与DMS使用建议

使用SMS表空间更容易管理小规模的个人数据库,对于大规模的,不断增长的数据库,就应改使用SMS表空间作为临时表空间,而用户表空间使用具有多个容器的分离DMS表空间。这样才有利于性能的优化与提高。

2.1.1.4 总例句

CREATE

[CATALOG TABLESPACE tblspace-defn]

[USER TABLESPACE tblspace-defn]

[TEMPORARY TABLESPACE tblspace-defn] [WITH "comment-string"] ]

tblspace-defn:

MANAGED BY

{SYSTEM USING ('string' [ {,'string'} ... ] ) |}

{DATABASE USING ({FILE | DEVICE} 'string' number-of-pages [{,{FILE | DEVICE} 'string' number-of-pages} ... ] ) }

[EXTENTSIZE number-of-pages] [PREFETCHSIZE number-of-pages]

[OVERHEAD number-of-milliseconds] [TRANSFERRATE number-of-milliseconds]

关系数据库将数据表示成表的集合。表由逻辑排列的行和列数据组成。所有数据库和表数据都被存储在表空间中,表中的数据在逻辑上是相关的,且可以定义表与表之间的关系。根据数学规则和关系运算来查看和操纵数据。

视图

视图是高效率的数据呈示方法(无需维护数据)。视图不是实际的表,不需要永久性存储器。

视图可以包括它所基于的表中所有或某些列或行。

索引

索引是一组关键字,其每一个都指向一些表行。可创建唯一索引以确保索引关键字的唯一性。索引关键字是定义了索引的一个列或一些列的有序集合。使用唯一索引将确保在编入索引的列中,每个索引关键字的值都是唯一的。

模式

模式是一个标识符,如用户ID,它帮助分组表和其他数据库对象。模式可以归个人拥有,拥有者可以控制对数据以及其中的对象的存取。

模式名用作两部分对象名的第一部分。创建一个对象时,可将其分配给特定的模式。若不指定模式,则它被分配给缺省模式,缺省模式通常是创建该对象的人员的用户ID。名称的第二部分是对象名。

系统目录表

每个数据库都包括一组描述数据的逻辑和物理结构的系统目录表。DB2为每个数据库维护一大组系统目录表。这些表包含有关数据库对象(例如,用户表、视图和索引)的定

义的信息。以及用户对这些对象所拥有的权限的安全性信息。它们在数据库创建时被创建,并在常规操作期间得到更新,不能显示地创建或卸下它们,但是可以使用目录视图查询和查看它们地内容。

第三章数据库的表空间

数据库的表空间是用来将数据从逻辑上映射为物理存储位置(文件、裸设备等)的DB2数据库的一种对象,可以分布到一个或者多个物理设备上;

一般来说,创建一个应用数据库后,该数据库至少包含三个表空间:一个系统目录表空间(DB2数据库中称为syscatspace)、一个或者多个用户表空间(userspace1)、一个或者多个临时表空间(tempspace1);其中应用所占用的表空间——用户表空间是数据库的各表空间中所需容量比较大的一种表空间。

3.1系统目录表空间

系统目录表空间包含了数据库建立后所有的系统目录表。在数据库开始建立时就已经建立了该表空间(DB2数据库自动为其命名为syscatspace)。默认情况下该表空间类型为SMS,IBMCATGROUP是这个表空间的默认节点组,该表空间不能被删除。

3.2用户表空间

用户表空间包含了用户定义的所有的表及数据,当数据库建立的时候,就会建立称为USERSPACE1的表空间。默认情况下该表空间类型为SMS,IBMDEFAULTGROUP是该表空间的默认节点组。由于在数据库建立时可以指定多个用户表空间,每个用户表空间可以再细分为多个容器(container),以增加数据库的读写性能;

用户表空间的需求随着数据量的增加而增加,当用户表空间的容量不足时,数据库就会报错,提示管理员增加该表空间。

3.3临时表空间

存在两种类型的临时表空间:系统临时表空间、用户临时表空间,创建临时表时使用临时表空间。在数据建立时至少存在一个系统临时表空间,默认情况下,会在IBMTEMP -GROUP节点组中建立一个称为TEMPSPACE1的表空间,而不建立用户临时表空间。用

户临时表空间主要由用户自己显式定义。如果用户定义了多个用户临时表空间,数据库就会采用循环的方式在临时表空间中分配临时对象。如果临时表空间中没有与用户表空间相同的最大页尺寸,那么任何数据操作语言(DML)语句都会失败。

因此,应该定义一个SMS临时表空间,使其页尺寸等于主要用户表空间所使用的尺寸页,这对于典型的应用来说已经足够用。

3.4处理表空间

数据库建立后,还可以对临时表空间及用户表空间按照实际需要进行调整(创建、扩容、删除等),而系统目录表空间则不行。

建立表空间

CREATE TABLESPACE

MANAGED BY < tablespace type>

USING ()

上述语句中很大程度上都采用了默认选项,这样,创建的表空间默认用来存储用户数据。如果想要建立不同的表空间,并且使用不同的页尺寸,就应该使用下面的语句:CREATE TABLESPACE

PAGESIZE

MANAGED BY < tablespace type>

USING ()

建立临时表空间

可以建立两种类型的临时表空间:系统临时表空间或者用户临时表空间。数据库管理器使用系统临时表空间来存储临时表,或者数据库管理器执行排序或者连接这样的操作时使用的工作区域。可以使用用户临时表空间存储所声明的全局变量。

建立系统临时表空间

CREATE SYSTEM TEMPORARY TABLESPACE

MANAGED BY

USING

建立用户临时表空间

CREATE USER TEMPORARY TABLESPACE

MANAGED BY

USING

默认的节点组是IBMDEFAULTGROUP。

修改表空间

可以使用list tablespace containers或者list tablespaces这样的命令查看表空间的利用率;应该在已有的容器使用完之前增加新的容器

可以使用alter tablespace命令为已有的表空间增加新的容器,一旦数据库管理器确定了新的容器可以使用,就会自动进行重新平衡;在数据重新平衡期间,对表空间的访问不会受到限制。

增加多个容器时,应该使用一个alter语句同时增加它们,以避免多次重复平衡。

可以使用以下两种方法修改容器:

3.4.1.1 增加一个或者多个容器

语法:

ALTER TABLESPACE

ADD (DEVICE …? )

注意,device_size单位为页

3.4.1.2 改变一个或者多个容器的大小

语法:

1.RESIZE方式

ALTER TABLESPACE

RESIZE (DEVICE …? )

这种情况下,会使用给定设备的新尺寸覆盖设备的初始尺寸,表空间的内容会在新容器尺寸上进行重新平衡;因此如果需要更改多个容器的大小,应该在一个单独的语句中修改所有的容器。

2.EXTEND方式

ALTER TABLESPACE

EXTEND (DEVICE …? )

这种情况下,会根据给定设备的尺寸进行增长,表空间的内容会在容器的新尺寸上进行重新平衡;因此如果需要更改多个容器的大小,应该在一个单独的语句中修改所有的容器。

重命名表空间

语法:

RENAME TABLESPACE TO

注意:不能够对SYSCATSPACE表空间进行重新命名!!!

删除表空间

语法:

DROP TABLESPACE < tablespace_name>[ < tablespace_name>,…]

3.5获取表空间状态

语法:

db2tbst命令把十六进制的表空间状态值参数转换成表空间状态;状态值是list tablespaces命令输出的一部分。

例如:db2tbst 0x000c

输出:State=Quiesced:EXCLUSIVE

Load pending

第四章DB2数据库日志机制

在防止关键数据的丢失当中,恢复用户自己的环境十分重要。有一些工具可以帮助用户管理自己的环境和保证用户可以对自己的数据实施充分的恢复措施。

我们将讨论在关系数据库系统中的日志存档概念,因为它属于数据库的恢复功能的组成部分。日志文件是由DB2用来确保数据库完整性,即使当出现某些不可预见的问题引起用户系统瘫痪时,比如发生断电故障,也能做到这一点。要充分理解日志工作的目的,首先解释清楚工作单元(unit of work)和事务或交易(transaction)这两个概念。

4.1工作单元

为了确保数据库中数据的一致性,应用程序经常必须立即实施一些变更。类似,它必须禁止所有的变更。这就叫做工作单元(unit of work)。工作单元是应用程序进程内可恢复的操作序列。工作单元是应用程序用来确保在数据库中不引入不一致数据的基本机制。在任何时刻,应用程序进程都有一个工作单元,而应用程序进程的生存期可能涉及许多工作单元。

4.2事务

在象DB2这样的关系数据库中,工作单元被称为事务或交易(transaction)。事务是应用程序进程内的一个可恢复的SQL操作序列。对数据库的任何一次读或写都是在某次事务内完成的。

任何一个成功地与数据库相连接的应用程序都自动地启动一个事务。应用程序必须通过发出一条SQL COMMIT(委托确认)或SQL ROLLBACK(退回)语句去结束该事务。SQL 的COMMIT语句告诉数据库管理员立即对数据库实施事务中的所有数据库变动(插入、更新、删除)。SQL的ROLLBACK语句告诉数据库管理器不实施这些变动,但将受到影响的行返回到开始该事务之前的原有状态。

4.3日志文件的使用

为了确保用户数据的完整性,DB2已经实施提前写日志存档模式。提前写日志存档的基础是指:当发出删除、插入或更新数据库中某一数据的SQL调用时,所做出数据变更

首先要写到日志文件中去。当发出一条SQL委托确认命令时DB2要保证把为了重新运作(replay)所需要的日志文件都写入磁盘中。在发生断电之类的不幸事故时,日志文件可以用来把数据库退回到原来的某个一致性状态。所有被委托确认的事务都将重新再做一遍,所有非委托确认的事务都将回退到原有起点。

所有数据库都有与它们相关联的日志文件。日志文件有预先定义的长度。因此,当日志文件被填满时,日志存档过程就要在另一个日志文件中继续进行。

4.4日志管理配置参数

DB2的日志存档进程使用着一系列的参数。每当用户改变这些参数值时,用户都必须终止与数据库的连接,然后再重新建立与数据库的连接,以便使得所读出的数据库配置带有变更后的数据。

●LOGBUFSZ

日志缓冲区大小参数决定分配多少数据库共享空间用来作为缓冲区,在把日志记录写到磁盘之前暂时将它们保留在缓冲区。这一参数的值将表明4K页的数目,最大可到128个4K页

●LOGFILSIZ

这个值决定当需要一个日志文件时,需要分配的页数。这个值与LOGPRIMARY和LOGSECOND一起决定支持日志存档工作所需要的磁盘空间。它采用4K页为单位。

●LOGPRIMARY

这个值表示被分配用于支持数据库日志存档工作的主日志文件的数目。每个主日志文件的大小是LOGFILSIZ

●LOGSECOND

这个参数指定在需要时由系统创建的辅助日志文件的最大数目。当日志文件被装满时,就在需要时一次分配一个大小为LOGFILSIZ的辅助日志文件。辅助日志文件的默认数目为2。

●NEWLOGPATH

日志文件默认的子目录定义在数据库目录的子目录SQLLOGDIR中。出于恢复目的的考虑,最好把日志文件存放到与数据库文件不同的物理磁盘中去。这一参数标识日志文件

存放的新路径。要记住,在与数据库的所有连接结束并且数据库处于一致性状态之后,这一路径才能被启用。

●SOFTMAX

当数据库重新被启动时,日志控制文件用来决定需要把日志文件中的哪个记录应用于数据库。这个值是LOGFILSIZ的一个百分数,它决定是否把日志控制文件写到磁盘的次数应当比默认总次数要更多。默认规定是:每当控制日志文件被写满时,都要把它写到磁盘,即所谓的硬核查点。

●LOGRETAIN

指示是否要使用日志保留或归档日志。

●USEREXIT

设置这一值将激活归档日志和前滚(roll forward)恢复,而忽略LRETAIN参数是否

●MINCOMMIT

这一值表示:如果该值被设置成大于1的值,便试图将多个应用程序发出的委托确认进行分组。

●OVERFLOWLOGPATH

规定另一条搜索规档日志的日志路径。默认值是空值。

●NUM_ IOCLEANERS

规定数据库的异步页清理器(cleaners)的数目。

[注解]:页清理器检查缓冲区,寻找需要被写入磁盘的那些页。用这种方式,常规数据库代理能够发现缓冲区中的空白空间。

4.5日志的类型

现在我们来考查可能出现在DB2中的两类日志:

●循环日志(Circular logging)

●归档日志(Archival logging)

循环日志

用这种类型的日志,将按顺序使用各个日志文件。当保留在这类日志文件中的所有工作单元被委托确认或退回时,这些日志文件可以被重新使用。所委托确认的变更将被反映在支持数据循环日志使用两类日志文件:

●主日志文件(Primary log files)

●辅助日志文件(Second log files)库的磁盘上。

主日志文件是预先分配的,而辅助日志文件仅在需要时才分配。如果数据库管理器需要序列中的下一个日志,并且不能被重用,那么将分配一个辅助日志文件,至直主日志文件变得可供重用或者所分配辅助日志文件的数目被超出为止。一旦数据库管理器决定辅助日志文件不再需要时,辅助日志文件便被收回。当数据库激活时,分配主日志文件。

主日志文件和辅助日志文件的数目由数据库参数LOGPRIMARY和LOGSECOND来决定。

当数据库最初被创建时,循环日志方式作为默认的日志方式被激活。

配置以循环方式的数据库仅能恢复到曾经做过后备的点。对数据库进行恢复时,自从进行后备以后对数据库所做的任何工作都将丢失。由于这个原因,循环日志方式最适合用于那些只供查询的数据库。

归档日志

归档日志(archival logging)是这样一种日志管理技术,其中的日志文件处于非活动状态时便将它们做归档处理。

3.活动(Active)

这些文件包含与尚未委托确认(或退回)工作的事务相关的信息。它们还包括已经被委托确认但它们的变更还没有写回到数据库文件中的事务信息。

4.联机归档(On_line Archival)

这些文件包含有已经完成不再需要崩溃恢复保护的事务有关的信息。它们叫做联机(on_ line)是因为它们驻留在与活动日志文件相同的子目录中。

5.脱机归档(Off-line Archival)

这些文件已经被从活动的日志文件子目录传送出。传送这些文件的方法可能是一个手工过程,比如,通过user exit调用的手工过程。只要简单地通过把归档日志文件传递至另

一个目录,把它们存储到磁带或其它某种介质上,就可以把归档日志文件置为“脱机的”(off-line)。

两个配置参数允许用户去配置进行归档日志的数据库:

●LOGRETAIN

●USEREXIT

当LOGRETAIN数据库配置参数被启动时,在日志文件变为活动状态时,不删除日志文件,当user exit这一数据库配置参数被激活时,每当日志文件不再需要用于日志写时,数据库管理器将调用叫做db2uexit的程序。数据库名和日志文件的路径被传送给该程序。

归档日志方式不是默认的日志工作方式,但它是允许用户执行前滚(roll forward)恢复的唯一方法。

4.6日志文件的用途

日志文件用于以下情形:

●Rollback(退回)

●Crash Recovery(事故恢复)

●Roll Forward Recovery(前滚恢复)

ROLLBACK命令使用日志文件去终止工作单元,并且退还由工作单元所做出的数据库变更。

事故恢复

如果用户的系统经历了磁盘故障、停电或其它类型的事故,就需要事故恢复去将数据库返回到一致的可用状态。事故恢复由两个阶段组成。第一个阶段对数据库重新应用所有的事务,不管这些事务是否被委托确认还是没有被委托确认。当到达活动日志文件尾部,这一阶段便告结束。

第二个阶段回退所有非委托确认的事务。设置事故恢复的数据库配置参数是AUTORESTART。按照默认方式,该参数被设置为ON。

前滚恢复

每当恢复表空间备份或数据库备份时,就调用ROLLFORWARD DATABASE命令。前滚(roll forward)应用记录到数据库日志文件中的事务。每当读或写磁盘发生一个I/O 错误时,页所驻留的空间便失效,并且被置于“前滚挂起”(roll forward pending)状态。如果该挂起状态不能用表空间的前滚去清理,那么恢复之后需要有前滚操作。

下面是ROLLFORWARD DATABASE命令的语法格式:

对图6.5中所示的参数的描述在下面给出:

·database- alias(数据库别名)

数据库名将前滚。

·username(用户名)

授权的用户标识。在该标识下,对数据库进行前滚。

·password(口令)

对所应用的用户名的口令。

·TO isotime

这是一个时间点,所有被委托确认的事务对该点进行前滚。这个参数仅对完全数据库

恢复有效。

·TO END OF LOGS

这一参数使得前滚过程去处理它在当前日志路径目录中所能够找到的所有日志文件。

·STOP | AND STOP

这表明用户已经处理过所有的日志文件并且用户想要建立数据库的一致性。

·QUERY STAUS

相关主题
文本预览
相关文档 最新文档