DB2导入恢复

经常有同事问到DB2的导入问题,所以就把操作详细写下,以供有需要的时候查阅。

一、将导出的文件解压,放在db2inst1用户有读写权限的目录中。Linux下的解压命令:tar zxfv exoadb0303.tar.gz

[@more@]

Linux中可以通过命令对整个目录下的文件授权给所有用户:

chmod –R 777 /home/db2inst/data

这样db2inst1就可以对备份数据进行导入。

二、建立新数据库

主要命令:db2 create db exoa

如果数据库exoa已经存在,可以使用命令删除

db2 drop db exoa

EXOA要求用GBK的Codeset:

Db2 create db exoa using codeset gbk territory cn

DB20000I CREATE DATABASE 命令成功完成。

三、执行 exoa.sql 脚本建立数据库

主要命令:

db2 -tvf exoa.sql

保存日志:db2 -tvf exoa.sql|tee out,日志名out

这里有个要注意的地方,在exoa.sql中,创建表空间所存放的目录要先建好,并把权限分配给db2inst1。要不然表空间会创建失败。

例如在exoa.sql中创建表空间的语句中写的表空间存放目录为/db2data,则:

需要先建立db2inst1权限的目录/db2data,因为建立表空间时,表空间的存储路径就是这个。

进入exoa.sql目录下,执行-tvf命令,建议生成日志文件out

[db2inst1@devsvr2 exoadb0303]$ db2 -tvf exoa.sql |out

四:执行 db2move 导入数据

主要命令:db2move exoa load

建立数据结构后,就把数据导入

[db2inst1@devsvr2 exoadb0303]$ db2move exoa load

五:检查一致性

主要命令:

db2 set integrity for exoa.UM_USER immediate checked

[db2inst1@devsvr2 exoadb0303]$ db2 connect to exoa

数据库连接信息

数据库服务器 = DB2/LINUX 8.2.0

SQL 授权标识 = DB2INST1

本地数据库别名 = EXOA

利用 sql 语句得到要检查的表的执行语句

主要命令:

db2 "select 'db2 set integrity for exoa'||TABNAME||' immediate checked' from syscat.tables where TABSCHEMA='EXOA' and STATUS='C'"

[db2inst1@devsvr2 exoadb0303]$ db2 "select 'db2 set integrity for exoa'||TABNAME||' immediate checked' from syscat.tables where TABSCHEMA='EXOA' and STATUS='C'"

1

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

db2 set integrity for exoa.CAL_AUTH immediate checked

db2 set integrity for exoa.EXOAATTRIBUTEREFERENCE immediate

checked

……

db2 set integrity for exoa.UM_ORGANIZATION immediate checked

db2 set integrity for exoa.UM_USER immediate checked

81 条记录已选择。

执行这 81 条语句,语句有可能报错

主要命令:

db2 set integrity for exoa. CAL_AUTH immediate checked

[db2inst1@devsvr2 exoadb0303]$ db2 set integrity for exoa.

CAL_AUTH immediate checked

DB20000I SQL 命令成功完成。

[db2inst1@devsvr2 exoadb0303]$ db2 set integrity for exoa.

EXOAATTRIBUTEREFERENCE immediate checked

DB20000I SQL 命令成功完成。

…………

如果报错,再反复执行这些语句直到下面的语句结果返回 0 条记录

[db2inst1@devsvr2 exoadb0303]$ db2 "select 'db2 set integrity

for exoa.'||TABNAME||' immediate checked' from syscat.tables

where TABSCHEMA='EXOA' and STATUS='C'"

1

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

0 条记录已选择。

六:在操作系统中建立用户

[root@devsvr2 root]# useradd exoa

[root@devsvr2 root]# passwd exoa

Changing password for user exoa.

New password:

BAD PASSWORD: it is too short

Retype new password:

passwd: all authentication tokens updated successfully.

七:

exoa 用户授权

主要命令:

db2 GRANT DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT ON DATABASE TO USER EXOA

db2 GRANT CREATEIN,DROPIN,ALTERIN ON SCHEMA EXOA TO USER EXOA

[db2inst1@devsvr2 db2inst1]$ db2 connect to exoa

数据库连接信息

数据库服务器 = DB2/LINUX 8.2.0

SQL 授权标识 = DB2INST1

本地数据库别名 = EXOA

[db2inst1@devsvr2 db2inst1]$ db2 GRANT

DBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,

IMPLICIT_SCHEMA,LOAD,CREATE_EXTERNAL_ROUTINE,QUIESCE_CONNECT

ON DATABASE TO USER EXOA;

DB20000I SQL 命令成功完成。

[db2inst1@devsvr2 db2inst1]$ db2 GRANT

CREATEIN,DROPIN,ALTERIN ON SCHEMA EXOA TO USER EXOA

DB20000I SQL 命令成功完成。

[db2inst1@devsvr2 db2inst1]$ db2 connect to exoa user exoa using

exoa

数据库连接信息

数据库服务器 = DB2/LINUX 8.2.0

SQL 授权标识 = EXOA

本地数据库别名 = EXOA

[db2inst1@devsvr2 db2inst1]$ db2 "select count(*) from um_user"

1

-----------

1529

1 条记录已选择。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18933644/viewspace-1017238/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/18933644/viewspace-1017238/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值