DB2最新维护手册文档格式.docx

上传人:b****6 文档编号:21257185 上传时间:2023-01-28 格式:DOCX 页数:33 大小:41.08KB
下载 相关 举报
DB2最新维护手册文档格式.docx_第1页
第1页 / 共33页
DB2最新维护手册文档格式.docx_第2页
第2页 / 共33页
DB2最新维护手册文档格式.docx_第3页
第3页 / 共33页
DB2最新维护手册文档格式.docx_第4页
第4页 / 共33页
DB2最新维护手册文档格式.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

DB2最新维护手册文档格式.docx

《DB2最新维护手册文档格式.docx》由会员分享,可在线阅读,更多相关《DB2最新维护手册文档格式.docx(33页珍藏版)》请在冰豆网上搜索。

DB2最新维护手册文档格式.docx

7、不要随便执行chown(chmod)–R(UNIX/Linux)30

8、在归档日志模式下使用LOAD记得加NONRECOVERABLE参数31

六、附:

以脱机方式重组表31

七、附:

索引重组32

八、收集和更新统计信息的准则35

九、附:

使用CLP捕获数据库运行状况快照39

十、IBMDB2日常维护汇总41

十一、DB2常用命令集51

一、

DB2入门-数据库实例

在本文中,我使用DB2来指代DB2通用数据库V8.1forUNIX、Linux和Windows。

在DB2中,实例提供了独立的环境,可在其中创建数据库对象并针对这些对象运行应用程序。

由于这些环境是独立的,所以两个或更多的单独实例的对象可以有相同的名称。

在图1中,有一个名为“MYDB2”的数据库,它与实例“DB2”相关;

还有一个同名的数据库,但它与实例“MyInst”相关。

实例允许用户具有用于生产、测试和开发目的的不同环境。

以下是一些与实例相关的命令:

通过从命令行处理器(CLP)发出下列命令来显式地创建实例:

db2icrt<

instancename>

在Windows平台上首次安装DB2时,缺省情况下会创建一个称为“DB2”的实例。

在UNIX环境中,如果您选择创建实例,那么缺省的实例名称为“db2inst1”。

要删除实例,请使用这条命令:

db2idrop<

要启动实例,请使用这条命令:

 

db2start

要停止实例,请使用这条命令:

db2stop

创建了实例后,就会生成到DB2代码的链接。

对于图1中的示例而言,已创建了实例“DB2”和实例“MyInst”,两者都链接至同一段DB2代码。

V8之前,曾有两种实例类型:

“DB2”类型和“DAS”类型。

V8中已经除去了DAS类型的实例;

它的功能已经被作为服务器进程集成到产品中了。

和许多其它关系数据库管理系统(RDBMS)一样,DB2使用不同的机制来管理、监视和控制DB2系统的行为。

这些机制包括:

环境变量

环境变量是在操作系统级别上定义的变量。

例如,在Windows2000®

平台中,您可以为一个变量创建新的项,或者通过选择ControlPanel-->

System-->

AdvancedTab-->

EnvironmentVariables来编辑现有变量的值。

在UNIX中,您通常可以将安装了DB2之后所提供的脚本db2profile(Bourne或Kornshell)或db2cshrc(Cshell)添加到.login或.profileUNIX初始化文件中。

db2profile/db2cshrc文件包含了“export”UNIX命令,这些命令能确保每次调用shell时就传递一个UNIX环境变量。

最常使用的DB2环境变量是“DB2INSTANCE”变量。

该环境变量允许您指定当前活动实例,所有命令都将应用于该实例。

对于本例而言,如果将DB2INSTANCE设置成“MyInst”,那么发出命令“createdatabasemydb”会创建出与实例“MyInst”相关的数据库。

但是如果您想创建与实例“DB2”相关的该数据库,那么首先您必须将DB2INSTANCE变量的值更改成“DB2”。

使用控制面板(在Windows中)/db2profile(在UNIX中)来设置环境变量的值,将保证您下次打开窗口/会话时该值不变;

但是,如果您想在给定的窗口/会话中临时更改该值,那么在Windows中您可以使用操作系统的“set”命令,或者在UNIX中使用“export”命令。

例如,在Windows平台中,下面这个命令:

setDB2INSTANCE=DB2

会将环境变量DB2INSTANCE的值设置成“DB2”。

使用set命令时常犯的错误是在等号(=)前后留有空格。

绝对不能有空格!

要查看该变量的当前设置,您可以使用下面三个方法中的任何一个:

echo%DB2INSTANCE% 

(Windowsonly)

setDB2INSTANCE

db2getinstance

要获取系统中您可以执行的所有可用实例的列表,请发出下面这个命令:

db2ilist

DB2概要注册表

在Windows平台上使用DB2时,单词“注册表(Registry)”的使用往往会造成混淆。

