您的位置:首页 > 其它

DB2 Backup and Restore

2013-02-03 10:27 302 查看
一:在源数据库上的操作:(本例为solaris9)

#su – db2inst1

$pwd

/ export/home2/db2inst1

$mkdir cws3

$db2pd –db cws3 (查看cws3数据库的配置信息,例如表空间的位置,日值的位置等等)

$ db2 get dbm cfg (查看原来cws3数据库的建库信息,如库的编码,区域等)

说明:数据库restore时对于不存在的数据库会新建一个,但是其codeset和地区,以及codepage都是使用默认的,当备份的数据库与你默认 的配置不同时,就会发生错误。因此可以先在目标数据库上新建一个与源数据库相同的数据库,使其codeset和地区,codepage都跟你备分的一样, 再执行restore就ok了。

$db2 db2stop(或者db2 db2stop force)

$db2 db2start

说明:在用backup db备份db2数据库时,外部不能有连接,因此要stop db2,然后在start db2。

$db2 backup db cws3 to /export/home2/db2inst1/cws3

(指定备份的介质,只要是一个可写的目录即可,backup命令会自动把备份出来的文件放到/export/home2/db2inst1/cws3下面).

备份完成后,系统会自动生成一个备份的时间戳,例如:

Backup successful. The timestamp for this backup image is : 20060608160538

同时会在指定的介质(或者是目录)下生成一个类似如下的文件:

CWS3.0.db2inst1.NODE0000.CATN0000.20060608160538.001

这样db2的基本备份就完成了。

然后可以把备份出来的数据文件拷贝的目标数据库的任意目录(这个目录很重要,以后要用到,本例是备份到目标数据库/db2data/db2inst1/cws3下),接下来就可以在目标数据库上进行操作。

//直接恢复到另一个数据库:

$db2 restore db cws3 from /export/home2/db2inst1/cws3 into <target_database>

二:在目标数据库上操作(本例为AIX5.1)

1:建立目标数据库:

由于两个数据库在编码以及库配置方面的不同,因此建议在目标数据库上先建立一个和源数据库配置相同的数据库。

#su – db2inst1

$pwd

/db2data/db2inst1

$mkdir cws3

本例假设备份的数据库文件拷贝到了/db2data/db2inst1/cws3下。

$ CREATE DATABASE cws3 ON /db2data/db2inst1 USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM

这样就在/db2data/db2inst1目录下产生一个以登陆实例为名称的目录,本例为

/db2data/db2inst1/db2inst1

由于两台数据库备份的目录以及在目标数据库上恢复的目录可能不同,并且backup db命令备份的数据文件默认记录所有与备份环境相关的信息,例如备份路径等,因此要利用db2的重定向方式恢复数据。

2:重定向恢复数据库:

接下来根据上面在源数据库上查到的源数据库配置信息,主要是数据库几个缺省表空间,例如系统表空间,用户表空间,临时表空间等等,根据这些信息,进行数据库的重定向恢复。

$ db2 restore db from /export/home2/db2inst1/cws3 to /db2data/db2inst1/cws3 into cws3 redirect

$ db2 "set tablespace containers for 0 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0000.0')"

$ db2 "set tablespace containers for 1 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0001.0')"

$ db2 "set tablespace containers for 2 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0002.0')"

$ db2 "set tablespace containers for 3 using (path '/db2data/db2inst1/db2inst1/usercontainer3')"

$ db2 "set tablespace containers for 4 using (path '/db2data/db2inst1/db2inst1/usercontainer4')"

注意, 在给恢复数据库上的tablespace设置redirect container时候,设置必须和原来的tablespace type一致,如原来是SMS,则使用PATH container,原来是DMS,则使用FILE/DEVICE container。如果是DMS,上面使用格式变为:

db2 "set tablespace containers for 5 using (file '/db2data/db2inst1/db2inst1/data1' 2000000)"

然后进行:

$db2 restore db cws3 continue

至此db2重定向恢复完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: