informix迁移
- 格式:doc
- 大小:479.50 KB
- 文档页数:16
数据复制技术用于网络环境下多个数据库服务器之间数据的互相拷贝。
在金融业实现数据集中、数据共享和数据异地备份应用中,利用这种技术可以保证数据交换安全无隐患。
本文以广为应用的Informix数据库为例,介绍如何进行网络复制。
Informix数据复制特点Informix要求在不同数据库之间进行数据复制的表必须是同构的(主结点和复制结点要复制的表、视图名称必须一致,要复制字段的名称、类型也必须一致);允许服务器间同步或异步复制,但每次只允许复制增量数据。
如何定义1.定义复制服务器对参与复制的数据库服务器进行定义,包括复制使用的Dbspace、丢弃事务(复制不成功事务)日志存放路径、丢弃行信息(对记录修改复制不成功)日志存放路径等。
2.定义复制数据复制和定义数据复制的基本单位,以表为单位进行,包含以下因素:复制名称、复制选项、复制参与者、冲突解决规则及冲突解决范围。
3.复制组相同数据库服务器之间的所有复制可定义成一个复制组,进行统一管理:同时启动、停止、挂起、继续。
定义数据库组可简化管理并提高复制性能。
具体应用实例1.环境描述操作系统:SCOUnix5.05数据库:Informix-online7.31主机A:主机BIP:76.1.40.86IP:76.1.40.88Hostname:gs86Hostname:gs88DBname:gs_serverDBname:gs_hostDBserver:gs86a_onDBserver:gs88a_on2.准备工作首先,让gs86、gs88两台机器时间同步;其次,在gs86、gs88两台机器的数据库中各建一结构完全相同的数据库,分别为gs_server、gs_host,两个数据库中都建一张结构完全相同的表table_86与table88,并建立惟一索引;最后,在gs86、gs88两台机器上分别执行如下命令:updatestatisticsontape-s-U数据库名3.复制配置以gs86机器为例,主要复制配置如下:(1)sqlhosts文件g_gs86group--i=2gs86a_onontlitcpgs86on_gs88g=g_gs86g_gs88group--i=1gs88a_onontlitcpgs88on_gs88g=g_gs88其中g_gs86、g_gs88为组名,on_gs88为端口号,且应为同一端口号。
Informix迁移工具1. 前沿总体上说,数据库迁移主要分为二进制迁移和文本迁移2. 二进制迁移二进制迁移使用的工具是ontape、on-bar、onunload等。
2.1 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE目标数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE数据库名:test表名:testtable表中记录:1972124条数据2.2 迁移步骤➢设置备份路径✓将onconfig文件中的TAPEDEV和LTAPEDEV的路径分别设置为/home/Informix/tapedev、/home/Informix/ltapedev➢在源服务器上制作最终的0级备份✓ontape –s –L 0➢使源数据库服务器脱机✓onmode –ky➢将备份文件、onconfig、sqlhost以及环境变量的setenv1170文件均拷贝到目标服务器的相应位置(注意更改sqlhost文件中的ip地址栏位)➢在目标服务器上安装IDS软件➢在目标服务器上的相应位置建立与源数据库服务器相同的chunk文件并更改权限➢在目标服务器上使用ontape –r命令恢复数据➢恢复完毕之后,目标服务器自动启动到静默模式,更改使其进入联机模式➢制作目标服务器的最初0级备份3. 文本迁移在数据库之间迁移,即将数据移动到不同操作系统上的数据库服务器中3.1 文本迁移中移动数据可以使用的传输工具和实用程序-dbexport和dbimport-onload和onunload-load和unload-dbload-external table-high performance loader(HPL)这些工具有各自的优点和限制。
综合考虑所有因素,选择适合环境的工具或实用程序3.2 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.50UC5目标数据库版本:IBM Informix Dynamic Server Version 11.70UC5数据库名:test表名:testtable表中记录:1972124条数据3.2 文本迁移的步骤➢使用on-bar on-archive或ontape来制作最终的0级备份(可选)➢请选择以下某一迁移实用程序集来卸载数据库:Dbexport和dbimportUnload、dbschema和loadUnload、dbschema和dbload➢安装并配置目标数据库服务器。
IBM Informix Enterprise Replication 技术及成功案例一.简介IBM Informix ER 技术是Informix Server 7.22 版本以上的产品内置的功能模块,用于数据库的数据复制,目前IDS7.31中内置的ER是较为成熟和稳定的版本。
IBM Informix ER从功能上不依赖于任何第三方产品,可以实现数据集中最为基本的需求:将数据库上的数据实时地、准确一致地、可靠地、完整地复制到目标服务器上。
IBM Informix ER具有的优点:1)是INFORMIX 的内置功能,不依赖第三方产品。
2)效率高,性能稳定、可靠。
3)配置简单。
4)不用对现有的数据库结构和应用程序做任何修改。
Informix ER会占用一定的本地资源,在广域网实施Informix ER时,对网络环境的要求较高,如果网络中断,会造成复制数据的阻塞二.配置CDR的前提:1)参与复制的表必须是有log的,可以是unbuffered、也可以是buffered.2)所有参与复制的Informix server必须是通过TCP/IP连接的。
3)所有参与复制的主机之间需要先配置时钟同步协议(Network Time Protocol)4)参与复制的表必须是拥有primary key constraint的。
5)参与复制的主机有足够的系统资源。
6)互相复制的主机之间要配置互相认证用户。
7)参与复制的Informix Server有足够的logical log。
三、IBM Informix ER的运行机制:●当用户insert, update或delete数据,所有操作均写入本机逻辑日志;●复制服务器检索并将如下信息保留在发送队列(send queue)中:事务信息:完整的复制数据记录(包括复制目标服务器和复制时间)数据库操作信息(Insert、Update、Delete)确认信息:双方握手信息控制信息:全局系统表的变更信息●发送队列的内容通过网络传送到目标服务器的接收队列中;●数据从接收队列读出并对目标表执行更新四、几个CDR 用户的配置情况:1)上海工商税务管理局:中心: HP N4000 2CPU 1GB memory拥有25 个区县, 24 个区县是HP D390, 2CPU, 500MB memory.另一个为:HP N4000, 2CPU,1GB memory.目前中心总数据量为15GB(包含从1996 至今的所有数据)配置的是双向复制。
INFORMIX迁移到ORACLE一、库表SQL写法问题1.DATE字段Informix中datetime year to second,datetime year to day等,统一改为oralce中的DA TE字段。
否则会报错:ORA-00907: 缺失右括号。
2.extent size属性Informix中可以使用extent size 50000 next size 10000 lock mode row来限制建表属性,在oracle中不支持,直接去掉。
3.SQL语句中空行问题在informix中,建表的语句中,可以允许有空行存在,但是在oracle的语句中,一条完整的语句中,不允许中间出现空白行,否则会报错:SP2-0734: 未知的命令开头。
解决办法是:去掉一条语句中无谓的空行。
不同语句间存在空行是正常的。
4.Size,level等保留字段名在informix中,可以定义一个字段名字为size,在oracle中,size属于保留字,直接使用会报错:ORA-00904: : 标识符无效解决方法是:在类似于size这样的保留名称的字段名称中,在两边加上双引号即可。
即:size-->"size",对应的程序代码,也都需要这样修改,特别需要注意的是,双引号内的字符是大小写敏感的,例如上面的"size",程序中用"SIZE"将操作失败。
既然反正要改程序,为了防止后面的冲突,不采取这种修改方法,重新修改字段名。
为了方便,我们统一在字段名前加上:db_。
例如:size-->db_size, level-->db_level。
这样的字段有:size, level,comment,validate,file,number5.byte大数据字段在informix中,大数据使用byte类型,在oralce中,使用的是blob/clob类型(BLOB是纯二进制,CLOB是文本,我们选择使用blob),否则,会报错:ORA-00902: 无效数据类型byte6.lvarchar大数据字段在informix中,长点的文本数据使用lvarchar类型,此类型缺省长度是2048,最大长度是32767。
Informix迁移工具1. 前沿总体上说,数据库迁移主要分为二进制迁移和文本迁移2. 二进制迁移二进制迁移使用的工具是ontape、on-bar、onunload等。
2.1 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE目标数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE数据库名:test表名:testtable表中记录:1972124条数据2.2 迁移步骤设置备份路径✓将onconfig文件中的TAPEDEV和LTAPEDEV的路径分别设置为/home/Informix/tapedev、/home/Informix/ltapedev在源服务器上制作最终的0级备份✓ontape –s –L 0使源数据库服务器脱机✓onmode –ky将备份文件、onconfig、sqlhost以及环境变量的setenv1170文件均拷贝到目标服务器的相应位置(注意更改sqlhost文件中的ip地址栏位)在目标服务器上安装IDS软件在目标服务器上的相应位置建立与源数据库服务器相同的chunk文件并更改权限在目标服务器上使用ontape –r命令恢复数据恢复完毕之后,目标服务器自动启动到静默模式,更改使其进入联机模式 制作目标服务器的最初0级备份3. 文本迁移在数据库之间迁移,即将数据移动到不同操作系统上的数据库服务器中3.1 文本迁移中移动数据可以使用的传输工具和实用程序-dbexport和dbimport-onload和onunload-load和unload-dbload-external table-high performance loader(HPL)这些工具有各自的优点和限制。
综合考虑所有因素,选择适合环境的工具或实用程序3.2 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.50UC5目标数据库版本:IBM Informix Dynamic Server Version 11.70UC5数据库名:test表名:testtable表中记录:1972124条数据3.2 文本迁移的步骤使用on-bar on-archive或ontape来制作最终的0级备份(可选)请选择以下某一迁移实用程序集来卸载数据库:Dbexport和dbimportUnload、dbschema和loadUnload、dbschema和dbload安装并配置目标数据库服务器。
informix数据库常用备份方法informix数据库常用备份方法数据库导出dbexport和导入dbimport说明:dbexport用户导出和备份数据库,dbimport用于恢复dbexport备份的数据库;注意:dbimport导入数据库是,会创建数据库,所以不能存在与要导入重名的数据库。
利用dbexport 备份数据库时有个缺点就是要把所有和数据库操作相关的应用都要停止,而0级备份则不需要停应用。
假如我的数据库为:test_dbdbexport用法:[informix] /opt/informix/db_back>dbexport --Invalid option list.Usage:dbexport <database> [-X] [-c] [-q] [-d] [-ss [-si]][{ -o <dir> | -t <tapedev> -b <blksz> -s <tapesz> [-f <sql-command-file>] }]NOTE: arguments to dbexport are order independent.Dbexport执行后,产生一个文件dbexport.out和一个文件夹test_db.exp[里面是unl文件]如果想备份数据库以及其中的数据:[informix] /opt/informix /db_back>dbexport test_db[informix] /opt/informix /db_back>lsdbexport.out test_db.exp/dbimport用法:[informix] /opt/informix >dbimport --Invalid option list.Usage:dbimport <database> [-X] [-c] [-q] [-d <dbspace>][-l [{ buffered | <log-file> }] [-ansi]][{ -i <dir> | -t <tapedev> [ -b <blksz> -s <tapesz> ] [-f <script-file>] }]NOTE: <log-file> must be a complete patharguments to dbimport are order independent执行下面命令恢复数据库:[informix] /opt/informix/db_back>dbimport test_db -d workdbs -l bufferedFAQ1:dbimport导入数据失败错误现象如果导入的时候直接执行dbimport test_db这样的话,从建数据库后,就会出现如下错误(原因是直接恢复后,数据库日志级别不是buffer log这样就会出现下面的错误,利用-d指定恢复到哪个数据库空间,不指定的话,默认是rootdbs):[16:45:47]Error: Transaction begin failed.sqlca.sqlcode = -256[16:45:47]Error: Connect to database[evcscp_db@smp4_online_net]failed, sqlcode=-256或是:14:59:07,560 WARN [TransactionImpl] XAException: tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=smp4//1, BranchQual=] errorCode=XA_UNKNOWN(0)org.jboss.resource.connectionmanager.JBossLocalXAException: Error trying to start local tx: ; - nested throwable: (org.jboss.resource.JBossResourceException: SQLException; - nested throwable:(java.sql.SQLException: Transactions not supported))解决方法方法1:导入数据库的时候,就直接指定日志类别-l buffered;方法2:通过ontape –s –B test_db –L 0 修改日志级别为buffer log;FAQ2:dbimport导入如果存在同名的数据库则会失败错误现象[informix] /opt/informix /db_back_01>dbimport test_db*** create database330 - Cannot create or rename database.100 - ISAM error: duplicate value for a record with unique key.解决方法利用informix用户登录删除该重名数据库FAQ3:dbexport导出数据库失败错误现象[informix] /opt/informix /db_back_01>dbexport test_db-425 - Database is currently opened by another user.-107 - ISAM error: record is locked.解决方法:停止所有和test_db数据库相关的应用,如果还出现上面的问题,就使用informix用户登录,查看连接该数据库的session,然后强制停止。
Informix迁移工具1. 前沿总体上说,数据库迁移主要分为二进制迁移和文本迁移2. 二进制迁移二进制迁移使用的工具是ontape、on-bar、onunload等。
2.1 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE目标数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE数据库名:test表名:testtable表中记录:1972124条数据2.2 迁移步骤设置备份路径将onconfig文件中的TAPEDEV和LTAPEDEV的路径分别设置为/home/Informix/tapedev、/home/Informix/ltapedev在源服务器上制作最终的0级备份ontape –s –L 0使源数据库服务器脱机onmode –ky将备份文件、onconfig、sqlhost以及环境变量的setenv1170文件均拷贝到目标服务器的相应位置(注意更改sqlhost文件中的ip地址栏位)在目标服务器上安装IDS软件在目标服务器上的相应位置建立与源数据库服务器相同的chunk文件并更改权限在目标服务器上使用ontape –r命令恢复数据恢复完毕之后,目标服务器自动启动到静默模式,更改使其进入联机模式制作目标服务器的最初0级备份3. 文本迁移在数据库之间迁移,即将数据移动到不同操作系统上的数据库服务器中3.1 文本迁移中移动数据可以使用的传输工具和实用程序-dbexport和dbimport-onload和onunload-load和unload-dbload-external table-high performance loader(HPL)这些工具有各自的优点和限制。
综合考虑所有因素,选择适合环境的工具或实用程序3.2 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.50UC5目标数据库版本:IBM Informix Dynamic Server Version 11.70UC5数据库名:test表名:testtable表中记录:1972124条数据3.2 文本迁移的步骤使用on-bar on-archive或ontape来制作最终的0级备份(可选)请选择以下某一迁移实用程序集来卸载数据库:Dbexport和dbimportUnload、dbschema和loadUnload、dbschema和dbload安装并配置目标数据库服务器。
Informix迁移工具1. 前沿总体上说,数据库迁移主要分为二进制迁移和文本迁移2. 二进制迁移二进制迁移使用的工具是ontape、on-bar、onunload等。
2.1 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE目标数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE数据库名:test表名:testtable表中记录:1972124条数据2.2 迁移步骤➢设置备份路径✓将onconfig文件中的TAPEDEV和LTAPEDEV的路径分别设置为/home/Informix/tapedev、/home/Informix/ltapedev➢在源服务器上制作最终的0级备份✓ontape –s –L 0➢使源数据库服务器脱机✓onmode –ky➢将备份文件、onconfig、sqlhost以及环境变量的setenv1170文件均拷贝到目标服务器的相应位置(注意更改sqlhost文件中的ip地址栏位)➢在目标服务器上安装IDS软件➢在目标服务器上的相应位置建立与源数据库服务器相同的chunk文件并更改权限➢在目标服务器上使用ontape –r命令恢复数据➢恢复完毕之后,目标服务器自动启动到静默模式,更改使其进入联机模式➢制作目标服务器的最初0级备份3. 文本迁移在数据库之间迁移,即将数据移动到不同操作系统上的数据库服务器中3.1 文本迁移中移动数据可以使用的传输工具和实用程序-dbexport和dbimport-onload和onunload-load和unload-dbload-external table-high performance loader(HPL)这些工具有各自的优点和限制。
综合考虑所有因素,选择适合环境的工具或实用程序3.2 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.50UC5目标数据库版本:IBM Informix Dynamic Server Version 11.70UC5数据库名:test表名:testtable表中记录:1972124条数据3.2 文本迁移的步骤➢使用on-bar on-archive或ontape来制作最终的0级备份(可选)➢请选择以下某一迁移实用程序集来卸载数据库:Dbexport和dbimportUnload、dbschema和loadUnload、dbschema和dbload➢安装并配置目标数据库服务器。
➢使目标数据库联机➢使用dbimport、load或dbload或外部表将数据库装入目标数据库服务器➢制作目标数据库服务器的最初0级备份➢运行upstate statistics来更新目标数据库服务器用来规划有效查询的信息4. 数据的移动4.1 移动数据前考虑因素➢更改配置参数和环境变量(如设置PATH INFORMIXDIR和INFORMIXSERVER)➢内存和数据空间的需求量➢数据的组织➢是否想要更改数据库模式以容纳更多信息,为增长提供空间或提高性能4.2 数据迁移工具➢dbexport和dbimport➢dbload和onload➢unload和load➢external table➢High-Performance Loader(HPL)✧注意:当从非informix数据源导入数据时,可以使用以下工具:dbimport和dbloadHPLIBM Informix Enterprise Gateway产品4.3 数据迁移工具之间的比较4.3.1 dbexport和dbimport向存储在磁盘或磁带中的文本文件导入或导出数据库导出的文件中包含数据文件和模式文件并且会再当前目录中创建名为dbexport.out的消息文件。
此文件包含错误消息、警告以及它生成的SQL数据定义语句的显示会以互斥方式锁定数据库变为没有日志的数据库了有日志的数据库倒过去之后●优点✓可以修改数据库模式并更改数据格式(比如将int类型改为char 给数据库中的表改名还要将unl文件名字改掉)✓可以在操作系统间移动数据✓可选的日志记录功能✓可以从非informix数据源导入数据●缺点✓速度比dbload快,但比onload慢✓移动整个数据库●用法目标选项-c 使dbexport完成导出,除非发生致命错误-d 使dbexport只导出简单大对象描述符,不导出简单大对象数据-q 隐藏错误消息,警告和生成的SQL数据定义语句的显示-ss 对指定数据库中的所有表生成特定于数据库服务器的信息-si 为非分段表排除索引存储子句的生成-si选项仅在与-ss选项一起使用时才可用-X 识别字符字段中的HEX二进制数据-V 显示软件版本号和序列号-version 扩展-V选项来显示有关构建操作系统、构建号和构建数据的其他信息Database 指定希望导出的数据库的名称-b blocksize 指定磁带设备的块大小(以千字节计)-f pathname 指定希望存储模式文件的路径名(如果要在磁带上存储数据文件)-o directory 指定磁盘上的目录,dbexport将在该目录中创建database.exp目录该目录保留dbexport为数据库创建的数据文件和模式-s tapesize 指定可在磁带上存储的数据量(以千字节计)-t device 指定希望存储文本文件和可能存储模式文件的磁带设备路径名Dbimport输入文件的位置-c 即使出现某些非致命错误,也可以完成数据导入-q 隐藏错误消息、警告和生成的SQL数据定义语句的显示-V 显示软件版本号和序列号-version 扩展-V选项来显示有关构建操作系统、构建号和构建数据的其他信息-X 识别字符字段中的HEX二进制数据Database 指定要创建的数据库名称-b blocksize 指定磁带设备的块大小(以千字节计)-f pathname 指定dbimport可在何处找到用于输入的模式文件,该文件用来在从磁带读取数据文件时创建数据库-i directory 指定磁盘上database.exp目录的完整路径名,该目录中包含dbimport 用来创建和装入新数据库的输入数据文件和模式文件。
目录名必须与数据库名相同-s tapesize 指定可在磁带上存储的数据量(以千字节计)-t device 指定包含输入文件的磁带设备的路径名1. 使用dbexport导出:[informix@vm1 ~]$ mkdir dbexport[informix@vm1 ~]$ cd dbexport/[informix@vm1 dbexport]$ dbexport test{ DATABASE test delimiter | }grant dba to "informix";{ TABLE "informix".testtable row size = 102 number of columns = 7 index size = 0 }{ unload file name = testt00103.unl number of rows = 1972124 }create raw table "informix".testtable(fname char(20),lname char(20),company char(20),address char(20),city char(15),state char(2),zipcode char(5));revoke all on "informix".testtable from "public" as "informix";revoke usage on language SPL from public ;grant usage on language SPL to public ;dbexport completedreal 0m8.841suser 0m2.622ssys 0m0.753s2. 将导出数据拷贝到目标服务器:[informix@vm1 ~]$ scp -r dbexport/ vm2:/home/informix/3. 使用dbimport导入数据:[informix@vm2 ~]$ cd dbexport/[informix@vm2 dbexport]$ dbimport test{ DATABASE test delimiter | }grant dba to "informix";{ TABLE "informix".testtable row size = 102 number of columns = 7 index size = 0 }{ unload file name = testt00103.unl number of rows = 1972124 }create raw table "informix".testtable(fname char(20),lname char(20),company char(20),address char(20),city char(15),state char(2),zipcode char(5));revoke all on "informix".testtable from "public" as "informix";revoke usage on language SPL from public ;4.3.2 dbload●将数据从一个或多个文本文件传送到一个或多个现有表中●装入期间会进行表锁定●优点✓可以修改数据库模式✓可以在操作系统间移动数据✓可选的日志记录功能✓适中的易用性✓可以从非informix数据源导入数据●缺点✓速度比dbexport、dbimport、onload慢2. 使用dbschema实用程序捕捉表模式和行类型必须使用-ui/-ua/-uia/all 选项来获得命令行类型[informix@vm1 dbload]$ dbschema -d test -t testtable -q > dbload.sqlreal 0m0.416suser 0m0.005ssys 0m0.027s3. 将使用unload导出的数据以及使用dbschema导出的模式文件拷贝到目标服务器[informix@vm1 dbload]$ scp unload vm2:/home/informix/[informix@vm1 dbload]$ scp dbload.sql vm2:/home/informix/3. 使用dbaccess在目标服务器中重建表模式(数据库名在目标服务器中要拥有)[informix@vm2 ~]$ dbaccess test dbload.sqlreal 0m0.027suser 0m0.008ssys 0m0.005s4.4. 创建dbload命令文件(unload为数据导出的文件名7为每个数据行的字段数)Vi command.file unload delimiter '|' 7;insert into testtable;5.运行dbload命令time dbload -d test1 -c comm -l errlogreal 2m11.003suser 0m10.564ssys 0m3.325s导入导出共计耗时:141.021s4.3.3 onunload和onload●将数据库中的数据卸载到磁带或磁盘中的文件中;将通过onunload命令创建的数据装入到数据库服务器中●以二进制格式和页大小为单位复制数据windows 4K linux 2K●在使用onload和onunload实用程序之前,必须将压缩表和分段表中的数据解压缩●允许对表进行select和update●●●优点✓速度快可选的日志记录功能●缺点✓只在同一操作系统上具有相同版本的数据库服务器间移动数据✓无法修改数据库模式✓使用难度大✓不可用于SE 7.22-7.25 SE 5.1或更早版本onunload [-l] [-t <tape device>] [-b <block size>] [-s <tape size>]<database>[:[<owner>.]<table>]onload [-l] [-t <tape device>] [-b <block size>] [-s <tape size>][-d <DBspace>] <database>[:[<owner>.]<table>]-l 指示onunload分别从LTAPEDEV LTAPEBLK和LTAPESIZE读取磁带设备块大小和磁带大小的值-b 指定磁带设备的块大小(以千字节计)-s 指定存储在磁带上的数据量(以千字节计)-t 指定磁盘上文件的路径名或安装输入磁带的磁带设备的路径名1. 使用onunload实用程序下载数据[informix@vm1 ~]$ touch onunload[informix@vm1 ~]$ onunload -t /home/informix/onunload testPlease mount tape and press Return to continue ...Please label this as tape number 1 in the tape sequence.real 0m18.873suser 0m0.005ssys 0m0.010s2.将下载的数据拷贝到目标服务器[informix@vm1 ~]$ scp onunload vm2:/home/informix/3.使用onload实用程序将数据上传(在目标端此数据库应该是不存在的)[informix@vm2 ~]$ onload -t /home/informix/onunload testPlease mount tape and press Return to continue ...The load has successfully completed.real 0m54.308suser 0m0.005ssys 0m0.020s4.3.4 unload和load语句●卸载和装入指定的行●会产生长事务需要将其多次提交●Unload不锁表load会锁表并产生长事务●优点✓可以修改数据库模式✓可以在操作系统间移动数据✓易于使用✓可选的日志记录功能●缺点✓只接受指定的数据格式●案例1.使用unload语句将表卸载到输出文件[informix@vm1 ~]$ mkdir dbload[informix@vm1 ~]$ cd dbload[informix@vm1 dbload]$ vi unload.shdbaccess test <<EOFunload to "/home/informix/dbload/unload" select * from testtable;EOF[informix@vm1 dbload]$ sh unload.shDatabase selected.1972124 row(s) unloaded.Database closed.real 0m9.575suser 0m3.122ssys 0m0.981s2.2. 使用dbschema实用程序捕捉表模式和行类型必须使用-ui/-ua/-uia/all 选项来获得命令行类型[informix@vm1 dbload]$ dbschema -d test -t testtable -q > dbload.sqlreal 0m0.416suser 0m0.005ssys 0m0.027s3. 将使用unload导出的数据以及使用dbschema导出的模式文件拷贝到目标服务器[informix@vm1 dbload]$ scp unload vm2:/home/informix/[informix@vm1 dbload]$ scp dbload.sql vm2:/home/informix/3. 使用dbaccess在目标服务器中重建表模式(数据库名在目标服务器中要拥有)[informix@vm2 ~]$ dbaccess test dbload.sqlreal 0m0.027suser 0m0.008ssys 0m0.005s4.4.在目标服务器中使用load语句导入数据[informix@vm2 ~]$ vi load.sh4.3.5 external table 最大化的利用I/O利用率11.7基本上百分之百利用I/O●优点✓快速重建大数据量的表✓在线增量数据加载入库●缺点External table不支持–Index–Primary key ,unique key, foreign key–Trigger–Merge 语句的目的表–一个查询语句中只能含有一个外部表(表关联的时候不能是外部表和外部表)–不能作为outer join的outer tabname–Update和delete语句–load from ./orders.unl insert into orders_ext–Alter table 语句–Grand, revoke语句–LBAC–…●介绍:➢IDS 11.5.xC6 的新特性➢一个正常的表是由informix进行存储管理即表的数据是通过informix自身进行管理,而外部表是以操作系统文件方式管理➢支持files和named pipe➢支持所有的数据类型➢可以通过sql接口进行访问IDS外部的数据➢高性能ETL工具➢利用SQL语句简单快速随大数据集合的导入、导出处理●定义外部表的数据对应的格式:➢DELIMITED 符号分隔列的文本格式➢INFORMIX Informix内部的格式,是一个二进制的格式➢FIXED 固定长度的格式●两种模式:➢DELUXE 在表有indexes和unique约束的情况下,自动更新索引和检查约束,提供快速并行loading使用单条记录insert方法来load数据,处理index和每一行数据,只对处理的记录锁定,目标表的其他记录可以被同时访问当下列情况下使用该模式:重建index的代价非常高当需要使用delete释放的空间其他用户同时访问该表的记录➢EXPRESS 能提供最高效的load 空载的情况表是空表使用light-append,绕过buffer pool,只对raw table+no index有效Load数据时,系统自动对表加“exclusive”锁,其他用户不可以访问该表当导出的表中的数据绕开buffer 直接将数据导入到外部表对应的磁盘中开并发裸表Systables tabtype为E的案例1.建立外部表create external table testtable_ext sameas testtableusing(datafiles("DISK:/opt/IBM/informix/test/external_table/testtable%(1..4).unl"), format "delimited",DELIMITER "|",DELUXE,rejectfile "/opt/IBM/informix/test/external_table/testtable_rejfile.err", maxerrors 100);2. 把数据unload到数据文件[informix@vm1 ~]$ vi exter.shdbaccess test <<EOFinsert into testtable_ext select * from testtable where 1=1;EOF[informix@vm1 ~]$ time sh exter.shreal 0m11.528suser 0m0.005ssys 0m0.029s3. 将unload的数据文件都拷贝到目标服务器[informix@vm1 ~]$ cd /opt/IBM/informix/test[informix@vm1 test]$ scp -r external_table/ vm2:/opt/IBM/informix/test/4. 使用dbschema实用程序捕捉表模式和行类型必须使用-ui/-ua/-uia/all 选项来获得命令行类型[informix@vm1 dbload]$ dbschema -d test -t testtable -q > dbload.sqlreal 0m0.416suser 0m0.005ssys 0m0.027s5. 将dbschema导出的模式文件拷贝到目标服务器[informix@vm1 dbload]$ scp dbload.sql vm2:/home/informix/6. 使用dbaccess在目标服务器中重建表模式(数据库名在目标服务器中要拥有)[informix@vm2 ~]$ dbaccess test dbload.sqlreal 0m0.027suser 0m0.008ssys 0m0.005s4.7. 在目标服务器建立相同的外部表create external table testtable_ext sameas testtableusing(datafiles("DISK:/opt/IBM/informix/test/external_table/testtable%(1..4).unl"),format "delimited",DELIMITER "|",DELUXE,rejectfile "/opt/IBM/informix/test/external_table/testtable_rejfile.err",maxerrors 100),8. 把文件数据load到目标服务器[informix@vm2 ~]$ vi exterload.shdbaccess test <<EOFinsert into testtable select * from testtable_ext where 1=1;EOF[informix@vm2 ~]$ time sh exterload.shreal 0m9.797suser 0m0.007ssys 0m0.010s导入导出共计用时21.768s4.3.6 High-Performance Loader(HPL)●从符合某些格式要求的任何ASCII或COBOL文件装入数据●优点✓对于特大型数据库,与其他IBM Informix数据迁移实用程序相比具有性能优势,因为它以并行方式执行I/O和代码集转换✓可以修改数据库模式✓可以在操作系统间移动数据✓可以从非informix数据源导入数据●缺点✓需要较长的准备时间✓不可用于:SE 7.22-7.25 SE 5.1x Online 5.1x●简介✓HPL由onpload实用程序、ipload和onpload数据库组成✓Ipload实用程序是一个UNIX应用程序,它帮助用户为UNIX和Windows准备装入和卸载作业(它是一个图形用户界面,可以用来设置HPL的参数)✓Onpload实用程序的功能是在数据库和存储设备之间转换、过滤和移动数据,使用onpload数据库中的信息来运行装入和卸载并转换数据以及在装入过程中记录有关不符合装入条件的数据记录信息4.3.7 onpladm●简介✓可以从命令行使用onpload实用程序来创建、修改和删除HPL对象✓HPL对象包括项目、作业、映射、格式、查询、过滤器、设备阵列和机器➢创建作业的语法格式-B blocksize 设置磁带I/O块大小(以字节为单位)-d device 设置设备名称,例如文件、设备阵列、磁带或管道-D database 包含要装入或卸载的信息的目标数据库的名称Job 从onpload数据库命名装入或卸载作业-M devicesize 磁带设备大小(以千兆字节为单位)-n 设置无转换快速作业-p project 标识存储格式和映射的项目-S server 设置onpload数据库服务器-t table 要装入或卸载的表的名称-T target 数据将下载到其中的目标服务器的名称➢设置运行方式a 将数据源视为设备阵列c 将当时设置为高级方式(如果未设置,那么onpladm使用快速方式)d 将数据源视为磁带设备l 将数据装入数据库n 指定onpladm不需要执行数据转换N 允许无复制高级方式装入P 将数据源视为程序以通过管道方式来执行和读取程序的接口(仅UNIX)u 从数据库卸载数据➢设置格式D 将格式设置为定界(默认)FI 将格式设置为固定内部FA 将格式设置为固定ASCIIFB 将格式设置为固定二进制C 将格式设置为COBOLCB 将格式设置为COBOL(字节)➢运行作业的格式-f 标记以指定作业类型(默认为装入作业)l 指定装入作业u 指定卸载作业jobname 从onpload数据库命名装入或卸载作业-l logname 为记录作业进度的日志文件设置路径-p projectname 标识存储格式和映射的项目-S servername 设置onpload数据库服务器-Z 启用写入磁带或从磁带读取直至设备末尾。