
按照你的需求,可以使用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 ##从当前目录导入
看一下表空间是不是挂起了,按照如下步骤:1、db2 list tablespaces show detail,可能的输出如下:
表空间标识= 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x0000
详细解释:
装入暂挂
总页数 = 1652
可用页数 = 1652
已用页数 = 1652
空闲页数 = 不适用
高水位标记(页) = 不适用
页大小(字节) = 4096
盘区大小(页) = 32
预读取大小(页) = 32
容器数 = 1
状态更改表空间标识 = 2
状态更改对象标识 = 59
这样的话,表明id为59的表使表空间挂起了
2、下面的语句查看引起挂起的表名
select tabname,tableid from syscat.tables where tableid=59
3、你这种情况有可能是备份文件里面指定的表空间容器没有创建,所以导致表空间无法恢复,可以用如下命令查看出有问题的表空间的容器,手动创建好,再执行恢复
db2 list tablespace containers for 1 show detail,其中for后面的1表示的是表空间标识,可能输出为:
表空间 1 的表空间容器
容器标识= 0
名称= C:\DB2\NODE0000\SQL00001\SQLT0001.0
类型= 路径
总计页数= 1
可用页数= 1
可存取 = 是
则按照这个容器的信息手动创建容器后执行恢复试一下
只能用db2look
+db2move
进行迁移。
1.提取ddl
用如下命令
db2look
-d
yn
-e
-l
-o
db2look_yn.ddl
//提取出
yn(云南)
这个数据库
所有用户对象,包括表空间等。
2.用db2move
导出数据
如下
如你在
db2inist1
用户目录下
建立一个
data
目录
然后执行
db2move
yn
export
在data
目录下
会有好多
后缀名为ixf
和msg
的文件,其中ixf为数据表文件,msg后缀的为消息文件,其中最重要的
是db2move.lst
存放导出表和消息文件的对应关系。
3.去windows
下建立一个数据库
db2
“
create
db
yn
pagesize
8
k”
//这里的pagesize需要和
ddl的统一
然后修改
yn.ddl
文件下
把
linux下面
的路径
替换为windows
的路径然后执行db2
-tvf
yn.ddl
4.导入数据库
db2move
yn
load
其中会生成
一个load.out的文件
记录错误信息或者
导入失败的表
,如加载了多少行,拒绝多少行
等。
5.查看load.out
找到那些导入不成功的进行
处理,然后倒入。然后进行完整性约束
这些检查。如有问题
q
我吧。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)