Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1838663
  • 博文数量: 293
  • 博客积分: 10127
  • 博客等级: 上将
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 19:05
文章分类

全部博文(293)

文章存档

2011年(11)

2010年(282)

我的朋友

分类:

2010-11-16 19:50:23

关于数据库迁移,如果操作系统相同,例如从 Windows 系统迁移到 Windows 系统,或者从 AIX 系统迁移到 AIX 系统都比较好处理,一般使用 BACKUP 和 RESTORE 命令就可以进行。当然,有些情况下需要注意表空间重定向的问题。
        
        那么,如果数据库迁移涉及到的操作系统不相同该怎么办呢?BACKUP 和 RESTORE 这个方法就行不通了。DB2 UDB 提供了两个非常实用的工具,一个是数据迁移工具 db2move,另一个是数据字典获取工具 db2look
        
        目前,我进行了一次从 Windows 2003 到 Linux 的 DB2 数据库迁移,以下是详细的操作步骤和部分脚本。希望本文能为大家在不同操作系统之间迁移 DB2 数据库的提供一些指导和帮助。
        
        步骤一:登录 Windows ,使用 db2move 命令将源数据库(htdctr)数据导出至指定的文件夹 G:\db2move\htdctr 下。
        
        命令清单 - 1
        
        C:\Documents and Settings\Administrator>cd /d G:\db2move\htdctr
        
        G:\db2move\htdctr>db2move htdctr export -sn db2admin -u db2admin -p *****
        
        *****  DB2MOVE  *****
        
        Action:      EXPORT
        
        Start time:  Fri Mar 02 10:58:05 2007
        
        All schema names matching:  DB2ADMIN;
        
        Connecting to database HTDCTR ... successful!  Server: DB2 Common Server V8.2.4
        
        EXPORT:      3 rows from table "DB2ADMIN"."APP_REG"
        EXPORT:      0 rows from table "DB2ADMIN"."APP_TEXT"
        EXPORT:     45 rows from table "DB2ADMIN"."APP_TOOL_FUNC"
        EXPORT:    263 rows from table "DB2ADMIN"."DC_DMDL_ACCT_EX_GRAN"
        EXPORT:    208 rows from table "DB2ADMIN"."DC_DMDL_DIM"
        EXPORT:    225 rows from table "DB2ADMIN"."DC_DMDL_GRAN"
        …… ……
        …… ……
        
        Disconnecting from database ... successful!
        
        End time:  Fri Mar 02 10:58:09 2007
        
        步骤二:登录 Windows ,使用 db2look 命令将数据库 DDL 导出至指定的文件夹 G:\db2look\htdctr 下。
        
        命令清单 - 2
        
        C:\Documents and Settings\Administrator>cd /d G:\db2look\htdctr
        
        G:\db2look\htdctr>db2look -d htdctr -e -a -o db2look_htdctr.sql

        -- 为所有创建程序生成统计信息
        -- 创建表的 DDL
        -- 输出被发送到文件: db2look_htdc.sql
        
        警告:需要通过将 REMOTE_AUTHID 添加至 CREATE USER MAPPING
        语句修改 db2look 输出脚本
        
        步骤三:登录 Windows ,使用 ftp 命令登录 Linux 服务器(IP:172.168.16.105),将 DDL 脚本 G:\db2look\htdctr\db2look_htdctr.sql 上传至 Linux 服务器的指定路径下:home/db2admin/dbback/db2look/htdctr,注意,上传 DDL 脚本的时候必须使用 ASCII (asc)模式进行数据传输,否则后面执行该脚本会报错:DB21007E 读取该命令时已到达文件末尾。
        
        命令清单 - 3
        
        C:\Documents and Settings\Administrator>cd /d G:\db2look\htdctr
        
        G:\db2look\htdctr>ftp 172.168.16.105
        Connected to 172.168.16.105.
        220 localhost.localdomain FTP server (Version 5.60) ready.
        User (172.168.16.105:(none)): db2admin
        331 Password required for db2admin.
        Password:
        230 User db2admin logged in.
        ftp> cd dbback/db2look/htdctr
        250 CWD command successful.
        ftp> prompt
        Interactive mode Off .
        ftp> asc
        200 Type set to A.
        ftp> put db2look_htdctr.sql
        200 PORT command successful.
        150 Opening ASCII mode data connection for db2look_htdctr.sql.
        226 Transfer complete.
        ftp: 1798538 bytes sent in 0.16Seconds 11529.09Kbytes/sec.
        ftp> bye
        221 Goodbye.
        
        步骤四:登录 Windows ,使用 ftp 命令登录 Linux 服务器(IP:172.168.16.105),将 导出的数据文件 G:\db2move\htdctr\* 全部上传至 Linux 服务器的指定路径下:home/db2admin/dbback/db2move/htdctr,注意,上传 db2move.lst 脚本的时候必须使用 ASCII (asc)模式进行数据传输,否则后面执行该脚本会报错:DB21007E 读取该命令时已到达文件末尾。上传 *.ixf、*.001 和 *.msg 文件的时候必须使用二进制模式(bin)进行数据传输。
        
        命令清单 - 4
        
        C:\Documents and Settings\Administrator>cd /d G:\db2move\htdctr
        
        G:\db2move\htdctr>ftp 172.168.16.105
        Connected to 172.168.16.105.
        220 localhost.localdomain FTP server (Version 5.60) ready.
        User (172.168.16.105:(none)): db2admin
        331 Password required for db2admin.
        Password:
        230 User db2admin logged in.
        ftp> cd dbback/db2move/htdctr
        250 CWD command successful.
        ftp> prompt
        Interactive mode Off .
        ftp> asc
        200 Type set to A.
        ftp> put db2move.lst
        200 PORT command successful.
        150 Opening ASCII mode data connection for db2move.lst.
        226 Transfer complete.
        ftp: 5271 bytes sent in 0.00Seconds 5271000.00Kbytes/sec.
        ftp> bin
        200 Type set to I.
        ftp> mput *.ixf
        ftp: 49814 bytes sent in 0.00Seconds 49814000.00Kbytes/sec.
        200 PORT command successful.
        150 Opening BINARY mode data connection for tab98.ixf.
        226 Transfer complete.
        …… ……
        …… ……
        ftp> mput *.msg
        ftp: 110 bytes sent in 0.00Seconds 110000.00Kbytes/sec.
        200 PORT command successful.
        150 Opening BINARY mode data connection for tab97.msg.
        226 Transfer complete.
        …… ……
        …… ……
        ftp> mput *.001
        150 Opening BINARY mode data connection for tab19a.001.
        226 Transfer complete.
        200 PORT command successful.
        150 Opening BINARY mode data connection for tab1a.001.
        226 Transfer complete.
        ftp: 53382 bytes sent in 0.00Seconds 53382000.00Kbytes/sec.
        200 PORT command successful.
        …… ……
        …… ……
        ftp> bye
        221 Goodbye.
        
        步骤五:使用 telnet 命令登录 Linux 服务器,切换至指定路径:home/db2admin/dbback/db2look/htdctr,创建数据库 htdctr,完毕之后执行 DDL 脚本,创建数据库对象
               
        命令清单 - 5
        
        telnet 172.168.16.105
        
        Fedora Core release 3 (Heidelberg)
        Kernel 2.6.9-1.667smp on an x86_64
        login: db2admin
        Password:
        Last login: Fri Mar  2 11:21:53 from 172.168.16.32
        [db2admin@localhost ~]$ ls
        db2admin  dbback  Desktop  sqllib
        [db2admin@localhost ~]$ cd dbback/db2look/htdctr
        [db2admin@localhost htdctr]$ pwd
        /home/db2admin/dbback/db2look/htdctr
        [db2admin@localhost htdctr]$ ls
        db2look_htdctr.sql
        [db2admin@localhost htdctr]$ db2 CREATE db htdctr USING CODESET GBK TERRITORY cn
        DB20000I  CREATE DATABASE 命令成功完成。
        [db2admin@localhost htdctr]$ ls
        db2look_htdc.sql
        [db2admin@localhost htdctr]$ db2 -tvf db2look_htdctr.sql
        …… ……
        …… ……
        
        步骤六: 在 Linux 服务器上使用 load 命令装载数据
        
        命令清单 - 6
        
        …… ……
        …… ……
        [db2admin@localhost dbback]$ pwd
        /home/db2admin/dbback/db2move/htdctr/
        [db2admin@localhost htdctr]$ db2move htdctr load
        ***** DB2MOVE *****
        Action: LOAD
        Start time: Fri Mar  2 14:12:54 2007
        Connecting to database HTDCTR ... successful! Server: DB2 Common Server V8.2
        Binding package automatically ...
        Bind file: D:\\SQLLIB\\BND\\DB2MOVE.BND
        Bind was successful!
        * LOAD:  table "DB2ADMIN"."XMDL_SUBJECT"
          -Rows read:          5
          -Loaded:             5
          -Rejected:           0
          -Deleted:            0
          -Committed:          5
        …… ……
        …… ……
        Disconnecting from database ... successful!
        
        End time:  Fri Mar  2 14:13:48 2007
        
        至此,数据库迁移顺利完成。
        
        附录1:db2move 命令
        
        ** DB2MOVE
        **
        ** Error: Invalid number of parameters!
        **
        ** Usage: "db2move dbname action [options]"
        **
        ** - Action:  must be EXPORT, IMPORT, or LOAD.
        ** - Options: If not specified, defaults will be used.
        **
        **      Option             Default             Notes
        ** ==========================================================================
        ** -tc  table-creators    all creators       EXPORT.  Wildcard (*) allowed.
        ** -tn  table-names       all user tables    EXPORT.  Wildcard (*) allowed.
        ** -sn  schema-names      all schemas        EXPORT.  Wildcard (*) allowed. UDB sources only.
        ** -ts  tblspace-names    all tablespace     EXPORT.  Wildcard (*) allowed.
        ** -tf  tables from file  none               EXPORT only.
        ** -io  import-option     REPLACE_CREATE     IMPORT only.
        ** -lo  load-option       INSERT             LOAD only.
        ** -l   lobpaths          current dir        separated by commas. NO BLANKS.
        ** -u   userid            logged on userid
        ** -p   password          logged on password
        ** -aw  allow-warnings    false              include tables that encounter
        **                                           warnings during export.
        
        附录2:db2look 命令
        
        db2look 版本 8.2
        
        db2look:生成 DDL 以便重新创建在数据库中定义的对象
        
        语法: db2look -d DBname [-e] [-u Creator] [-z Schema] [-t Tname1 Tname2...TnameN] [-tw Tname] [-h] [-o Fname] [-a]
                                [-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-fd] [-td x] [-noview] [-i userID] [-w password]
                                [-v Vname1 Vname2 ... VnameN]
                                [-wrapper WrapperName] [-server ServerName] [-nofed]
        
                db2look -d DBname [-u Creator] [-s] [-g] [-a] [-t Tname1 Tname2...TnameN]
                                  [-p] [-o Fname] [-i userID] [-w password]
                db2look [-h]
        
                -d: 数据库名称:这必须指定
        
                -e: 抽取复制数据库所需要的 DDL 文件
                    此选项将生成包含 DDL 语句的脚本
                    可以对另一个数据库运行此脚本以便重新创建数据库对象
                    此选项可以和 -m 选项一起使用
                -u: 创建程序标识:若 -u 和 -a 都未指定,则将使用 $USER
                    如果指定了 -a 选项,则将忽略 -u 选项
                -z: 模式名:如果同时指定了 -z 和 -a,则将忽略 -z
                    联合部分的模式名被忽略
                -t: 生成指定表的统计信息
                    可以指定的表的数目最多为 30
               -tw: 为名称与表名的模式条件(通配符)相匹配的表生成 DDL
                    当指定了 -tw 选项时,-t 选项会被忽略
                -v: 只为视图生成 DDL,当指定了 -t 时将忽略此选项
                -h: 更详细的帮助消息
                -o: 将输出重定向到给定的文件名
                    如果未指定 -o 选项,则输出将转到 stdout
                -a: 为所有创建程序生成统计信息
                    如果指定了此选项,则将忽略 -u 选项
                -m: 在模拟方式下运行 db2look 实用程序
                    此选项将生成包含 SQL UPDATE 语句的脚本
                    这些 SQL UPDATE 语句捕获所有统计信息
                    可以对另一个数据库运行此脚本以便复制初始的那一个
                    当指定了 -m 选项时,将忽略 -p、-g 和 -s 选项
                -c: 不要生成模拟的 COMMIT 语句
                    除非指定了 -m 或 -e,否则将忽略此选项
                    将不生成 CONNECT 和 CONNECT RESET 语句
                    省略了 COMMIT。在执行脚本之后,需要显式地进行落实。
                -r: 不要生成模拟的 RUNSTATS 语句
                    缺省值为 RUNSTATS。仅当指定了 -m 时,此选项才有效
                -l: 生成数据库布局:数据库分区组、缓冲池和表空间。
                -x: 如果指定了此选项,则 db2look 实用程序将生成授权 DDL
                    对于现有已授权特权,不包括对象的原始定义器
               -xd: 如果指定了此选项,则 db2look 实用程序将生成授权 DDL
                    对于现有已授权特权,包括对象的原始定义器
                -f: 抽取配置参数和环境变量
                    如果指定此选项,将忽略 -wrapper 和 -server 选项
               -fd: 为 opt_buffpage 和 opt_sortheap 以及其它配置和环境参数生成 db2fopt 语句。
               -td: 将 x 指定为语句定界符(缺省定界符为分号(;))
                    应该与 -e 选项一起使用(如果触发器或者 SQL 例程存在的话)
                -p: 使用明文格式
                -s: 生成 postscript 文件
                    此选项将为您生成 postscript 文件
                    当设置了此选项时,将除去所有 latex 和 tmp ps 文件
                    所需的(非 IBM)软件:LaTeX 和 dvips
                    注意:文件 psfig.tex 必须在 LaTeX 输入路径中
                -g: 使用图形来显示索引的页访存对
                    必须安装 Gnuplot,并且  必须在您的 LaTeX 输入路径中
                    还将随 LaTeX 文件一起生成  文件
                -i: 登录到数据库驻留的服务器时所使用的用户标识
                -w: 登录到数据库驻留的服务器时所使用的密码
           -noview: 不要生成 CREATE VIEW ddl 语句
          -wrapper: 为适用于此包装器的联合对象生成 DDL
                    生成的对象可能包含下列各项:
                    包装器、服务器、用户映射、昵称、类型映射、
                    函数模板、函数映射和索引规范
           -server: 为适用于此服务器的联合对象生成 DDL
                    生成的对象可能包含下列各项:
                    包装器、服务器、用户映射、昵称、类型映射、
                    函数模板、函数映射和索引规范
            -nofed: 不要生成 Federated DDL
                    如果指定此选项,将忽略 -wrapper 和 -server 选项

阅读(3733) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-17 17:02:17

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com