一、DB2 基础 1.DB2 逻辑和物理结构

DB2 逻辑结构包含:

实例(包含用户实例和管理实例):

实例就是一个数据库的“环境”。它包含了程序代码,包含了内存结构等等,

实例级别的DB2变量可以通过命令:db2set –I来查询。

默认的DB2注册变量有:DB2ACCOUNTNAME、DB2INSTOWNER\DB2PORTRANGE、DB2INSTPROF、DB2COMM
对实例进行的操作有:

创建实例、删除实例

启动实例、关闭实例

查看系统所有实例、查看当前的实例

连接实例、断开实例

修改实例参数

说明:Windows 下安装 DB2 创建实例时会自动创建系统变量 DB2INSTANCE,值为实例名。而在 Unix/Linux 下需要手动设置或者运行DB2的脚本 。然后一个系统下可以有一个管理实例:DAS,它是一个后台进程,可以让用户进行远程的图形管理。

数据库

数据库是将表空间、分区组、表等等组织在一起的一个信息(数据)的集合,其对象包括:

数据库分区

分区组

表空间、表

索引

缓存区

视图

结构

用户定义函数

触发器包

序列

存储过程

p_w_picpath

这张结构图很好的说明了数据库的结构,数据库下面是数据库分区,数据库分区可包含分区组的一部分或者单个分区组,包含缓存池、视图、Schema、触发器Trigger、存储过程Stored Procedure、用户定义函数User Defined Function、包、序列,一个分区组中包含表空间,其中表空间又包含了表和索引。

1.数据库分区:

是为了克服大数据库的物理限制而存在的,有了数据库分区,那么一个数据库可以跨越多台客户端机器,不再只是存放在一台机器当中。数据库分区是分区数据库独立的一部分,有它自己的数据、配置文件、索引和事务日志。数据库分区可分别在不同的物理机器上,也可以在一台机器上有多个分区(此时称为逻辑分区)

2.分区组:

分区组是为了将一个或多个数据库分区联合起来的一个逻辑层。

当创建数据库的时候,默认会创建3个分区组:

IBM defaultgroup:创建表时的默认的分区组,包含了所有的在配置文件db2nodes.cfg中定义的所有的数据库分区,不可更改,表空间USERSPACE1在此分区中。

IBM tempgroup:所有的系统临时表都使用这个分区组,并且该分区组包含了所有的在配置文件db2nodes.cfg中定义的所有数据库分区,表空间TEMPSPACES1在该分区组中

IBM catgroup:编录的表都包含在该分区组中,它只包含了数据库的编录分区,不可更改,表空间SYSCATSPACE在该分区组中。

3.表空间

表空间是数据库当中的一个逻辑的对象。它可以将逻辑的表或者索引和他们对应的物理存储设备(容器或存储路径)、物理内存(存储池)联系起来。

但是注意表空间是逻辑的而非物质的,所以我们不能在物理设备上找到某一个文件说它是某某表空间。

表空间的常用分类:

表空间按照管理方式,可以分为:

SMS(System-managed-space,系统管理表空间),这种表空间被操作系统管理着,需要最少的管理

DMS(Datebase-managed-space,数据库管理表空间),这种表空间被DB2数据库管理器管理着,需要一些管理

自动存储(Automatic Storage),这种表空间可以为上面的两种之一

表空间按照存储数据类型,可以分为:

固定(Regular),可存储除开临时的数据之外的任何数据,可用于SMS或者DMS

大(Large),可存储除开临时的数据之外的任何数据,只用于DMS

临时(Temporary),可用来存储临时数据,可以继续分成系统临时表空间和用户临时表空间。

默认的表空间有:

SYSCATSPACE:包含了DB2系统编录表和视图,这组表和视图包含了所有数据库中的对象的临时信息

TEMPSPACE1:当DB2需要临时的表来进行大的排序和联合操作的时候,被用来做系统的临时数据存放位置。

USERSPACE1:当使用CREATE TABLE来创建表时,如果未指定表空间名,那么这些表和索引就将在这里被初始化创建。

4.表:表就是一个没有排序的记录,包括行和列。每一个列中有一个被定义的数据类型,每一个行代表了一个表的项。

5.索引:索引是一组被排列的键,其中每一个键都指向某个表中的某一行。索引可以在查找指定行的时候改进程序性能,也可以被用来保证行的唯一性。

6.缓存区:缓存池是一个物理内存区域,缓存了最近使用的数据库信息。如果没有缓存池,每一个单块的数据必须从磁盘上取出(非常的慢)。缓存池对应着表空间中的表和索引在它上面的使用。

7.视图:一个视图是表示保存在一个或者多个表中的数据的里另一种方式。可包含一个或者多个表中的一些或者所有的列,也可以包含基于其他视图中的元素。

8.Schema:schema可以提供其他数据库对象的逻辑组合。一个schema可以被一个可以控制访问它里面对象的单体所拥有。

9.用户定义函数:允许数据库用户通过创建函数来扩展SQL语言

10.触发器:触发器包含了被特定的动作例如更新表操作引起触发的程序逻辑。

11.包:包含了您的SQL查询器编译版本及DB2优化器获取查询数据时所选择的路径

12.序列:允许在一个序列中生成独特的数

13.存储过程:将程序逻辑移到你的数据库当中

DB2 物理结构包含:

Extent

容器

页是数据库的最小存储单位,主要是存放了表和索引的数据,Extent是页的组合,一个Extent可以是一个页,也可以是两个及两个以上的页。容器对应的是表空间的物理存储

2.DB2 一般管理简单介绍

