分享
 
 
 

在Linux平台下进行DB2数据库的迁移

王朝system·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

DB2 Universal Database™(DB2 UDB) 有一对非常有用的工具,可以帮助您实现这种跨平台的备份与恢复功能。db2move 工具利用了 DB2 的数据移动工具(export 和 import 或load)来移动数据库表。然而,由于数据库的内容远远不止于用户表,因此您需要使用其他方法在不同的数据库之间迁移其他数据库对象,例如约束、触发器、索引、序列、表空间、缓冲池等。这就是db2look工具出现的原因。使用这个工具,您可以在源数据库中捕获到定义这些对象使用的数据定义语言(DDL),并在目标数据库中使用这些数据定义语言重新创建这些对象。

1、环境说明:

迁移的DB2 数据库的名字叫 sample , SCHEMA也是oatest ,用户名是 oatest

2、导出步骤:

(1) 建立新目录,如果是在 linux 下要注意目录的权限问题,目录应该可以被 db2inst1 用户写访问

[db2inst1@devsvr2 db2inst1]$ pwd

/home/db2inst1

[db2inst1@devsvr2 db2inst1]$ mkdir oatest0303

[db2inst1@devsvr2 db2inst1]$ ls

db2inst1 db2test Desktop oatest0303 sqllib

(2)进入该目录

[db2inst1@devsvr2 db2inst1]$ cd oatest0303/

[db2inst1@devsvr2 oatest0303]$

(3)用数据库抽取工具 db2look 导出数据库结构

主要命令

db2look -d sample -e -z oatest -l -o oatest.sql

[db2inst1@devsvr2 oatest0303]$ db2look -d sample -e -z oatest -l -o oatest.sql

-- 未指定用户标识,db2look 试图使用环境变量 USER

-- USER 是: DB2INST1

-- 指定的模式为: OATEST

-- 创建表的 DDL

-- 联合部分的模式名被忽略

-- 输出被发送到文件: oatest.sql

脚本中包括建立 bufferpool 以及tablespace的 DDL 语句

(4)用 db2move 工具导出数据库数据

主要命令

db2move sample export

[db2inst1@devsvr2 oatest0303]$ db2move sample export

***** DB2MOVE *****

Action: EXPORT

Start time: Sun Mar 5 11:00:52 2006

Connecting to database SAMPLE ... successful! Server: DB2 Common Server V8.2.0

EXPORT: 0 rows from table "OATEST "."ATTACHFILE"

EXPORT: 0 rows from table "OATEST "."BASE"

……

(5)打包压缩该目录 oatest0303/

主要命令:

tar zcvf oatest0303.tar.gz oatest0303/

[db2inst1@devsvr2 oatest0303]$ cd ..

[db2inst1@devsvr2 db2inst1]$ tar zcvf oatest0303.tar.gz oatest0303/

oatest0303/

oatest0303/oatest.sql

oatest0303/EXPORT.out

oatest0303/db2move.lst

oatest0303/tab1.msg

oatest0303/tab1.ixf

……

3、导入步骤

(1)解压

主要命令:

tar zxfv oatest0303.tar.gz

[db2inst1@devsvr2 db2inst1]$ tar zxfv oatest0303.tar.gz

oatest0303/

oatest0303/oatest.sql

oatest0303/EXPORT.out

oatest0303/db2move.lst

……

(2)建立新数据库 db2 create db sample

主要命令:

db2 create db sample

[db2inst1@devsvr2 db2inst1]$ db2 create db sample

DB20000I CREATE DATABASE 命令成功完成。

(3)执行 oatest.sql 脚本建立数据库

主要命令:

db2 -tvf oatest.sql

[db2inst1@devsvr2 db2inst1]$ cd oatest0303

[db2inst1@devsvr2 oatest0303]$ db2 -tvf oatest.sql

……

(4)执行 db2move 导入数据

主要命令:

db2move sample load

