AIX迁移db2数据库表结构和表数据

关于db2数据库迁移:

一、原数据库所做操作:

  • 获取表结构:db2look -d 数据库名  -u user -e -o dbname.sql
  • 导出表数据:db2move 数据库名 export
  • ftp到目标数据库

二、目标数据库操作:

  • 创建group:mkgroup db2grp1     
  • 在/home目录创建db2inst1用户文件夹:mkdir db2inst1
  • 在/home目录创建db2fenc1用户文件夹:mkdir db2fenc1
  • 创建用户:useradd -g db2grp1 -d /home/db2inst1 db2inst1
  • 创建用户:useradd -g db2grp1 -d /home/db2ifenc1 db2fenc1
  • 在/home目录下执行:ls -lrt,查看新建的两个用户是否还在system群组下,不在db2grp1群组下的话执行:

      chown -R db2inst1:db2grp1 db2inst1 

      chown -R db2fenc1:db2fgrp1 db2fenc1

  • 创建裸设备,用于放置表空间和索引空间:

    mklv -t raw -y dbdat4k_lv rootvg 20 

    mklv -t raw -y dbidx4k_lv rootvg 10 

    mklv -t raw -y dbdat8k_lv rootvg 20 

    mklv -t raw -y dbidx8k_lv rootvg 10 

  • 对数据库实例用户授权使用裸设备:

    cd /dev

    chown -R db2inst1:db2grp1   rdbdat4k_lv  rdbidx4k_lv  rdbdat8k_lv  rdbidx8k_lv 

  • 创建db2实例

    cd /opt/IBM/db2/V9.5/instance

    ./db2icrt  -u db2fenc1 db2inst1

    注:创建过程中出现两次错误,第一次是因为用户db2inst1和db2fenc1不在db2grp1群组下,在system下;第二次错误看日志      报磁盘空间不足;

  • 创建实例成功后,进入用户模式db2inst1:su - db2inst1
  • 执行db2start报license错误:

     license文件一般在/tmp目录:cd /tmp

     查找license文件所在目录,并进入那个目录:find . -name db2ese_c.cli 

     添加license:db2licm -a db2ese_c.cli 

  • license添加成功后,启动db2:db2start
  • 创建数据库:db2 create db dbname using codeset utf-8 territory cn
  • 创建bufferpool:db2 CREATE BUFFERPOOL BP_4K 1000 PAGESIZE 4K
  • 创建表空间和索引空间

    db2 "CREATE TABLESPACE DMS_DAT4K PAGESIZE 4096 MANAGED BY DATABASE USING (DEVICE '/dev/rdbdat4k_lv      ' 100000) BUFFERPOOL BP_4K"

   ...其它类似

  • 连接数据库并设置密码:db2 connect to 数据库名 user 用户名 using new <new password> confirm <new password again>
  • 设置db2set:

    对比按照原数据库设置:

    db2set DB2COMM=tcpip

    ....等等

  • 对用户进行授权:db2 grant dbadm on database to user 用户名
  • 导入表结构:db2 -tvf dbname.sql

    注:dbname.sql是原数据库导出的表结构文件;在原数据库创建了表空间,迁移的数据没有创建表空间,使用默认空间的情况        下,需要将dbname.sql中建表语句最后的那一句使用表空间的语句删除掉,用vi的替换命令全文件用空格替换                              (:%s/表空间语句/ /g);

  • 查看导入表结构是否成功:db2 list tables
  • 导入表数据:db2move 数据库名 import -u 用户名 -p 密码   (在表数据的文件夹下执行,如果失败将文件拷贝到/home/db2inst1/目录下,然后运行)
  • 查看当前db2实例分配的端口范围:cat /etc/services  (看最底下db2inst1相关的:如端口是从60010~60014)
  • 查看dbm远程端口是否配置:db2 get dbm cfg | grep SVCENAME
  • 配置dbm端口:db2 update dbm cfg using SVCENAME 60010
  • 关闭数据库:db2stop force
  • 启动数据库:db2start
  • 查看端口是否在监听:netstat -an | grep 60010

三、重建远程客户端编目

  • 查看当前节点编目:db2 list node directory
  • 删除当前节点的编目:db2 uncatalog node nodename  (nodename为查看的数据库编目节点)
  • 创建新的节点编目,连接新的数据库IP和端口: db2 catalog tcpip node nodeName remote IP server 60010(nodeName 与删除的节点名一致)
  • 查看数据库编目:db2 list db directory
  • 删除数据库编目:db2 uncatalog db dbAlisName
  • 新建数据库编目关联node:db2 catalog db dbName as dbAlisName at node nodeName (创建的最好与删除的dbName、dbAlisName 一致)
  • db2 connect to dbname user 用户名 using 密码
  • 大功告成了

四、本篇幅没有将AIX上安装db2,以及表空间和bufferpools的设置,以及一些db2参数的配置,如db cfg和dbm cfg 

     

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值