DB2中,怎么把A数据库的完整备份恢复至B数据库中!

DB2中,怎么把A数据库的完整备份恢复至B数据库中!,第1张

backup命令备份出来的数据库,比如simpleA,只能回复成simpleA的数据库;

按照你的需求,可以使用db2move的方式,进行导入和导出,这样可以实现把A数据库的完整备份恢复至B数据库中。

命令具体使用方法:

cd /opt/backup/

mkdir 2011-11-16

cd 2011-11-16

db2move simpleA export -u username -p password ##导出到当前目录

db2move simpleB import -u username -p password ##从当前目录导入

Linux环境下DB2数据库的备份和恢复的实际应用代码如下:

DB2数据库备份脚本:

/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命令。

进入到备份文件存放目录

执行如下命令

[db2admin@localhost db2back]$ db2 restore db datedb from /hom

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

首先,一个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

以下的文章主要向大家讲述的是在Linux *** 作系统的环境下实现DB2数据库备份和恢复的 *** 作步骤,以下就是对Lin *** 作系统的环境下实现DB2数据库备份和恢复的 *** 作步骤的描述,希望在你今后的学习中会有所帮助。 通过如下备份脚本备份的数据库进行恢复 备份脚本: /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命令。 进入到备份文件存放目录 执行如下命令 [db2admin@localhost db2back]$ db2 restore db datedb from /hom 以上的相关内容就是对Linux环境下DB2数据库备份与恢复的介绍,望你能有所收获。

如何对DB2数据库进行异机恢复

方法: 1。 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%" mysql -u root -pvmwaremysql>use mysql;mys

以上就是关于DB2中,怎么把A数据库的完整备份恢复至B数据库中!全部的内容,包括:DB2中,怎么把A数据库的完整备份恢复至B数据库中!、如何在Linux下实现DB2数据库备份和恢复、db2有表空间的LRG跟FLG文件,能恢复出来吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9482145.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存