db2 db2look/db2move导入和导出

时间:2022-10-12 12:20:14

一、概述

使用db2look提取数据库结构DDL
使用db2move export导出全部数据

使用db2 -tvf test.sql导入表结构
使用db2move import导入全部数据

二、操作

1、导出

1)创建备份目录,必须是db2inst1创建
su - db2inst1
mkdir /tmp/backup && cd /tmp/backup
2)首先连接到要导出的数据库上,如本例导出数据库zhangsan :
db2 connect to zhangsan user zhangsan using zhangsan
其中的参数user 后面跟指定用户, using 后面指定用户的密码,不指定时会使用默认用户进行登录;
3)使用 db2look 导出数据库表空间、表结构、索引、视图
db2look -d zhangsan -e -o zhangsan.sql -i zhangsan -w zhangsan
(-e 表结构 ,-l 表空间 ,-o 文件格式)
-d 指定导出的数据库实例名
-z 指定导出数据库的模式名
-l –e 固定参数1l-
-o 指定导出的文件名和文件格式
-i 指定导出的用户名
-w 指定导出的用户密码
命令中的参数 – o 意思是将数据对象的定义导出到指定的文件中;
其中的参数-i 后面跟指定用户, -w 后面指定用户的密码,不指定时会使用默认用户进行登录;
4)使用db2move 命令导出数据库对象的数据
db2move zhangsan export -u zhangsan -p zhangsan
这将会把数据库zhangsan中的全部数据提取到当前目录中。每个表的内容都存储在一个.ixf文件中,每个.ixf文件都有一个与之相对应的.msg文件,
.msg文件是描述从表中导出数据时的信息的。另外还有两个文件,
db2move.lst用来记录.ixf文件、.msg文件与表的一一对应关系,
EXPORT.out记录的是导出数据时的屏幕输出。
5)备份完会有三个特殊的文件
zhangsan.sql: 创建数据对象的脚本;
export.out: 数据库导出日志;
db2move.lst: 包括导出的对象名称和各个对象所属的模式

2、数据处理

1、数据库结构处理
将zhangsan.sql使用vi打开,将开头一行connect to给注释掉,默认是连接备份的那个库
-- connect to
2、查看表结构中使用到的表空间
cat zhangsan.sql|grep IN ##会显示每张表需要的表空间,如果新库没有就得导入之前提前创建
3、表结构外键汇总
将zhangsan.sql脚本中创建外键的语句剪切到另一个脚本中 (create_foreign.sql);
如果导入数据时,在没有导入主表数据之前,导入对应外键表数据时会出现错误,所以需要在成功导入外数据后,在进行外键的创建
4、如果新建表名和备份表名不一致,修改db2move.lst
将文件中的ZHANGSAN集体替换为新库名

3、创建用户

db2的库名和管理用户尽量使用同一个名字
1、创建用户并设置密码
groupadd wangwu
useradd -g wangwu -d /home/wangwu -m wangwu
passwd wangwu
2、创建数据库
db2 create database wangwu
3、创建表空间,此处只创建一个作为演示
db2可能会将业务数据和索引放到不同的表空间,在原库使用db2 list tablespaces和新库进行对比
创建buffer pool
db2 connect to wangwu #此处只能这样子连接创建buffer pool,如果使用wangwu用户都会报错,即使将权限授予wangwu了
db2 create BUFFERPOOL bigbuffer SIZE 4000 PAGESIZE 32K
创建表空间
db2 "create tablespace newtbs04 pagesize 32k managed by system using
('/home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000001/test.TMP') BUFFERPOOL bigbuffer"
newtbs04----代表表空间名
pagesize 32k 32可以指定为8k 16k 32k
bigbuffer---代表buffer pool名
扩展表空间
db2 alter tabblespace newtbs04 extend(all 1024M)
4、授权wangwu用户
db2 grant dbadm on database to user wangwu

4、导入

1、使用业务用户连接
db2 connect to wangwu user wangwu using wangwu
2、恢复表结构
db2 -tvf zhangsan.sql
3、导入数据
db2move wangwu import -io insert -u wangwu -p wangwu
4、如果有外键sql倒入
db2 -tvf create_foreign.sql