DB2概要注册表(ProfileRegistry)变量与Windows注册表变量没有任何关系。

过去,对某些环境变量进行更改时,会要求用户重新引导机器。

如果所有DB2变量都已被定义成环境变量,那么对变量值进行更改将会很麻烦。

因此,当时决定将大多数DB2变量组成一个专门的DB2注册表,在其中进行更改无需重新引导机器。

DB2概要注册表分成四类;

但是下面这两个是最常用的:

DB2全局级概要注册表(Global-LevelProfileRegistry)

DB2实例级概要注册表(Instance-LevelProfileRegistry)

两者的主要区别(您从它们的名称就可以看出)是变量适用的级别。

全局级概要注册表变量的值适用于所有实例。

因此,可以从图中看到,该注册表画在了两个实例框的外面。

实例级概要注册表变量的值适用于特定的实例。

因此,您可以看到图中那两个实例每个内部都有单独的“Instance-LevelProfileRegistry”框。

要查看所设置的当前注册表变量,请从CLP发出下面这个命令:

db2set-all

您可能会得到类似下面这样的输出:

[i]DB2INSTPROF=C:

\PROGRAMFILES\SQLLIB

[g]DB2SYSTEM=RAULCHONG

正如您可能已经猜测到的那样,[i]表明该变量是在实例级上定义的,而[g]表明它是在全局级上定义的。

以下是一些与变量相关的命令:

要查看可以在DB2中进行定义的所有注册表变量,请使用这个命令:

db2set-lr

要在全局级上设置特定变量(在这个示例中为DB2INSTPROF)的值,请使用:

db2setDB2INSTPROF="

C:

\PROGRAMFILES\SQLLIB"

-g

要在实例级上为实例“MyInst”设置变量,请使用:

\MYFILES\SQLLIB"

-iMyInst

请注意上面的示例,在两个级别(实例级和全局级)上设置了同一个变量。

当注册表变量在不同级别上进行定义时,DB2总是会选择最低级别的值;

在本例中,它将选择实例级的值。

db2set命令和前一节中的set命令一样,等号(=)前后不该留有空格。

某些注册表变量为了使更改生效,要求您停止和启动实例(db2stop/db2start)。

另一些注册表变量则没有这个需求。

为了安全起见,建议您在对注册表变量作了更改后总是停止和启动实例。

配置参数

配置参数是在两个不同的级别(实例级和数据库级)上定义的。

每个级别上的变量都是不同的(不象注册表变量那样可以在不同级别上定义相同的变量)。

在实例级上,变量被存储在数据库管理器配置文件(dbmcfg)中;

对这些变量所作的更改会影响与该实例相关的“所有”数据库,这就是图中显示了dbmcfg框(每个实例定义了一个),并且该框都显示在数据库框外面的原因。

以下是一些与配置参数相关的命令:

要从CLP查看dbmcfg的内容,请发出下面这个命令:

db2getdbmcfg

要更新特定变量的值,请发出下面这个命令:

db2updatedbmcfgusing<

parameter>

<

value>

例如:

db2updatedbmcfgusingINTRA_PARALLELYES

V8之前,对“所有”dbmcfg变量所作的更改都要求您停止和启动实例(db2stop/db2start)。

现在,V8中有大约40%的参数是“可联机配置的”参数;

也就是说,不再需要停止和启动实例了。

请参考“DB2V8管理指南(DB2V8AdministrationGuide)”以获取更多详细信息。

在数据库级别上,变量被存储在数据库配置文件(dbcfg)中;

对这些变量所作的更改会影响特定的数据库。

从图1中,您可以看到每个定义的数据库内部都有一个dbcfg框。

要查看dbcfg的内容,请从CLP发出下面这个命令:

db2getdbcfgfor<

dbname>

例如:

db2getdbcfgformydb1

db2updatedbcfgfor<

using<

db2updatedbcfgformydb1usingMINCOMMIT3

V8之前,对“所有”dbcfg变量进行更改都要求您断开与该数据库的所有连接;

然后,在进行第一个新连接时,这些更改将生效。

V8中有大约50%的参数可以进行联机配置;

也就是说,无需为了使更改生效而断开到数据库的所有连接。

在DB2中,目录是存储有关数据库及其连接信息的二进制文件。

DB2中有四个如下所描述的主目录。

还包括了相应的建立连接的命令;

但是,许多用户发现客户机配置助手GUI工具(ClientConfigurationAssistantGUITool)非常便于建立连通性。

系统数据库目录(或系统db目录)

系统数据库目录是主要的“目录(tableofcontents)”,它包含了有关可以从您的DB2系统进行连接的所有数据库的信息。

正如您可以从图1看到的那样,系统db目录是在实例级上进行存储的;

因此,如果您打算删除一个实例,那么您应当考虑备份其内容。

要列出系统db目录的内容,请从CLP发出下面这个命令:

