Window下备份的DB2数据库,在Linux下怎么恢复

Window下备份的DB2数据库,在Linux下怎么恢复,第1张

将windows下的数据库备份文件直接复制到LINUX下,在LINUX下创建一个同名空库,然后执行restore db命令,应该成功的。

另外一种方法是可以用db2look取得windows数据库的DDL语句,到LINUX系统下执行一遍。数据依靠windows下执行EXPORT命令导出,LINUX下IMPORT。

恢复以及带有 OVERFLOW 选项的前滚 *** 作。对于 DB2 的分区数据库,某些直接发出的 DB2 命令只作用于当前一个分区,备份和恢复(BACKUP/RESTORE)就属于这一类命令。但是对于硬盘数据恢复分区数据库,由于同一数据库的数据分布在多个分区上。则对它的备份和恢复 *** 作就要考虑到各分区上数据的完整及同步问题,因此可以在 DB2 命令前加上 db2_all 命令,以便 DB2 命令在数据库的各个分区上被执行,而无需分别对每个分区重复发出相同的命令。另外在 DB2 中,启用了前滚数据恢复模式的数据库,使用的是归档日志方式,而非缺省的循环日志方式。这样,在进行恢复 *** 作时,可在利用 RESTORE 命令恢复了数据库或表空间的备份后,再通过前滚命令(ROLLFORWARD)命令前滚归档日志中的事务,恢复数据库备份时间点之后提交的事务,最大程度的保护数据库的数据。与备份和恢复命令不同的是,前滚命令仅能通过在分区数据库的编目分区上运行,来实现数据库各分区的前滚 *** 作。下面就以一个启用了前滚恢复模式的分区数据库 SAMPLE 为例介绍其备份、恢复以及前滚 *** 作的具体步骤。这里假设该数据库创建在一台服务器上,具有四硬盘数据恢复个分区,其编目分区为0号分区。一 对分区数据库的备份 *** 作:前面已经介绍了,备份 *** 作仅作用于分区数据库的当前分区,所以要使用“db2_all”的命令实现对所有分区进行备份(这里使用联机备份方式),即:db2_all "db2 backup db sample online" 但是上述命令对各分区的备份是以串行方式进行的,为提高备份 *** 作的性能,还有一种可使分区间以并行方式进行的方法。即在上述命令的 DB2 命令前加上以下选项来实现命令的并行:<<+分区号< :表示后续命令作用于该分区。<<-分区号< :表示后续命令作用于除该分区之外的其它分区。||<<-分区号< 或 <<-分区号; :表示后续命令作用数据恢复于除该分区之外的其它分区,并且是以并行方式进行的。但由于备份和恢复 *** 作要求独占编目分区,因此在对其它分区进行并行方式的备份 *** 作之前,首先必须完成该分区的备份 *** 作。其方法为:db2_all "<<+0< db2 backup db sample online" -- 对编目分区的备份db2_all "||<<-0< db2 backup db sample online" -- 对其它分区硬盘数据恢复的并行备份注:分区数据库的备份结束后会为每个分区都产生一个备份映象文件。

Linux, 环境, 数据库Linux, 数据库, 环境

通过如下备份脚本备份的数据库进行恢复

备份脚本:

 /home/db2admin/sqllib/db2profile  db2 backup db datedb online to /dbbackup/date include logs  cd /dbbackup/datetoday=`date +”%Y%m%d”`  file1=”$today”  ftpfile=`ls $file1`  echo $ftpfile  lftp -c “open ftp地址;user 用户名密码@\$0;put $ftpfile”  find /dbbackup/date -ctime +15 -exec rm {} \; 

恢复命令:

通过root命令登录到服务器上后切换到数据库用户名下用su – db2admin命令。

进入到备份文件存放目录即可。

在弄明白什么是重定向恢复之前,需要知道数据库的文件构成,如果您对这一块比较熟悉,可以直接跳到第一条分割线:

首先,一个DB2数据库的文件是由两分部构成的:表空间容器和数据库文件,容器就是真正存放用户数据的地方,是创建表空间时定义的;数据库文件则包括了缓冲池信息文件、数据库配置文件、历史文件、日志控制文件等。

问题是,如何定义表空间容器以及数据库文件所在的路径呢?答:是create database以及create tablespace的时候的参数决定的:

1 如果CREATE DATABASE的时候指定了 AUTOMATIC STORAGE NO:

没有指定ON path,那么数据库文件会被创建在数据库管理器配置文件dftdbpath指定的目录里;

