db2数据库备份还原问题

bba1116 2007-11-23 10:56:39
我们现在有个系统用到了db2数据库,我现在想对表数据先进行备份,然后要对数据进行一些测试计算操作,最后要把这备份还原回来(表很多,有100多张,不能单个export出来)。

我查了一下资料,有两种方法:
1、是用db2move export进行备份,然后用db2move import 或者db2move load进行还原。
2、db2 backup db进行备份,db2 restore db进行还原。
但是我看了一些资料说db2move容易出现各种各样的问题,因为是生产环境,我又不敢随便乱操作了。

烦请各位指点一下,用什么操作命令进行备份还原为好?
能具体写一下操作命令吗,我看了一些每个命令有很多参数,我也不知道该用哪些参数为好?
...全文
571 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuqiong 2007-11-26
  • 打赏
  • 举报
回复
db2move只备份了数据.
如果你担心出错.用楼上的方法,对整个数据库环境都进行备份.
littleboys 2007-11-23
  • 打赏
  • 举报
回复
以前做的项目的数据库备份和恢复,windows版本db2 7.2
你可以在新建立一个数据库测试一下。

DB2数据库备份与恢复
运用一个实例说明数据库的备份与恢复操作,实例将数据库备份在D盘,并从D盘恢复:
1.备份数据库
D:\>DB2 BACKUP DB SAMPLES

备份成功。此备份映象的时间戳记是:20050122134413

1.1 除去数据库,再建立同名数据库时候,会提示错误,需要删除数据库
D:\>db2 catalog db dbname on d:
SQL1005N 在本地数据库目录或系统数据库目录中已经存在数据库别名 "dbname" 。

D:\>db2 drop db dbname
DB20000I DROP DATABASE 命令成功完成。
2.恢复
2.1 恢复到一个新数据库,恢复过程自动创建数据库
拷贝备份文件(dbname.0)到D 盘
D:\>DB2 RESTORE DB dbname INTO dbname WITHOUT ROLLING FORWARD WITHOUT PROMPTING

2.2 恢复成功,但是有错误 (57019)
D:\>db2 connect to dbname user db2admin using xxxxxx
SQL1117N 由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "dbname"。
SQLSTATE=57019

D:\>db2 rollforward db dbname to end of logs

前滚状态

输入数据库别名 = dbname
节点数已返回状态 = 1

节点号 = 0
前滚状态 = DB 工作
下一个要读取的日志文件 = S0000000.LOG
已处理的日志文件 = -
上次提交的事务 = 2005-03-14-17.47.33.000000

DB20000I ROLLFORWARD 命令成功完成。

D:\>db2 connect to dbname user db2admin using xxxxx
SQL1117N 由于 ROLL-FORWARD PENDING,不能连接或激活数据库 "dbname"。
SQLSTATE=57019

D:\>db2 rollforward db dbname complete

前滚状态

输入数据库别名 = dbname
节点数已返回状态 = 1

节点号 = 0
前滚状态 = 未暂挂
下一个要读取的日志文件 =
已处理的日志文件 = -
上次提交的事务 = 2005-03-14-17.47.33.000000

DB20000I ROLLFORWARD 命令成功完成。

D:\>db2 connect to dbname user db2admin using xxxxxx

数据库连接信息

数据库服务器 = DB2/NT 7.2.1
SQL 授权标识 = DB2ADMIN
本地数据库别名 = dbname


D:\>db2 select count(*) from t_user

完成!!!!




2.2 恢复到一个原有数据库
D:\>DB2 RESTORE DB SAMPLES USER USERNAME USING PASSWORD

如果该条语句执行时出现:“容器路径不正确”提示,则采取重定向恢复。
3.重定向恢复
3.1
D:\>DB2 RESTORE DB SAMPLES INTO NEWDB REDIRECT
SQL1277N 恢复已检测到一个或多个表空间容器不可访问,或者已将它们的状态设置为“必须定义存储器”。
DB20000I RESTORE DATABASE 命令成功完成。
3.2列出新数据库的各个表空间
D:\>DB2 LIST TABLESPACES SHOW DETAIL

当前数据库的表空间

表空间标识 = 0
名称 = SYSCATSPACE
类型 = 系统管理的空间
内容 = 任何数据
状态 = 0x2001100
详细说明:
恢复暂挂
必须定义内存
可以定义内存

表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理的空间
内容 = 系统临时数据
状态 = 0x2001100
详细说明:
恢复暂挂
必须定义内存
可以定义内存

表空间标识 = 2
名称 = USERSPACE1
类型 = 系统管理的空间
内容 = 任何数据
状态 = 0x2001100
详细说明:
恢复暂挂
必须定义内存
可以定义内存

表空间标识 = 3
名称 = QQ
类型 = 数据库管理的空间
内容 = 任何数据
状态 = 0x2001100
详细说明:
恢复暂挂
必须定义内存
可以定义内存

SQL1350N 应用程序未处于正确状态而不能处理此请求。原因码 = "1"。
3.3根据各表空间的性质重新指定容器
C:\>DB2 LIST TABLESPACE CONTAINERS FOR 0

表空间 0 的表空间容器

容器标识 = 0
名称 = C:\DB2\NODE0000\SQL00001\SQLT0000.0
类型 = 路径

D:\>DB2 SET TABLESPACE CONTAINERS FOR 0 USING (PATH "D:\NEWDB\NODE0000\ SQL00001\SQLT0000.0" )
DB20000I SET TABLESPACE CONTAINERS 命令成功完成。

C:\>DB2 LIST TABLESPACE CONTAINERS FOR 1

表空间 1 的表空间容器

容器标识 = 0
名称 = C:\DB2\NODE0000\SQL00001\SQLT0001.0
类型 = 路径
D:\>DB2 SET TABLESPACE CONTAINERS FOR 1 USING (PATH "D:\NEWDB\NODE0000\SQL00001\SQLT0001.0" )
DB20000I SET TABLESPACE CONTAINERS 命令成功完成。

C:\>DB2 LIST TABLESPACE CONTAINERS FOR 3

表空间 3 的表空间容器

容器标识 = 0
名称 = D:\ww
类型 = 文件
D:\>DB2 SET TABLESPACE CONTAINERS FOR 3 USING (FILE "D:\NEWDB\WW" 5000 )
DB20000I SET TABLESPACE CONTAINERS 命令成功完成。
4.继续恢复
D:\>DB2 RESTORE DB SAMPLES CONTINUE
DB20000I RESTORE DATABASE 命令成功完成。
5.测试连接
D:\>DB2 CONNECT TO NEWDB

数据库连接信息

数据库服务器 = DB2/NT 7.2.1
SQL 授权标识 = ADMINIST...
本地数据库别名 = NEWDB


yangxiao_jiang 2007-11-23
  • 打赏
  • 举报
回复
这种需求,你们为什么不克隆一个库,然后再在克隆的库上进行处理,生产环境的东西就不需要动了

5,891

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