db2listdbdirectory

该命令输出中的任何项都包含单词“indirect”,这意味着:

该项适用于本地数据库(即,驻留在您当前正在使用的机器上的数据库)。

该项还会指向由“Databasedrive”项(在Windows中)或“Localdatabasedirectory”项(在UNIX中)所指示的本地数据库目录。

任何包含单词“Remote”的项都意味着:

该项适用于远程数据库(即,驻留在其它机器上而非您当前正在使用的机器上的数据库)。

该项还会指向由“Nodename”项所指示的节点目录项。

要将信息输入系统db目录,您需要使用catalog命令:

db2catalogdb<

db_name>

as<

alias>

atnode 

nodename>

db2catalogdb 

mydb 

asyourdb 

mynode

节点名是指向节点目录中某一项的指针。

在发出这条命令之前该项必须已经存在。

通常只有在将信息添加到远程数据库的系统db目录时才使用catalog命令。

对于本地数据库来说,在用createdatabase命令创建数据库之后就自动创建Catalog项。

本地数据库目录(或本地db目录)

本地数据库目录包含了有关本地数据库(即,驻留在您目前正在使用的机器上的数据库)的信息。

正如您可以从图1中看到的那样,本地数据库目录驻留在数据库结构内部。

注意从该图还可以看到没有专门的命令用于将信息输入到该目录中。

当您用createdatabase命令创建数据库时,在该目录中会添加一项。

要列出本地数据库目录的内容,请发出以下命令:

db2listdbdirectoryon<

path>

其中,可以从系统db目录相应项中的“Databasedrive”项(Windows中)或“Localdatabasedirectory”项(UNIX中)获取<

节点目录

节点目录用于存储远程数据库的所有连通性信息。

V8仅支持TCPIP协议;

因此,该目录中的大多数项将显示TCPIP信息,比如机器(其中包含了您想连接的数据库)的主机名或IP地址,还有相关的DB2实例的端口号。

下面是一些与节点目录相关的命令:

要列出节点目录的内容,请从CLP发出下面这个命令:

db2listnodedirectory

要将信息输入节点目录,请从CLP发出catalog命令:

db2 

catalogtcpipnode<

node_name>

remote<

hostnameorIP_address>

server<

port_nameorport_number>

catalogtcpipnodemynode

remote9.26.138.35

server60000

要想得到您想要连接的远程实例的端口号,可以查看该实例的dbmcfg中的svcename参数来实现。

该值通常对应于TCP/IPservices文件中的某一项。

DCS目录

DCS目录包含了通常驻留在zSeries™(S/390®

)或iSeries™(AS/400®

)机器上的主机数据库的连通性信息。

您需要安装DB2Connect软件。

下面是一些命令:

要列出DCS目录的内容,请从CLP发出下面这个命令:

db2listdcsdirectory

要将信息输入DCS目录,请从CLP发出catalog命令:

db2catalogdcsdbas<

locationname>

db2catalogdcsdbasdb1g

数据库是与实例相关的封闭且独立的单元。

由于这个独立性,所以两个或更多的数据库的对象可以有相同的名称。

例如,图1显示了一个名为“MyTablespace1”的表空间,它位于与实例“DB2”相关的数据库“MYDB1”内部。

还有一个同名的表空间,它位于也与实例“DB2”相关的数据库“MYDB2”内部。

由于数据库是封闭单元,所以您不能执行涉及了两个不同数据库表的查询(除非您使用InformationIntegrator(II)/RelationalConnect,这已经超出本文的讨论范畴)。

例如,涉及数据库“MYDB1”中的“Table1”和数据库“MYDB2”中的“TableZ”的查询是不允许的。

数据库是用命令createdatabase创建的。

请注意,这被认为是一个命令,而非SQL语句。

当您创建数据库、表空间、日志和缓冲池时,会自动地创建配置文件,这就是完成该命令需要花费几秒钟的原因。

表空间是用作逻辑表和物理容器之间中间层的逻辑对象。

创建表空间时,您可以将它与特定的缓冲池(数据库高速缓存)以及特定的容器进行关联。

容器是物理存储数据的地方,可以分成文件、目录和原始设备等几类。

Catalog(SYSCATSPACE)、系统临时空间(TEMPSPACE1)和用户空间(USERSPACE1)都是表空间,并且都会在创建数据库时自动创建。

Catalog和系统临时空间都可以看作是系统结构,因为它们是数据库的正常操作所必需的。

Catalog包含了元数据(有关数据的数据)。

一些其它RDBMS把这个结构称作“数据字典”。

不要把这一节的术语“Catalog”和早先提到的catalog命令混淆起来;

它们毫无关系。

系统临时表空间是数据库管理器执行操作(比如连接和排序)的工作区。

至少必须有一个系统临时表空间。