若指定了ON path,那么数据库文件会被创建在ON指定的path里。

2 如果CREATE DATABASE的时候指定了 AUTOMATIC STORAGE YES或者根本没有指定AUTOMATIC STORAGE:

21 没有指定ON path, 那么数据库文件和IBMSTOGROUP都会被创建/指定在dftdbpath指定的目录里

22 若指定了ON path, 这个path可以指定多个路径。 IBMSTOGROUP就使用这些路径,表空间容器路径解决了,数据库文件在哪里呢?这取决于DBPATH ON 参数:

没有指定DBPATH ON,数据库文件会被放在ON path指定的第一个路径里。

若指定了DBPATH ON, 数据库文件会放在这个路径下。

下面正式进入重定向复原,首先是什么情况下需要重定向恢复?

在下列任何情况下,请使用重定向复原 *** 作:

--如果要将备份映像复原到不同于源机器的目标机器

--如果要将表空间容器复原到另一个物理位置

--如果复原 *** 作由于一个或多个容器不可访问而失败

--如果要重新定义已定义的存储器组的路径

这儿我举一个例子,尽可能地将上面几种情况都包括了,假设我们有如下创建数据库以及表空间的命令:

dbm cfg: Default database path (DFTDBPATH) = /home/db2users/e105q6a

$ db2 "create db test"

$ db2 "connect to test"

$ db2 "create STOGROUP MQSGROUP ON '/home/db2users/e105q6a/conpath1', '/home/db2users/e105q6a/conpath2'"

$ db2 "create user temporary tablespace usrtmp1 managed by automatic storage"

$ db2 "create regular tablespace rglrtbs1 managed by automatic storage USING STOGROUP MQSGROUP"

$ db2 "create tablespace tbs1 managed by system using ('/home/db2users/e105q6a/path1')"

$ db2 "create tablespace tbs2 managed by database using (file 'con2' 4000)"

那么数据库文件、storage group以及各个表空间的容器路径如下:

数据库文件/数据库目录:

/home/db2users/e105q6a

Storage Group:

$ db2 "SELECT VARCHAR(STORAGE_GROUP_NAME, 15) AS STOGROUP, STORAGE_GROUP_ID, VARCHAR(DB_STORAGE_PATH, 40) AS STORAGE_PATH FROM TABLE(ADMIN_GET_STORAGE_PATHS('',-1)) AS T"

STOGROUP STORAGE_GROUP_ID STORAGE_PATH

---------------- ---------------- ----------------------------------------

IBMSTOGROUP 0 /home/db2users/e105q6a

MQSGROUP 1 /home/db2users/e105q6a/conpath1

MQSGROUP 1 /home/db2users/e105q6a/conpath2

3 record(s) selected

表空间容器(我精简了输出):

$ db2pd -db test -tab

Database Member 0 -- Database TEST -- Active -- Up 0 days 00:16:02 -- Date 2017-02-25-102854331489

Tablespace Configuration:

Id AS AR Type Content SGID Name Type Container

0 Yes Yes DMS Regular 0 SYSCATSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000000/C0000000CAT

1 Yes No SMS SysTmp 0 TEMPSPACE1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000001/C0000000TMP

2 Yes Yes DMS Large 0 USERSPACE1 File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000002/C0000000LRG

3 Yes Yes DMS Large 0 SYSTOOLSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000003/C0000000LRG

4 Yes No SMS UsrTmp 0 USRTMP1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000004/C0000000UTM

5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath1/e105q6a/NODE0000/TEST/T0000005/C0000000USR

5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath2/e105q6a/NODE0000/TEST/T0000005/C0000001USR

6 No No SMS Regular - TBS1 Path /home/db2users/e105q6a/path1

7 No No DMS Large - TBS2 File /home/db2users/e105q6a/e105q6a/NODE0000/SQL00001/con2

----

以上面的数据库为例,假设想要通过重定向恢复达到以下目的:

1)把数据库文件路径换为/home/db2users/e105q6a/targetdbdir

2) 把IBMSTOGROUP的路径换为/home/db2users/e105q6a/targetstgrpsystem

3)把MQSGROUP的路径换为/home/db2users/e105q6a/targetstgrpuser1, /home/db2users/e105q6a/targetstgrpuser2 和/home/db2users/e105q6a/targetstgrpuser3

4)把表空间tbs1路径换为:/home/db2users/e105q6a/targetpath1

5)把表空间tbs2路径换为:/home/db2users/e105q6a/targetcon2, 并将大小改为5000

