一、DB2 基础 1.DB2 逻辑和物理结构
DB2 逻辑结构包含:
实例(包含用户实例和管理实例):
实例就是一个数据库的“环境”。它包含了程序代码,包含了内存结构等等,
实例级别的DB2变量可以通过命令:db2set –I来查询。
默认的DB2注册变量有:DB2ACCOUNTNAME、DB2INSTOWNER\DB2PORTRANGE、DB2INSTPROF、DB2COMM
对实例进行的操作有:
创建实例、删除实例
启动实例、关闭实例
查看系统所有实例、查看当前的实例
连接实例、断开实例
修改实例参数
说明:Windows 下安装 DB2 创建实例时会自动创建系统变量 DB2INSTANCE,值为实例名。而在 Unix/Linux 下需要手动设置或者运行DB2的脚本 。然后一个系统下可以有一个管理实例:DAS,它是一个后台进程,可以让用户进行远程的图形管理。
数据库
数据库是将表空间、分区组、表等等组织在一起的一个信息(数据)的集合,其对象包括:
数据库分区
分区组
表空间、表
索引
缓存区
视图
结构
用户定义函数
触发器包
序列
存储过程
这张结构图很好的说明了数据库的结构,数据库下面是数据库分区,数据库分区可包含分区组的一部分或者单个分区组,包含缓存池、视图、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会自动调用相关的进程或者线程来进行数据库的备份和恢复。
DB2的备份有3种类型,完全备份、增量备份、Delta备份,其中增量备份是相当于上一次完全备份而言的,也就是备份上一次完全备份之后数据库修改的部分,Delta备份是相当于上一次备份而言的,无所谓上一次备份是完全备份还是增量备份或者是Delta备份,这次备份都是备份上一次备份之后数据库修改的部分。
DB2的恢复与备份对应,有3种,需要注意的是,每一次恢复,都需要先对所选择的时间点的备份集做第一次恢复。比如下图中,本周6的Delta备份被损坏了,现在需要恢复到周5到周6的某个时间点,可以先恢复周5的Delta备份,然后恢复第一个周日的完全备份,周3的增量备份,然后再恢复周5的Delta备份,最后通过前滚日志来将数据库还原到所需要的那个时间点。
备份恢复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原理
备份原理
上图是爱数备份DB2的原理。当用户提示爱数需要备份数据库的时候,爱数的客户端会通知DB2需要备份数据库,然后DB2将数据库的数据发送给爱数的客户端,爱数的客户端经过压缩加密然后放到爱数的介质当中。如果备份完成,DB2会通知爱数客户端,然后爱数会通知用户备份已经完成。
恢复原理
上图讲述的是爱数恢复DB2的原理。当用户提示爱数需要恢复数据库的时候,爱数的客户端会通知DB2需要恢复数据库,然后DB2提示爱数的客户端需要哪些数据,爱数的客户端从爱数的介质当中取出备份数据交给DB2。如果恢复完成,DB2会通知爱数客户端,然后爱数会通知用户恢复已经完成。
爱数备份恢复DB2操作
进行DB2的备份
1.添加实例
先在这台客户端下添加实例,具体的操作在新建任务的时候,在新建任务对话框中,选择对应的客户端,选择添加实例,如果这台客户端之前备份过DB2,那么就不需要这步操作。
2.选择数据源
选择需要备份的数据库或者表空间,
3.选择备份策略
进行DB2的备份
如果需要恢复数据库到某一个时间点,先选择对应的时间点的备份集,选择数据库或者表空间,选择恢复到客户端,如果恢复到原位置原数据库,则不用输入恢复到位置和恢复后的新数据库名,选择恢复到的时间点后,单击恢复即可。
注意事项
?如果展开数据源或者备份恢复中途有数据库错误,会有错误值,根据该错误值,查找错误原因
?客户端服务应使用添加实例时相同的账户来登录
本文出自 “梦起蹉跎” 博客,转载请与作者联系!