[db2inst1@devsvr2 oatest0303]$ db2move sample load

……

* LOAD: table "OATEST "."UM_USER"

-Rows read: 1529

-Loaded: 1529

-Rejected: 0

-Deleted: 0

-Committed: 1529

Disconnecting from database ... successful!

End time: Sun Mar 5 10:24:22 2006

(5)检查一致性

主要命令:

db2 set integrity for oatest.UM_USER immediate checked

[db2inst1@devsvr2 oatest0303]$ db2 connect to sample

数据库连接信息

数据库服务器 = DB2/LINUX 8.2.0

SQL 授权标识 = DB2INST1

本地数据库别名 = SAMPLE

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

oatest.um_user"

1

-----------

SQL0668N 由于表 "OATEST.UM_USER" 上的原因码 "1",所以不允许操作。

SQLSTATE=57016

[db2inst1@devsvr2 oatest0303]$ db2 set integrity for oatest.UM_USER

immediate checked

DB20000I SQL 命令成功完成。

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

oatest.um_user"

1

-----------

1529

1 条记录已选择。

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

主要命令:

db2 "select 'db2 set integrity for oatest.'||TABNAME||' immediatechecked' from syscat.tables where TABSCHEMA='OATEST' and STATUS='C'"

[db2inst1@devsvr2 oatest0303]$ db2 "select 'db2 set

integrity for oatest.'||TABNAME||' immediate checked'

from syscat.tables where TABSCHEMA='OATEST' and STATUS='C'"

1

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

db2 set integrity for oatest.CAL_AUTH immediate checked

……

db2 set integrity for oatest.UM_USER immediate checked

81 条记录已选择。

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

主要命令:

db2 set integrity for oatest. CAL_AUTH immediate checked

[db2inst1@devsvr2 oatest0303]$ db2 set integrity

for oatest.CAL_AUTH immediate checked

DB20000I SQL 命令成功完成。

[db2inst1@devsvr2 oatest0303]$ db2 set integrity

for oatest.UM_USER immediate checked

DB20000I SQL 命令成功完成。

…………

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

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

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

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

1

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

0 条记录已选择。

(6)在操作系统中建立用户

[root@devsvr2 root]# useradd oatest

[root@devsvr2 root]# passwd oatest

Changing password for user oatest.

New password:

BAD PASSWORD: it is too short

Retype new password:

passwd: all authentication tokens updated successfully.

(7)给 oatest 用户授权

主要命令:

db2 GRANTDBADM,CREATETAB,BINDADD,CONNECT,CREATE_NOT_FENCED_ROUTINE,

IMPLICIT_SCHEMA,LOAD,CREAT

E_EXTERNAL_ROUTINE,QUIESCE_CONNECTON DATABASE TO USER OATEST

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

[db2inst1@devsvr2 db2inst1]$ db2 connect to sample

数据库连接信息

数据库服务器 = DB2/LINUX 8.2.0

SQL 授权标识 = DB2INST1

本地数据库别名 = SAMPLE

[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 OATEST;

DB20000I SQL 命令成功完成。

[db2inst1@devsvr2 db2inst1]$ db2 GRANT CREATEIN,

DROPIN,ALTERIN ON SCHEMA OATEST TO USER OATEST

DB20000I SQL 命令成功完成。

[db2inst1@devsvr2 db2inst1]$ db2 connect to sample user oatest using oatest

数据库连接信息

数据库服务器 = DB2/LINUX 8.2.0

SQL 授权标识 =OATSET

本地数据库别名 = SAMPLE

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

1

-----------

1529

1 条记录已选择。

4、说明

(1)在db2数据库中的bufferpool是和内存有关系的,所以你应该根据你的机器内存情况来建立 bufferpool

(2)tablespace 的路径也是和你的应用有关,如果是双机环境应该把表空间建立在共享存储中,你可以根据实际情况来修改上文所说到的 oatest.sql 中的建立 bufferpool 以及 tablespace 的语句。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有