计算机DB2数据库管理手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库管理
本章主要介绍数据库的管理。首先,我们简单介绍数据库管理的基本概念,然后,对数据库的日常维护工作逐一作出说明。此后,从建立实例开始,介绍了如何使用我们开发的SHELL程序建立数据库等高级管理方法,并介绍了如何使用“控制中心”来管理数据库。最后附上SHELL文件的列表说明。
数据库管理概述
作为通常在后台运行的核心系统,数据库性能的好坏,将直接影响整个系统的性能甚至可用性。所以,数据库管理是整个系统管理的关键之一。
DB2是IBM公司的优秀产品,其内部对数据库的管理是通过:实例、节点组、数据库、表空间、表(及视图等)来进行的。
数据库管理程序(有时称为实例)是管理数据的 DB2 代码。它控制可对数据执行的操作,并管理分配给它的系统资源。每一个实例都是一个完整的环境。它包含为一个给定的并行数据库系统定义的所有数据库分区。一个实例有它自己的数据库(其他实例不能存取它),并且它全部的数据库分区共享相同的系统目录。它也有独立于同一机器上的其他实例的单独的安全性。
节点组是一个或多个数据库分区组成的集合。当您想为数据库创建表时,首先创建将存储表空间的节点组,然后创建将存储表的表空间。有关节点组的更多信息,参见"节点组和数据分区"。有关数据库分区的定义,参见"DB2 并行性概念概述"。
一个数据库由称为表空间的部件组成。表空间的定义和属性记录在数据库系统编目中。一旦创建了一个表空间,您就可以在此表空间中创建表。会给一个表空间分配一个容器。容器是物理存储器的一种分配形式(如文件或设备)。表空间驻留在节点组中。
一个表由逻辑地按行和列排列的数据组成。表中的数据在逻辑上是相关的,且可以定义表与表之间的关系。根据称为关系的数学规则和操作来察看和操纵数据。表数据通过 SQL 存取, SQL 是一种标准化语言,用于定义和操纵一个关系数据库中的数据。所有数据库和表数据都被指定到表空间。
应用程序或用户使用查询,以从数据库检索数据。该查询使用“结构化查询语言”(SQL) 来创建下列格式的语句 SELECT
图 1举例说明刚才描述的对象之间的关系。它也举例说明表、索引和长数据存储在表空间中的情况。
数据库日常管理说明
由于在整个系统中,数据库是后台运行的部分,其日常管理很少,主要有:启动停止。
启动:
每次开机后数据库会自动启动。如果需要人为启动,则
以实例拥有者(这里是ccdb)用户身份登录
命令:db2start; db2admin start
停止:
以实例拥有者(这里是ccdb)用户身份登录
命令:LANG=zh_CN; db2stop; db2admin stop
高级管理方法
为数据库分配硬盘空间和卷组
在建库之前,首先保证已建立datavg卷组(由root建立),并分配了逻辑卷。
F50有两个VG:rootvg(HDISK1)和datavg(HDISK0、HDISK2)。
DB2系统安装在rootvg上(HDISK1),其它信息则在datavg上;
系统表、LOG为文件系统,用户表数据、用户表INDEX则为设备。
所有这些都放在“/dev”目录下。
具体名称及划分情况如下表:
数据库空间划分表
文件/设备信息类型名称LV名大小(M)目录所在硬盘
文件LOG(镜像)db2log lv_db2log512/db2log Hdisk0
要实现节点间通信,需要配置服务端口。
对于一些管理任务,数据库管理服务器必须建立与所有节点的通信。为此,必须在 tcp_services_file 中为参与此实例的每个主机定义一个命名的 TCP 端口。
例如,定义的 db2inst 包括两个主机:hostA 和 hostB。正如"环境示例"中所指定,在两个主机上不使用端口16000。因此,必须将如下行插入到 hostA 和 hostB 的 tcp_services_file 中。
db2ccmsrv 16000/tcp
操作:为ccdb配置服务端口(如果50000或50001已经被占用,则换用其他端口)
在/etc/services文件中加入两条:
db2cdb2inst1 50000/tcp # Connection port for DB2 instance ccdb
db2idb2inst1 50001/tcp # Interrupt port for DB2 instance ccdb
操作者:root。
创建实例
然后,创建实例:
使用 db2icrt 命令来创建附加实例,输入:
DB2DIR/instance/db2icrt -u FencedID instance_name
其中 instance_name 是最多八个字符的字母数字字符串,且其中DB2DIR= /usr/lpp/db2_05_00
db2icrt命令的语法如下:
db2crt [-h|-] [-d] [-a AuthType] [-u FencedID]
[-p PortName] [-s InstType] InstName
具体说明请参见《快速入门》一书。
操作:这里,我们的使用是:
db2crt -u db2fenc1 -p db2cdb2inst1 ccdb
操作者:root。
其中,db2cdb2inst1是在/etc/services文件中定义的通信端口。
空间管理
总共使用的空间有:
一个索引表空间(设备)
一个系统编目表空间(文件系统)
一个临时表空间(文件系统)
一个数据表空间存放客户信息数据(设备)
一个数据表空间存放操作流水数据(设备)
一个表空间存放各种编码表(文件系统)
系统空间管理
在缺省情况下,用户表、临时表和系统目录表分属于独立的表空间。他们在缺省驱动器里创建。
空间的分配有如下几个方面:
用户空间(用于存储将包含数据的表):user tablespace
我们使用:/db2sms/usrts
系统目录表(如"系统目录表"所述):catalog tablespace
我们使用:/db2sms/systs
临时空间(诸如排序或重新组织表、创建索引和连接表这样的操作需要临时空间):temporary
tablespace
我们使用:/db2sms/tmp4k
操作:现在,在/db2sms下创建目录 usrts、systs、tmp4k。
cd /db2sms
mkdir usrts
mkdir systs