DB2 数据库备份、恢复和前滚
2009-09-04 09:44
681 查看
、 |
本文提供了执行数据库备份、恢复和前滚日志文件这些基本操作的循序渐进指南。以下示例将介绍这些实用程序句法上的变体,以便展示 DB2 产品的灵活性。
简介
本文提供了执行数据库备份、恢复和前滚日志文件这些基本操作的循序渐进指南。以下示例将介绍这些实用程序句法上的变体,以便展示 DB2® 产品的灵活性。
通常,本主题将解决权限、所需连接、语法和有益的用法注释等问题,以成功执行备份、恢复或前滚过程。假设您熟悉 DB2 Universal Database™(DB2 UDB)引擎,并且系统满足下列要求:
安装了 DB2 UDB 版本 6 或 7。
已在 DB2 中创建了一个实例。
操作系统是 UNIX®、Microsoft Windows 98、Windows 2000 或 Windows NT。
DB2 的版本是个人版、工作组版、企业版(EE)或扩展企业版(EEE)。
本地机器或存储设备上有足够的磁盘空间保存备份映象。
注:
本文中的所有示例都是从 DB2 命令行环境创建的。
这些示例中所用的数据库是一个“sample”数据库,可以通过执行下列操作创建该数据库:
在用于 DB2 V7.1 的 Windows NT 上:
单击屏幕左下角处的 Start 菜单。
单击 Programs。
单击(IBM DB2)。
单击 First Steps。
单击 Create the Sample Databases。
选择 Sample。
在 UNIX 上:
将用户切换成 DB2 实例所有者。
执行位于 $HOME/
instance owner
/sqllib 的 db2profile
在命令行上输入 db2sampl。
注:
如果没有找到 db2sampl,则意味着可选的 db2sampl 脚本没有与其余 DB2 产品一起安装。需要手工创建一个数据库。
如
果将使用 sample 数据库作为对下面示例的测试,请在 sample
数据库的一个表中更新或插入几行。这样,您将能够看到使用前滚过程与不使用前滚过程相对比的效果。例如,驻留在 sample 数据库中的一个表是
employee 表。在备份之后恢复数据库前,请发出与下面类似的命令:
db2 "update employee set empno = '11' where firstnme = 'CHRISTINE'" The "empno" field for 'CHRISTINE' is changed from '10' to '11'. |
在进行备份、恢复和前滚的过程前,从图形观点看一下该过程可能会有所获益。在我们单步执行该过程时,请参考下图以获取更清晰的信息。
在备份数据库前,请确保对 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 |
userexit
选项需要详细的用法说明,所以本文将不对此进行讨论。
启用了 logretain 和/或 userexit 参数后,进行完整的数据库脱机备份。可以通过执行下列命令进行验证,以查看数据库是否处于备份挂起状态:
db2 "get database configuration for sample" |
示例 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 页面。当在 SCO UNIXware 7 上使用磁带设备时,必须指定缓冲区大小为 16 页面。
联机表空间备份的优点在于:数据库中的所有其它表空间都可用于处理。缺省值是“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 20010222145404 with 3 buffers buffer 1000 without rolling forward without prompting" |
命令将把保存在 c:/backup 中带有时间戳记 20010222145404 的数据库映象恢复到现有 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" |
timestamp
”键短语。如果恢复后不适合使用备份映象中的 logpath,则可以包括“newlogpath”关键字。例如,在路径不再有效或它当前正由另一个数据库使用时。
示例 3 — 脱机恢复到 AIX® 上新的数据库中
db2 "restore database sample from /home/db2v71/backup into newsamp without prompting" |
注
:如果 /home/db2v71/backup 目录中只有一个备份数据库映象,则不使用“taken at
timestamp
”键短语。
当创建现有数据库的副本时,以上命令是有用的。sample 数据库将不受恢复过程的影响,因此仍可供将来使用。也可以使用相同的恢复命令恢复到现有数据库中。例如,在执行以上命令前,您可能已经创建了 newsamp 数据库。
注:
如果打算执行该功能,要恢复到其中的数据库的代码页必须与备份数据库映象的代码页匹配。
附加注释:
如
果平台、DB2
版本号和版本分序号都相同,则可以恢复到现有的远程数据库去。根据哪台机器正在认证用户标识,请确保在本地机器或服务器上有前面提到的权限,以执行远程恢
复。此外,将要恢复的数据库编目到本地机器上,以便执行远程恢复(为了连接至要恢复的数据库,这是必需的)。
在对数据库执行前滚之前,请确保对 DB2 具有下列权限之一:
SYSADM
SYSCTRL
SYSMAINT
在执行前滚过程前,不需要连接至数据库,因为该命令会建立一个数据库连接。
注:
在多节点环境中,只能从编目的节点发出该命令。而且,如果数据库处于前滚挂起状态,并且成功执行该命令,则数据库管理器将使数据库脱离前滚挂起状态。
示例 1 — 将数据库脱机前滚至某一时间点
db2 "rollforward database sample user db2admin using db2admin to 2001-02-22-14.54.21.253422 and stop" |
* 数据库配置文件包含有关数据库日志文件路径的信息。要查看这一路径,输入下列命令:
db2 "get database configuration for sample" |
注:
当将表空间前滚至某一时间点时,表空间处于备份挂起状态,并且将是不可用的,直到执行了数据库备份为止。
示例 2 — 将表空间级别联机前滚至日志结尾
db2 "rollforward database sample to end of logs and stop tablespace (userspace1) online" |
示例 3 — 在多节点数据库上执行表空间级别联机前滚
db2 "rollforward database sample to end of logs on nodes (0,2) and stop tablespace userspace1 online" |
这里是执行前滚后返回至命令行的样本输出:
Rollforward Status Input database alias = sample Number of nodes have returned status = 1 Node number = 0 Rollforward status = not pending Next log file to be read = Log files processed = S0000001.LOG - S0000001.LOG Last committed transaction = 2001-02-26-21.54.54.000000 DB20000I The ROLLFORWARD command completed successfully. |
在表空间前滚至某一时间点的情况下,不接受“node”关键字。这是因为必须前滚所有数据库分区,以确保所有分区都在同一级别。
相关文章推荐
- DB2的备份(backup)和恢复(RESTORE)数据库方法
- IBM DB2 V8.2 数据库的备份以及恢复
- DB2导入、导出、备份及恢复数据库等操作资料
- DB2 数据库备份及恢复实验脚本
- DB2的备份(backup)和恢复(RESTORE)数据库方法
- DB2 数据库在线备份和恢复的操作步骤
- DB2的备份(backup)和恢复(RESTORE)数据库方法
- DB2 在线增量备份数据库、还原增量备份数据库、前滚恢复数据库脚本
- IBM DB2 V8.2 数据库的备份以及恢复
- DB2的备份(backup)和恢复(RESTORE)数据库方法
- DB2的备份(backup)和恢复(RESTORE)数据库方法
- DB2 在线增量备份数据库、还原增量备份数据库、前滚恢复数据库脚本
- 浅谈IBM DB2的数据库备份与恢复
- DB2第一章:数据库备份与恢复
- DB2的备份和恢复(RESTORE)数据库方法
- DB2备份恢复数据库步骤
- DB2的数据库备份与恢复
- DB2的备份(backup)和恢复(RESTORE)数据库方法
- DB2的备份(backup)和恢复(RESTORE)数据库方法
- ORACLE 数据库导入、导出(备份、恢复)