作者:empty 出版社:empty |
第一章 数据库管理
本章主要介绍数据库的管理。首先,我们简单介绍数据库管理的基本概念,然后,对数据库的日常维护工作逐一作出说明。此后,从建立实例开始,介绍了如何使用我们开发的SHELL程序建立数据库等高级管理方法,并介绍了如何使用“控制中心”来管理数据库。最后附上SHELL文件的列表说明。
1.1 数据库管理概述
作为通常在后台运行的核心系统,数据库性能的好坏,将直接影响整个系统的性能甚至可用性。所以,数据库管理是整个系统管理的关键之一。
DB2是IBM公司的优秀产品,其内部对数据库的管理是通过:实例、节点组、数据库、表空间、表(及视图等)来进行的。
数据库管理程序 (有时称为实例)是管理数据的 DB2 代码。它控制可对数据执行的操作,并管理分配给它的系统资源。每一个实例都是一个完整的环境。它包含为一个给定的并行数据库系统定义的所有数据库分区。一个实例有它自己的数据库(其他实例不能存取它),并且它全部的数据库分区共享相同的系统目录。它也有独立于同一机器上的其他实例的单独的安全性。
节点组是一个或多个数据库分区组成的集合。 当您想为数据库创建表时,首先创建将存储表空间的节点组,然后创建将存储表的表空间。有关节点组的更多信息,参见 节点组和数据分区 。 有关数据库分区的定义,参见 DB2 并行性概念概述 。
一个数据库由称为表空间的部件组成。表空间的定义和属性记录在数据库系统编目中。 一旦创建了一个表空间,您就可以在此表空间中创建表。会给一个表空间分配一个容器。 容器是物理存储器的一种分配形式(如文件或设备)。表空间驻留在节点组中。
一个表由逻辑地按行和列排列的数据组成。表中的数据在逻辑上是相关的,且可以定义表与表之间的关系。根据称为关系的数学规则和操作来察看和操纵数据。表数据通过 SQL 存取, SQL 是一种标准化语言,用于定义和操纵一个关系数据库中的数据。所有数据库和表数据都被指定到表空间。
应用程序或用户使用查询,以从数据库检索数据。该查询使用“结构化查询语言”(SQL) 来创建下列格式的语句
SELECT data_name> FROM table_name>
图 1举例说明刚才描述的对象之间的关系。它也举例说明表、索引和长数据存储在表空间中的情况。
1.2 数据库日常管理说明
由于在整个系统中,数据库是后台运行的部分,其日常管理很少,主要有:启动停止。
启动:
每次开机后数据库会自动启动。如果需要人为启动,则
以实例拥有者(这里是ccdb)用户身份登录
命令:db2start; db2admin start
停止:
以实例拥有者(这里是ccdb)用户身份登录
命令:LANG=zh_CN; db2stop; db2admin stop
1.3 高级管理方法
1.3.1 为数据库分配硬盘空间和卷组
在建库之前,首先保证已建立datavg卷组(由root建立),并分配了逻辑卷。
F50有两个VG:rootvg(HDISK1)和datavg(HDISK0、HDISK2)。
DB2系统安装在rootvg上(HDISK1),其它信息则在datavg上;
系统表、LOG为文件系统,用户表数据、用户表INDEX则为设备。
所有这些都放在“/dev”目录下。
具体名称及划分情况如下表:
数据库空间划分表
文件/设备信息类型名称LV名大小(M)目录所在硬盘
文件LOG(镜像)db2loglv_db2log512/db2logHdisk0
系统编目表、临时表、编码表、XPRESS表db2smslv_ db2sms512/db2smsHdisk0
设备INDEXrlv_index1512(无)Hdisk2
rlv_index2512Hdisk2
rlv_index3512Hdisk2
DATArlv_dbdata1512Hdisk0
rlv_dbdata2512Hdisk0
rlv_dbdata3512Hdisk0
rlv_dbdata4512Hdisk0
rlv_dbdata5512Hdisk0
rlv_dbdata6512Hdisk0
1.3.2 创建用户组和用户
在 UNIX 平台上,用户名和组名必须小写。
1.3.2.1 创建用户组
由root创建用户组如下:
组名含义用途
ccdbadm系统管理组SYSADM 特权是 DB2 中可用的能力最强的一组特权
db2fadm1受保护组为受保护的“用户定义函数”(UDF) 和存储过程创建的一个组
ccadmgrp呼叫中心管理模块组为“管理”界面提供
cccagrpCSR管理组为CSR的管理提供
cccsrgrpCSR组为CSR提供
ccfaxgrpFAX服务组为FAX服务器上用户提供
ccivrgrpIVR组为IVR提供
ccrepgrp前台报表组为前台报表提供
ccintgrp接口组为主机接口、MQ、CIF接口等提供
ccuregrp后台报表组为后台报表提供
1.3.2.2 创建用户
由root创建用户如下:
用户ID所属主组用途
ccdbccdbadm实例拥有者,拥有对实例、ccdb数据库的所有权利
db2fenc1db2fadm1为受保护的“用户定义函数”(UDF) 和存储过程创建
ccadmccadmgrp为“管理”界面提供
cccsradcccagrp为CSR的管理提供
cccsrcccsrgrp为CSR提供
ccfaxccfaxgrp为FAX服务器上用户提供
ccivrccivrgrp为IVR提供
ccrepccrepgrp为前台报表提供
ccintfccintgrp为主机接口、MQ、CIF接口等提供
ccureptccuregrp为后台报表提供
1.3.3 配置服务端口
要实现节点间通信,需要配置服务端口。
对于一些管理任务,数据库管理服务器必须建立与所有节点的通信。为此,必须在 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。
1.3.4 创建实例
然后,创建实例:
使用 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文件中定义的通信端口。
1.3.5 空间管理
总共使用的空间有:
一个索引表空间(设备)
一个系统编目表空间(文件系统)
一个临时表空间(文件系统)
一个数据表空间存放客户信息数据(设备)
一个数据表空间存放操作流水数据(设备)
一个表空间存放各种编码表(文件系统)
1.3.5.1 系统空间管理
在缺省情况下,用户表、临时表和系统目录表分属于独立的表空间。他们在缺省驱动器里创建。
空间的分配有如下几个方面:
用户空间(用于存储将包含数据的表) :user tablespace
我们使用:/db2sms/usrts
系统目录表(如 系统目录表 所述) :catalog tablespace
我们使用:/db2sms/systs
临时空间(诸如排序或重新组织表、创建索引和连接表这样的操作需要临时空间):temporary tablespace
我们使用:/db2sms/tmp4k
操作:现在,在/db2sms下创建目录 usrts、systs、tmp4k。
cd /db2sms
mkdir usrts
mkdir systs
mkdir tmp4k
操作者:实例拥有者ccdb。
1.3.5.2 创建表空间
在一个数据库内创建表空间,会将容器分配到表空间,并在数据库系统编目中记录它的定义和属性。然后我们就可以在此表空间内创建表。
根据系统不同数据的特点,我们划分了四个表空间:
index_space:目的是存放所有表的索引;
ci_cc_space:目的是存放CIF数据;
process_space:目的是存放各流水、报表等动态数据;
st_tab_space:目的是存放静态编码和XPRESS系统原有表的数据。
建立表空间的例子为
create regular tablespace index_space pagesize 4096 managed by database using (device'/dev/rlv_index1' 128000, device'/dev/rlv_index2' 128000, device'/dev/rlv_index3' 128000) extentsize 64 prefetchsize 32;
关于db2命令行参数的使用,可参阅《Command Reference》一书。
操作:为了建立表空间,我们只需要运行SHELL文件creSpaceAll.sql如下:
db2 -t -fcreSpaceAll.sql –zcreSpaceAll.log
操作者:实例拥有者ccdb。
1.3.6 建库
1.3.6.1 建立基本数据库
建立数据库xpress,使用别名为cti_xdb,指定语言为中文:CN, GBK。使用的系统空间为上面所说三个目录。使用的SHELL程序为:creDbAll.sql。
操作:
db2 -t -f creDbAll.sql –z creDbAll.sql
操作者:实例拥有者ccdb。
1.3.6.2 建立表和索引
建表分为两个模块:XPRESS原有模块和CALL CENTER新模块。所有的建表功能都封装在两个SHELL 程序(creTabCC.sql,reTabXPE.sql)中。如果系统需要作调整,则只需调整这两个模块即可。SHELL中,指出表名、各字段定义、注解以及主键和主索引,同时定义了使用的表空间。
第一章数据库管理2
1.1数据库管理概述2
1.2数据库日常管理说明3
1.3高级管理方法3
1.3.1为数据库分配硬盘空间和卷组4
1.3.2创建用户组和用户4
1.3.2.1创建用户组5
1.3.2.2创建用户5
1.3.3配置服务端口6
1.3.4创建实例6
1.3.5空间管理7
1.3.5.1系统空间管理7
1.3.5.2创建表空间8
1.3.6建库8
1.3.6.1建立基本数据库8
1.3.6.2建立表和索引8
1.3.6.3建立约束及触发器10
1.3.6.4建立视图11
1.3.6.5删除数据库11
1.3.6.6删除表11
1.3.7导入导出数据12
1.3.7.1删除旧流水数据12
1.3.7.2导出数据12
1.3.7.3导入数据13
1.3.8权限管理13
1.3.8.1认证14
1.3.8.2数据库系统特权14
1.3.8.3数据库对象授权14
1.3.8.4程序包绑定(BIND)到数据库并授权16
1.3.9数据库备份和恢复方案17
1.3.9.1离线备份18
1.3.9.2在线备份18
1.4配置客户端19
1.4.1AIX上19
1.4.1.1用户的准备19
1.4.1.2配置客户端19
1.4.2Windows95/98/NT上21
1.4.2.1分辨服务器的主机地址21
1.4.2.2配置和测试客户端21
1.5控制中心使用27
1.6SHELL文件的列表说明28