缺省情况下会创建USERSPACE1表空间,但是可以删除它。

它是用来存储用户表的缺省位置。

表是由行和列组成的无序的数据记录集。

索引是与表相关的有序指针集,用于性能目的并确保唯一性。

视频、音频和扫描文档等可以作为大对象(LOB)存储在数据库中。

表、索引和LOB驻留在表空间中。

日志是用于恢复目的的文件。

日志记录了对数据库进行的每个操作。

万一发生故障,在将数据库恢复到某个一致的点方面,日志就显得至关重要了。

缓冲池是一块内存区域,所有索引和数据页(除了LOB)都必须有序地经过该区域,从而进行处理。

它是数据库管理器所使用的主要高速缓存。

在数据库性能问题方面,缓冲池是进行调优的最重要的对象。

案例研究

既然您已经熟悉了DB2环境,那么让我们通过简单的案例研究来回顾一下本文中提到的所有概念:

DB2数据库管理员(DBA)由于突发的个人原因离开了公司,经理要您负责所有DB2系统。

这是您担任新DB2DBA的第一天,因而您想熟悉系统。

您登录到安装了DB2的开发机器(Windows2000),并打开CLP窗口。

下面是您要进行的步骤:

1. 

首先,您想要知道该机器中有多少实例:

db2ilist

2. 

然后,您想要知道当前哪个实例是活动的:

db2getinstance

3. 

用db2ilist命令,您发现该机器上定义了两个实例-实例“DB2”和实例“MyInst”。

用db2getinstance命令,您发现“DB2”实例是当前的活动实例。

4. 

现在您想要列出“MyInst”实例中的数据库。

由于这个实例不是当前的活动实例,所以您首先得在当前CLP窗口中临时切换到该实例:

setDB2INSTANCE=MyInst

5. 

您再次发出db2getinstance,以查看MyInst现在是否是当前实例,然后为列出该实例中定义的数据库,请发出以下命令:

db2listdbdirectory

6. 

该命令显示出该实例中只有一个数据库(MYDB2)。

您想试着创建一个新的数据库(您随后将删除它),为此您执行:

db2createdatabasetemporal

7. 

数据库的创建需要花些时间,因为在缺省情况下会在数据库内部创建几个对象。

发出另一个db2listdbdirectory命令将会显示两个数据库:

“MYDB2”和“temporal”。

8. 

连接至“MYDB2”数据库(db2connecttomydb2),并查看该数据库中有多少表(db2listtables)。

您还可以查看定义了多少表空间(db2listtablespaces)。

午餐时间到了,因此您决定把某些东西复原。

首先,您决定删除临时数据库。

当三秒钟掉电引起机器自动重新引导时,您正处于输入命令的过程中。

您并不担心DB2数据库状态,因为您知道DB2崩溃恢复会确保其前后一致;

因此您在重新引导之后打开新的CLP窗口,接下来删除该数据库。

db2idropMyInst

啊呀!

出错了,您使用了错误的命令并删除了整个MyInst实例而不只是删除了数据库“temporal”。

您是否因此丢失了与实例“MyInst”相关的数据库“MYDB2”和“temporal”?

查看图1,您可能会觉得是丢失了;

但是,情况并非如此。

删除实例时,您并未删除与之相关的数据库。

实例为您提供了链接DB2代码的环境,以便这些代码依据用户数据使用实例。

数据库被“关联”到实例。

但是安装DB2新版本时,您通常会将实例“升级”成新的代码版本;

而数据库保持不变。

既然您已经镇定下来,知道并未丢失数据库,那么该开始思考db2idrop命令的工作原理。

通常,如果您的实例是活动的,那么该命令会给您一个警告。

然后您意识到重新引导机器后,实例“MyInst”并未自动启动,而“DB2”实例已经被配置成在引导机器后自动启动。

还有,打开新的CLP窗口时,db2instance环境变量的值被设置成“DB2”而不是“MyInst”,假设“DB2”是在机器的控制面板中为该环境变量指定的值。

既然您意识到了这一点,那么您该继续努力使一切恢复原样:

首先,您需要再次创建实例MyInst:

db2icrtMyInst

现在,切换到该实例(setDB2INSTANCE=MyInst)。

如果发出listdbdirectory命令,您会得到一个指出系统db目录不存在的错误。

如果看一下图1,您会明白:

第一次删除实例时,所有实例范围内的配置文件和目录也都被删掉了。

因此,实例级概要注册表、dbmcfg、系统db目录、节点目录和dcs目录都不见了。

创建实例时,也创建了带有缺省值的dbmcfg和实例级注册表。

庆幸的是,前任DBA存储了所有这些文件的内容备份。

他发出类似于下面这样的命令:

db2getdbmcfg>

dbmcfg.bk

db2set-all>

db2set.bk

db2listdbdirectory>

systemdbdir.bk

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1