要先通过"db2 drop db test"删掉数据库(模拟恢复到另一个机器上),之后针对上面这几个需求,相应的 *** 作如下:

1)$ db2 "restore db test to '/home/db2users/e105q6a/targetdbdir' redirect without prompting"

2)$ db2 "SET STOGROUP PATHS FOR IBMSTOGROUP ON '/home/db2users/e105q6a/targetstgrpsystem'"

3)$ db2 "SET STOGROUP PATHS FOR MQSGROUP ON '/home/db2users/e105q6a/targetstgrpuser1', '/home/db2users/e105q6a/targetstgrpuser2', '/home/db2users/e105q6a/targetstgrpuser3' "

4)$ db2 "set tablespace containers for 6 using (path '/home/db2users/e105q6a/targetpath1')"

5)$ db2 "set tablespace containers for 7 using (file '/home/db2users/e105q6a/targetcon2' 5000)"

最后发出db2 restore db test continue的命令,完成重定向恢复。

1 首先数据库要可以前滚恢复(数据库配置参数logretain或userexit打开)。

db2 connect to

dbname

db2 update db cfg using logretain on

db2 backup db dbname

(当打开归档日志后,该数据库会处于rollforward pending状态,所以要做一次全备份)

2 对要实施Drop Table Recovery的表空间(限regular tablespace),执行:

db2 "alter

tablespace 表空间名称 dropped table recovery on "

3 用 list history dropped table all for 数据库名 得到删除表的tableid(例如

0000000000006d0000020003)和表结构的生成语句(DDL),记录tableid和该语句以便恢复。之后,用drop命令删除的表中的数据可以在前滚恢复时导出。

db2

list history dropped table all for dbname

4 恢复数据库后,如果想恢复已删除的表,在前滚时加recover dropped table tableid to

目标目录。在该目录下被删除的表中的数据导出。利用上面提到表结构生成语句生成被删除了的表,然后用import命令将数据导入表中。

db2

restore db dbname tablespace(tablespacename) without rolling forward without

prompting

db2 "rollforward db dbname to end of logs and stop

tablespace(tablespacename) recover dropped table table id to path "

cd

path

利用 db2 list history dropped table all for dbname

查出的表结构生成语句生成被删除了的表

db2 import from data of del insert into tablename

登录

db2 在线备份和离线备份 的注意事项 原创

2008-07-04 17:44:00

WorldWelcome

码龄16年

关注

db2在线备份和离线备份的区别

1)一般默认建立一个db2数据库是不支持在线备份的(在DB2控制中心里的)

    如果要让一个DB2数据库支持在线备份的话,update db cfg for sampledb using logretain=on serexit=on,trackmode=on

 2)如果一个db2数据库同时支持在线备份和离线备份的话,那么在备份的时候要小心,如果是要做在线备份,那么必须把日志要单独拷贝出来。否则无法回滚,也就无法使用。

3) 离线备份后恢复的时候,加上参数without rollforward

4) 在线备份后,必须rollforward to

5) force application stop 命令 其实跟离线备份/在线备份都没有什么关系。

只能用

db2look

+db2move

进行迁移。

1提取DDL

用如下命令

db2look

-d

yn

-e

-l

-o

db2look_ynddl

//提取出

yn(云南)

这个数据库

所有用户对象,包括表空间等。

2用db2move

导出数据

如下

如你在

db2inist1

用户目录下

建立一个

data

目录

然后执行

db2move

yn

export

在data

目录下

会有好多

后缀名为ixf

和msg

的文件,其中ixf为数据表文件,msg后缀的为消息文件,其中最重要的

是db2movelst

存放导出表和消息文件的对应关系。

3去windows

下建立一个数据库

db2

create

db

yn

pagesize

8

k”

//这里的pagesize需要和

ddl的统一

然后修改

ynddl

文件下

Linux下面

的路径

替换为Windows

的路径然后执行db2

-tvf

ynddl

4导入数据库

db2move

yn

load

其中会生成

一个loadout的文件

记录错误信息或者

导入失败的表

,如加载了多少行,拒绝多少行

等。

5查看loadout

找到那些导入不成功的进行

处理,然后倒入。然后进行完整性约束

这些检查。如有问题

Q

我吧。

以上就是关于Window下备份的DB2数据库,在Linux下怎么恢复全部的内容,包括:Window下备份的DB2数据库,在Linux下怎么恢复、DB2 分区数据库备份与恢复 *** 作如何进行 (1)、如何在Linux下实现DB2数据库备份和恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10184306.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存