DB2数据库的备份和恢复简介

数据库备份

在备份数据库前,请确保对 DB2 具有下列权限之一:

  • SYSADM
  • SYSCTRL
  • SYSMAINT

对于这些示例,创建一个存储数据库映象的目录,如 C:/backup。没有必要为了执行备份而与数据库连接,因为备份命令会自动创建连接。另外,请确保在执行脱机备份时没有其它应用程序与数据库连接,否则您将接收到一条 SQL1035N 错误消息。DB2“list applications” DB2“force applications all”是完成这一任务的有用命令。

有两种可以执行备份的方式。第一种是脱机数据库备份。这种备份方式需要至数据库的独占连接,因为将备份数据库中的所有表空间。第二种是联机数据库备份。这种备份方式对于那些运行生产数据库并且需要数据库中连续不断地运行一个或多个表空间的用户特别有用。当使用联机备份时,仅要备份的表空间需要用户有独占连接。这样允许数据库内的其它不需要备份的表空间仍保持联机,以供其它应用程序访问。

注:如果执行联机备份,请确保在数据库管理器配置文件中启用了前滚恢复参数 logretain = on userexit。否则,会接收到一条 SQL2413N 错误,并需要执行下列命令:

db2 "update dbm configuration using logretain on" > db2stop > db2start

启用了 logretain 和/或 userexit 参数后,进行完整的数据库脱机备份。可以通过执行下列命令进行验证,以查看数据库是否处于备份挂起状态:

db2 "get database configuration for sample"

然后,查找“Backup Pending”值(它将被设置为“YES”“NO”)。进行了完整数据库备份后,您将能够在此后的任何时候执行联机表空间备份。

示例 1 — 将数据库脱机备份至本地目录

db2 "backup database sample user db2admin using db2admin
to c:/backup with 3 buffers buffer 1000 without prompting"

该命令将使用用户 db2admin 和密码 db2admin(仅在当前用户不具备必需的数据库权限时才需要使用该用户和密码)产生数据库“sample”的备份映象。将使用 3 个缓冲区把该映象存储在 c:/backup 中,每个缓冲区的缓冲区大小为 1000 页面。“without prompting”键短语指定备份将以无人照看方式运行,并且任何通常需要用户介入的操作都将返回一条错误消息。

示例 2 — 将表空间级别联机备份至磁带设备

db2 "backup database sample tablespace (syscatspace,
userspace1) online to /dev/rmt0 without prompting"

该命令将产生数据库内指定表空间的备份映象。syscatspace userspace1 是驻留在 sample 数据库中两个要备份的表空间。磁带机是 /dev/rmt0。由于命令中没有定义缓冲区和缓冲区页面的数量,所以缺省值将为 Buffers = 2 Buffer(size) = 1024 页面。

联机表空间备份的优点在于:数据库中的所有其它表空间都可用于处理。缺省值是“offline”,这要求在执行备份时断开所有应用程序与数据库的连接。

执行这些命令后,您应该在 DB2 命令行上接收到下列消息:
"Backup successful. The timestamp for this backup image is: timestamp"
timestamp
是每个数据库备份映象的唯一标识,如果单个文件夹中有多个备份映象,则在您执行恢复时需要该标识。在 UNIX 系统上,时间戳记与备份映象文件名连接:
"dbname.type.instance.nodexxx.catnxxxx.yyyymmddhhmmss.seq"
Windows NT 系统上,备份映象存储在一个有 5 个层次的目录树中,该目录中也包含该时间戳记信息:
"Dbname.type/db2instance/nodexxx/catnxxxx/yyyymmdd/hhmmss.seq"

如需以前备份的数据库的信息,请输入下列命令:

db2 "list history backup all for database sample"

 

数据库恢复

在恢复数据库前,对 DB2 具有下列权限之一:

  • SYSADM
  • SYSCTRL
  • SYSMAINT

如果恢复至一个新数据库(不是现有的数据库),则需要 SYSADM SYSCTRL

脱机数据库恢复将需要一个独占连接;所以在这一任务期间应该无应用程序连接至数据库。而且,请确保在执行脱机恢复时没有其它应用程序与数据库连接,否则您将接收到一条 SQL1035 错误消息。

示例 1 — 从本地目录脱机恢复到一个现有数据库中

db2 "restore database sample user db2admin using db2admin
from c:/backup taken at 20040222145404 with 3 buffers buffer
1000 without rolling forward without prompting"

该命令将把保存在 c:/backup 中带有时间戳记 20040222145404 的数据库映象恢复到现有 sample 数据库中(请参考数据库备份一节中有关如何获取前面提到的时间戳记值的信息)。该命令将用备份的数据库映象文件有效地覆盖旧的 sample 数据库文件。键短语“without rolling forward”将阻止数据库管理器使恢复的数据库处于前滚挂起状态(如果在备份数据库时没有为前滚恢复启用该数据库,则不需要该短语)。如果您对将所有数据库文件恢复到上次成功的事务那一点感兴趣,而且在备份数据库时为前滚恢复启用了它,则忽略“without rolling forward”键短语。

如果没有使用关键字“from”,则当前目录将是备份映象的缺省位置。而且,如果只有一个数据库备份映象驻留在目标文件夹中,则不需要键短语“taken at timestamp

 

示例 2 — 将表空间从磁带设备联机恢复到现有数据库中

db2 "restore database sample tablespace (syscatspace,
userspace1) online from /dev/rmt0 taken at 20010222151429 newlogpath
/home/db2v71/samplelogs without prompting"

该命令在允许无限制地处理联机恢复命令未涉及的其它表空间的同时,把 syscatspace userspace1 表空间恢复到现有 sample 数据库。而且,如果在同一个文件夹中有多个备份映象,则必须声明“taken at timestamp键短语。如果恢复后不适合使用备份映象中的 logpath,则可以包括“newlogpath”关键字。例如,在路径不再有效或它当前正由另一个数据库使用时。

 

示例 3 — 脱机恢复到新的数据库中

db2 "restore database sample from /home/db2v71/backup into
newsamp without prompting"

该命令将把 sample 数据库备份映象恢复到数据库 newsamp。执行了恢复命令后,DB2 将立即创建“newsamp”数据库。然后,将把备份映象恢复到“newsamp”数据库中。

:如果 /home/db2v71/backup 目录中只有一个备份数据库映象,则不使用“taken at timestamp键短语。

当创建现有数据库的副本时,以上命令是有用的。sample 数据库将不受恢复过程的影响,因此仍可供将来使用。也可以使用相同的恢复命令恢复到现有数据库中。例如,在执行以上命令前,您可能已经创建了 newsamp 数据库。

注:如果打算执行该功能,要恢复到其中的数据库的代码页必须与备份数据库映象的代码页匹配。

附加注释:如果平台、DB2 版本号和版本分序号都相同,则可以恢复到现有的远程数据库去。根据哪台机器正在认证用户标识,请确保在本地机器或服务器上有前面提到的权限,以执行远程恢复。此外,将要恢复的数据库编目到本地机器上,以便执行远程恢复(为了连接至要恢复的数据库,这是必需的)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值