查看、修改数据库配置参数操作

查看数据库的参数可以通过:db2 get db cfg for DatabaseName 命令来进行,其中DatabaseName是需要查看参数的数据库名字。如果需要修改数据库的参数,可以通过:db2 update db cfg for DatabaseName using ParameterName Value命令来进行。其中DatabaseName是数据库名,ParameterName是参数名,Value是要修改后的值

其他一般管理操作

?启动(关闭)实例

?db2start/db2stop

?连接实例、数据库

?db2 attach to/db2 connect to

?创建(删除)实例、数据库…

?db2icrt/db2idrop、db2 create/drop db DatabaseName

?插入(删除)数据

?insert into/delete

?运行sql脚本

?db2 –tvf test.sql

?DB2 用户认证及验证

?DB2 检查错误

?系统日志

?db2diag.log

?错误数值意义

?db2 ? sqld30082

SQL30082N 安全处理失败,因为 "<原因码>"("<原因字符串>")。

说明:

在安全处理期间出错。安全性错误的原因由 "<原因码>" 和对应的 "<原因字符

串>" 值描述。

下列是原因码列表和相应原因字符串的列表:

0(未指定)

未指定特定安全性错误。

1(密码已到期)

该请求中指定的密码已到期。

2(密码无效)

该请求中指定的密码无效。

--------------------------------------------------

二、DB2 备份恢复(使用自带的工具) 备份恢复DB2的原理

DB2备份恢复有专门的引擎进程单元,通过对DB2发送备份或者恢复的命令,DB2会自动调用相关的进程或者线程来进行数据库的备份和恢复。

p_w_picpath

DB2的备份有3种类型,完全备份、增量备份、Delta备份,其中增量备份是相当于上一次完全备份而言的,也就是备份上一次完全备份之后数据库修改的部分,Delta备份是相当于上一次备份而言的,无所谓上一次备份是完全备份还是增量备份或者是Delta备份,这次备份都是备份上一次备份之后数据库修改的部分。

DB2的恢复与备份对应,有3种,需要注意的是,每一次恢复,都需要先对所选择的时间点的备份集做第一次恢复。比如下图中,本周6的Delta备份被损坏了,现在需要恢复到周5到周6的某个时间点,可以先恢复周5的Delta备份,然后恢复第一个周日的完全备份,周3的增量备份,然后再恢复周5的Delta备份,最后通过前滚日志来将数据库还原到所需要的那个时间点。

p_w_picpath

备份恢复DB2的操作

备份前参数配置

在进行DB2 数据库备份之前,需要先设置该数据库的几个参数:Logretain、Userexit、Logarchmeth1(LOGARCHOPT1)、Logarchmeth2(LOGARCHOPT2),  Logretain和Userexit主要是针对DB2 V8.2之前的版本设置的两个参数。在V8.2之后的版本,主要通过设置Logarchmeth1、Logarchmeth2来开启数据库的归档模式。从而可以对数据库进行备份。

配置命令:db2 update db cfg for dbname using logarchmeth1 “Disk:D:\archlog”将数据库dbname的日志归档到D盘下的archlog目录中。修改完这个参数后,需要做一次数据库的备份然后才可以继续连接和使用该数据库。
备份命令:backup

权限:使用该命令必须是SYSADM, SYSCTRL, 或者 SYSMAINT 的权限。

恢复命令:restore

权限:恢复到新的数据库,SYSADM,SYSCTRL,如果恢复到已有数据库,则:SYSADM,SYSCTRL,或者SYSMAINT.

前滚日志命令:rollforward

权限:SYSADM,SYSCTRL或者SYSMAINT

还原数据库命令:recover

权限:与restore命令一致

备份恢复DB2注意事项

当想要将一台机器上的DB2数据库恢复到另外一台机器的时候,如果DB2环境(容器)不一样,则需要进行重定向恢复。

------------------------------------------------------------------

三、DB2 备份恢复(使用爱数软件) 爱数备份恢复DB2原理

备份原理

p_w_picpath

上图是爱数备份DB2的原理。当用户提示爱数需要备份数据库的时候,爱数的客户端会通知DB2需要备份数据库,然后DB2将数据库的数据发送给爱数的客户端,爱数的客户端经过压缩加密然后放到爱数的介质当中。如果备份完成,DB2会通知爱数客户端,然后爱数会通知用户备份已经完成。

恢复原理

p_w_picpath

上图讲述的是爱数恢复DB2的原理。当用户提示爱数需要恢复数据库的时候,爱数的客户端会通知DB2需要恢复数据库,然后DB2提示爱数的客户端需要哪些数据,爱数的客户端从爱数的介质当中取出备份数据交给DB2。如果恢复完成,DB2会通知爱数客户端,然后爱数会通知用户恢复已经完成。

爱数备份恢复DB2操作

进行DB2的备份

1.添加实例

先在这台客户端下添加实例,具体的操作在新建任务的时候,在新建任务对话框中,选择对应的客户端,选择添加实例,如果这台客户端之前备份过DB2,那么就不需要这步操作。

2.选择数据源

选择需要备份的数据库或者表空间,

3.选择备份策略

进行DB2的备份

如果需要恢复数据库到某一个时间点,先选择对应的时间点的备份集,选择数据库或者表空间,选择恢复到客户端,如果恢复到原位置原数据库,则不用输入恢复到位置和恢复后的新数据库名,选择恢复到的时间点后,单击恢复即可。

注意事项

?如果展开数据源或者备份恢复中途有数据库错误,会有错误值,根据该错误值,查找错误原因

?客户端服务应使用添加实例时相同的账户来登录