经常有同事问到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/