zoukankan      html  css  js  c++  java
  • db2数据库---将数据库从AIX系统迁到Windows系统

    亲测通过命令:

    将db2数据库从AIX系统迁移到Windows系统中(很多现场环境都是用小机,即AIX),不能直接使用备份文件,因为两个系统是不同的
    首先在一台pc机上安装db2数据库,然后通过内网连接到服务器的数据库,具体连接过程如下:
    http://jingyan.baidu.com/article/76a7e409d8f550fc3b6e15dc.html

    连接成功后
    首先进入db2cmd命令操作界面,然后通过cd命令跳转的你想让导出的文件存放的路径下,比如跳转至E盘data文件夹下:
    cd E:data

    然后先用db2move命令导出数据库中的数据
    比如:数据库名为maxdb75 用户和密码都是maximo,则导出命令如下:

    db2move maxdb75 export -u maximo -p maximo > maxdb75data.log

    注:最后的> maxdb75data.log是创建导出日志,并将导出过程记录在内,便于在导出过程中出错时查看出错信息,确定出错位置,当然,你不创建
    导出日志也行,

    接着在这个路径下连接数据

    db2 connect to maxdb75 user maximo using maximo

    看到连接成功就可以接着导出表结构了(别问我如果没连接成功怎么办)

    db2look -d maxdb75 -u maximo -l -a -e -x -o maxdb75ddl.sql > maxdb75ddl.log

    还有一种写法是这样的:

    db2look -d ncdb(要备份的库名) -u db2admin -l -a -e -x -o ncdb.sql -i db2admin -w 123456 > ncdblook.log

    注:-i 和 -w 分别是db2系统用户的用户名和密码,一般好像不需要用到这个写法


    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    上面都是坑,自己挖的坑,怎么滴都得填平

    上述操作只是在本机上测试,但现场是aix,所以上面的导出表结构会报password missing错误,应该用下面这个(网上看的Linux系统应该也可以
    用下面这个)

    db2look -d maxdb -e -z maximo -l -a -e -x -i db2inst1 -w dbmaster.2015 -o maxdbddl.sql > maxdbddl.log

    除了导表结构的时候的这个问题,一般还会碰到一个问题,就是编码方式问题,查看AIX上的db2编码方式,查看方式:

    记住不能再本地的db2数据库命令窗口查看那个是看不了的,目前这边是通过软件连接到AIX上查看的

    db2set -all 结果中有DB2CODEPAGE这一项就是了

    然后导出数据(move)之前要先设置本地的db2数据库编码方式与之相同

    db2set db2codepage=1208(一般都是1208,具体看情况了)

    如果不设置编码,那么可能会碰到警告,也算是错误,就像下面这个

    *** Table "MAXIMO "."CRONTASKPARAM": ERROR 3107. Check message file tab137.msg!
    *** SQL Warning! SQLCODE is 3107
    *** SQL3107W 消息文件中至少有一条警告消息。

    如果不解决,到时再Windows上恢复的时候也是会出问题(好像是找不着表还是找不着数据来着)

    太费时间了,数据库里大概有860+的表,导了差不多一个小时才导了510+,以为是出问题了,终止了导出过程,到时导出数据估计要好几个小时,
    写在这,略做提醒


    数据库恢复

    ========================from yang**
    1、OVERHEAD 以及 TRANSFERRATE -1.00000无法解析,直接指定10.5和0.14。
    2、建表语句中:所有CODEUNITS16去掉,ORGANIZE BY ROW 是10.5的功能,也去掉
    3、windows上恢复时,“数据库上的权限语句”那部分去掉
    4、触发器:在所有REFERENCING前面加上空格 ,REFERENCINGNEW改为 REFERENCING NEW ;NEXTVALFOR改为NEXTVAL FOR ;ASN FOR 改为 AS N FOR
    ;AS NFOR EACH 改为AS N FOR EACH 。
    4、执行顺序为:
    1)space.sql
    2) grantspace.sql
    3) table.sql
    4)granttable.sql
    5)db2move导入数据(必须在触发器之前导入,否则会因为触发器而导致数据导入无效)
    6)trigger.sql
    7)process.sql
    ========================

    首先创建一个数据库,然后导入表结构,然后导入数据

    本次恢复数据库是按上述yang**提供的笔记来恢复的

    步骤5导入数据的注释:
    a)在db2cmd命令窗口通过cd跳转到数据备份文件所在的目录
    b)然后运行数据导入命令:db2move dbname load--------------就是这么简单

     下面附上一些当时执行命令时显示的一些信息:

    说明一下:下面这些信息是我备份自己本机上的数据库时的操作,当时提取现场的数据库库时,由于AIX系统的操作命令并不熟悉,所以当时是通过在本机上建立一个数据库,然后通过内网连接到AIX系统上的数据库,然后再Windows系统上通过db2cmd命令来备份,备份命令和下面记录的基本是一样的

    C:UsersAdministrator>cd d:
    D:

    C:UsersAdministrator>d:

    D:>cd D:database+helptoolDBVisual

    D:database+helptoolDBVisual>db2move maxdb75 export -sn maxdb75 -u maximo -p ma
    ximo

    Application code page not determined, using ANSI codepage 1386

    ***** DB2MOVE *****

    Action: EXPORT

    Start time: Fri Dec 02 09:28:47 2016


    All schema names matching: MAXDB75;

    Connecting to database MAXDB75 ... successful! Server : DB2 Common Server V9.7.
    4

    Binding package automatically ... E:db2DB2DATABNDDB2COMMON.BND ... successfu
    l!

    Binding package automatically ... E:db2DB2DATABNDDB2MOVE.BND ... successful!

    Disconnecting from database ... successful!

    End time: Fri Dec 02 09:28:48 2016

    D:database+helptoolDBVisual>db2 connect to maxdb75 user maximo using maximo

    数据库连接信息

    数据库服务器 = DB2/NT 9.7.4
    SQL 授权标识 = MAXIMO
    本地数据库别名 = MAXDB75


    D:database+helptoolDBVisual>db2look -d maxdb75 -e -a -o db2look_maxdb75_ddl.sq
    l
    -- 为所有创建程序生成统计信息
    -- 正在创建表的 DDL
    -- 输出被发送到文件: db2look_maxdb75_ddl.sql
    -- 正在自动绑定程序包 ...
    -- 绑定成功
    -- 正在自动绑定程序包 ...
    -- 绑定成功

    D:database+helptoolDBVisual>db2look -d maxdb75 -e -a -o db2look_maxdb75_ddl.sq
    l > maxdb75.log
    -- 为所有创建程序生成统计信息
    -- 正在创建表的 DDL
    -- 输出被发送到文件: db2look_maxdb75_ddl.sql

    D:database+helptoolDBVisual>db2look -d maxdb75 -u maximo -l -a -e -x -o maxdb7
    5.sql -i db2admin -w db2admin > maxdb75.log
    -- 为所有创建程序生成统计信息
    -- 创建程序标识被忽略
    -- 正在创建表的 DDL
    -- 输出被发送到文件: maxdb75.sql
    --绑定期间出错

    Error Message =
    SQL0551N "DB2ADMIN" 不具有对对象 "NULLID.DB2L0H00" 执行操作 "EXECUTE"
    的必需权限或特权。 SQLSTATE=42501


    SQLCA
    Size = 136
    SQLCODE = -551
    Tokens = DB2ADMIN ?EXECUTE ?NULLID.DB2L0H00
    RDS fn = SQLRA138
    RC = 0x801A006D = -2145779603
    Reason = 0x0000 = 0
    Reason2 = 0x0000 = 0
    Line # = -20
    Warning flags =


    D:database+helptoolDBVisual>db2look -d maxdb75 -u maximo -l -a -e -x -o maxdb7
    5.sql > maxdb75.log
    -- 为所有创建程序生成统计信息
    -- 创建程序标识被忽略
    -- 正在创建表的 DDL
    -- 输出被发送到文件: maxdb75.sql

  • 相关阅读:
    劳动节CF题总结
    「联合省选 2020 A」作业题 做题心得
    bzoj3784 树上的路径
    [AGC039E] Pairing Points
    [AGC012E] Camel and Oases
    [AGC011F] Train Service Planning
    [AGC039F] Min Product Sum
    Pedersen commitment原理
    标准模型(standard model)与随机语言模型(random oracle model)
    会议论文引用缩写标准 PDF
  • 原文地址:https://www.cnblogs.com/binTke170120/p/6322944.html
Copyright © 2011-2022 走看看