使用DB2 V9进行非增量重定向还原(四)
备份测试数据库
现在我们来备份测试数据库,好方便我们在下面的例子中可以恢复到此时的状态,如清单10所示。
--清单 10.备份数据库
BACKUP DATABASE DB2TEST1 TO /db2/databases/backup/
命令执行完后,显示如下:
备份成功。此备份映像的时间戳记是:20070911175125
创建示例表
接下来我们创建示例表,在/home/db2inst1/目录下我们编写脚本employee.sql,内容如清单11所示。
--清单 11. employee.sql内容
CREATE TABLE "DB2INST1"."EMPLOYEE" (
"EMPNO" CHAR(6) NOT NULL ,
"FIRSTNME" CHAR(12) NOT NULL ,
"MIDINIT" CHAR(1) ,
"LASTNAME" CHAR(15) NOT NULL ,
"PHOTO" BLOB (10 M ) NOT NULL LOGGED NOT COMPACT,
"WORKDEPT" CHAR(3) ,
"PHONENO" CHAR(4) ,
"HIREDATE" DATE ,
"JOB" CHAR(8) ,
"EDLEVEL" SMALLINT NOT NULL ,
"SEX" CHAR(1) ,
"BIRTHDATE" DATE ,
"SALARY" DECIMAL(9,2) ,
"BONUS" DECIMAL(9,2) ,
"COMM" DECIMAL(9,2) )
IN "TABLESPACE1" LONG IN "TABLESPACE2";
接下来执行employee.sql脚本:
$db2 –tvf /home/db2inst1/employee.sql
执行成功后,表DB2INST1.EMPLOYEE的用户数据存放在TABLESPACE1,大型字段存放在TABLESPACE2中,其中TABLESPACE1是使用自动存储器,TABLESPACE2是使用的非自动存储器。
再次备份测试数据库
现在我们来再次备份测试数据库,好方便我们在下面的例子中可以恢复到此时的状态,如清单12所示。
--清单 12.备份数据库
BACKUP DATABASE DB2TEST1 TO /db2/databases/backup/
命令执行完后,显示如下:
备份成功。此备份映像的时间戳记是:20070911175656
利用全量备份还原测试数据库
使用RESTORE DATABASE 命令来在发生问题(例如介质或存储器故障、断电或者应用程序故障)后恢复数据库或表空间。如果已经备份了数据库或各个表空间,则可以在它们由于某种原因损坏时重新创建它们。
需要注意的是,我们的备份介质中所包含的自动存储路径在我们要复原的环境中必须存在,这次还原我们将利用第一次全量备份的备份文件,时间戳为20070911175125,通过DB2命令行发出RESTORE DATABASE命令,具体如清单13所示。
--清单 13.还原数据库
RESTORE DATABASE DB2TEST1 FROM /db2/databases/backup/ TAKEN AT 20070911175125
由于DB2TEST1数据库存在并且在发出RESTORE DATABASE命令时将被替换,所以会返回一个提示消息,内容如下:
SQL2539W 警告!正在复原至与备份映像数据库相同的现有数据库。数据库文件将被删除。
要继续吗?(y/n)
我们指定y,将完成还原操作。
数据库还原操作需要一个独占连接:启动任务后,restore实用程序会防止其他应用程序访问数据库,直到还原操作成功完成,所以不能再对该数据库运行任何应用程序,但表空间还原操作可以联机完成,前提是该数据库是归档数据库。
命令成功后,连接数据库,会报数据库处于ROLL-FORWARD PENDING状态,这是因为归档数据库执行完还原后,需要进行前滚恢复,具体返回消息如下:
SQL1117N 由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "DB2TEST1"。SQLSTATE=57019
接下来我们对DB2TEST1继续进行前滚恢复,发出ROLLFORWARD命令,具体见清单14所示。
--清单 14.前滚恢复数据库
ROLLFORWARD DATABASE DB2TEST1 TO END OF LOGS AND STOP
执行成功后,就可以正常访问数据库了,从返回的消息可以看到已处理的日志文件有两个S0000001.LOG、S0000002.LOG两个,此时具体的消息如清单15所示下。
清单 15.前滚恢复数据库返回消息
前滚状态
输入数据库别名 = DB2TEST1
节点数已返回状态 = 1
节点号 = 0
前滚状态 = 未暂挂
下一个要读取的日志文件 =
已处理的日志文件 = S0000001.LOG - S0000002.LOG
上次落实的事务 = 2007-09-11-09.56.54.000000 UTC
DB20000I ROLLFORWARD命令成功完成。
非增量重定向还原测试数据库
以上介绍了如何对数据库进行还原和前滚恢复,接下来看一下如何对不允许增量备份的数据库进行非增量重定向还原。
在数据库备份操作期间,保留了一个记录,它记录了与正在备份的表空间相关的所有表空间容器。在还原操作期间,会检查备份映像中列示的所有容器,以确定它们是否存在并可访问。若这些容器中的一个或多个由于介质故障(或由于任何其他原因)而不可访问,还原操作将失败。在这种情况下,还原操作需要重定向至不同的容器。<
- 发表评论
-
- 最新评论 更多>>