informix迁移.docx
- 文档编号:26469652
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:25
- 大小:369.94KB
informix迁移.docx
《informix迁移.docx》由会员分享,可在线阅读,更多相关《informix迁移.docx(25页珍藏版)》请在冰豆网上搜索。
informix迁移
Informix迁移工具
1.前沿
总体上说,数据库迁移主要分为二进制迁移和文本迁移
2.二进制迁移
二进制迁移使用的工具是ontape、on-bar、onunload等。
2.1迁移环境
源数据库版本:
IBMInformixDynamicServerVersion11.70.FC3DE
目标数据库版本:
IBMInformixDynamicServerVersion11.70.FC3DE
数据库名:
test
表名:
testtable
表中记录:
1972124条数据
2.2迁移步骤
Ø设置备份路径
✓将onconfig文件中的TAPEDEV和LTAPEDEV的路径分别设置为/home/Informix/tapedev、/home/Informix/ltapedev
Ø在源服务器上制作最终的0级备份
✓ontape–s–L0
Ø使源数据库服务器脱机
✓onmode–ky
Ø将备份文件、onconfig、sqlhost以及环境变量的setenv1170文件均拷贝到目标服务器的相应位置(注意更改sqlhost文件中的ip地址栏位)
Ø在目标服务器上安装IDS软件
Ø在目标服务器上的相应位置建立与源数据库服务器相同的chunk文件并更改权限
Ø在目标服务器上使用ontape–r命令恢复数据
Ø恢复完毕之后,目标服务器自动启动到静默模式,更改使其进入联机模式
Ø制作目标服务器的最初0级备份
3.文本迁移
在数据库之间迁移,即将数据移动到不同操作系统上的数据库服务器中
3.1文本迁移中移动数据可以使用的传输工具和实用程序
-dbexport和dbimport
-onload和onunload
-load和unload
-dbload
-externaltable
-highperformanceloader(HPL)
这些工具有各自的优点和限制。
综合考虑所有因素,选择适合环境的工具或实用程序
3.2迁移环境
源数据库版本:
IBMInformixDynamicServerVersion11.50UC5
目标数据库版本:
IBMInformixDynamicServerVersion11.70UC5
数据库名:
test
表名:
testtable
表中记录:
1972124条数据
3.2文本迁移的步骤
Ø使用on-baron-archive或ontape来制作最终的0级备份(可选)
Ø请选择以下某一迁移实用程序集来卸载数据库:
Dbexport和dbimport
Unload、dbschema和load
Unload、dbschema和dbload
Ø安装并配置目标数据库服务器。
Ø使目标数据库联机
Ø使用dbimport、load或dbload或外部表将数据库装入目标数据库服务器
Ø制作目标数据库服务器的最初0级备份
Ø运行upstatestatistics来更新目标数据库服务器用来规划有效查询的信息
4.数据的移动
4.1移动数据前考虑因素
Ø更改配置参数和环境变量(如设置PATHINFORMIXDIR和INFORMIXSERVER)
Ø内存和数据空间的需求量
Ø数据的组织
Ø是否想要更改数据库模式以容纳更多信息,为增长提供空间或提高性能
4.2数据迁移工具
Ødbexport和dbimport
Ødbload和onload
Øunload和load
Øexternaltable
ØHigh-PerformanceLoader(HPL)
✧注意:
当从非informix数据源导入数据时,可以使用以下工具:
dbimport和dbload
HPL
IBMInformixEnterpriseGateway产品
4.3数据迁移工具之间的比较
4.3.1dbexport和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指定希望导出的数据库的名称
-bblocksize指定磁带设备的块大小(以千字节计)
-fpathname指定希望存储模式文件的路径名(如果要在磁带上存储数据文件)
-odirectory指定磁盘上的目录,dbexport将在该目录中创建database.exp目录
该目录保留dbexport为数据库创建的数据文件和模式
-stapesize指定可在磁带上存储的数据量(以千字节计)
-tdevice指定希望存储文本文件和可能存储模式文件的磁带设备路径名
Dbimport输入文件的位置
-c即使出现某些非致命错误,也可以完成数据导入
-q隐藏错误消息、警告和生成的SQL数据定义语句的显示
-V显示软件版本号和序列号
-version扩展-V选项来显示有关构建操作系统、构建号和构建数据的其他信息
-X识别字符字段中的HEX二进制数据
Database指定要创建的数据库名称
-bblocksize指定磁带设备的块大小(以千字节计)
-fpathname指定dbimport可在何处找到用于输入的模式文件,该文件用来在从磁带读取数据文件时创建数据库
-idirectory指定磁盘上database.exp目录的完整路径名,该目录中包含dbimport用来创建和装入新数据库的输入数据文件和模式文件。
目录名必须与数据库名相同
-stapesize指定可在磁带上存储的数据量(以千字节计)
-tdevice指定包含输入文件的磁带设备的路径名
●案例
1.使用dbexport导出:
[informix@vm1~]$mkdirdbexport
[informix@vm1~]$cddbexport/
[informix@vm1dbexport]$dbexporttest
{DATABASEtestdelimiter|}
grantdbato"informix";
{TABLE"informix".testtablerowsize=102numberofcolumns=7indexsize=0
}
{unloadfilename=testt00103.unlnumberofrows=1972124}
createrawtable"informix".testtable
(
fnamechar(20),
lnamechar(20),
companychar(20),
addresschar(20),
citychar(15),
statechar
(2),
zipcodechar(5)
);
revokeallon"informix".testtablefrom"public"as"informix";
revokeusageonlanguageSPLfrompublic;
grantusageonlanguageSPLtopublic;
dbexportcompleted
real0m8.841s
user0m2.622s
sys0m0.753s
2.将导出数据拷贝到目标服务器:
[informix@vm1~]$scp-rdbexport/vm2:
/home/informix/
3.使用dbimport导入数据:
[informix@vm2~]$cddbexport/
[informix@vm2dbexport]$dbimporttest
{DATABASEtestdelimiter|}
grantdbato"informix";
{TABLE"informix".testtablerowsize=102numberofcolumns=7indexsize=0
}
{unloadfilename=testt00103.unlnumberofrows=1972124}
createrawtable"informix".testtable
(
fnamechar(20),
lnamechar(20),
companychar(20),
addresschar(20),
citychar(15),
statechar
(2),
zipcodechar(5)
);
revokeallon"informix".testtablefrom"public"as"informix";
revokeusageonlanguageSPLfrompublic;
grantusageonlanguageSPLtopublic;
dbimportcompleted
real1m44.177s
user0m7.890s
sys0m2.185s
导入导出共计耗时:
113.018s
4.3.2dbload
●将数据从一个或多个文本文件传送到一个或多个现有表中
●装入期间会进行表锁定
●优点
✓可以修改数据库模式
✓可以在操作系统间移动数据
✓可选的日志记录功能
✓适中的易用性
✓可以从非informix数据源导入数据
●缺点
✓速度比dbexport、dbimport、onload慢
●用法
dbload[-ddbname][-ccfilname][-llogfile][-eerrnum][-nnnum]
-d数据库名
-ccfilname命令文件名
-l指定错误日志文件的文件名或路径名
-e在服务器abort之前的错误行数
-n以行数指定提交间隔默认间隔为100行
-p如果坏行数超过限制将提示要求指示信息
-r阻止dbload在装入期间锁定表,这样就在装入迁建允许其他用户更新表中的数据
-s检查命令文件中的语句语法而不插入数据
●案例
1.使用unload语句或者dbexport将表卸载到输出文件
[informix@vm1~]$mkdirdbload
[informix@vm1~]$cddbload
[informix@vm1dbload]$viunload.sh
dbaccesstest< unloadto"/home/informix/dbload/unload"select*fromtesttable; EOF [informix@vm1dbload]$shunload.sh Databaseselected. 1972124row(s)unloaded. Databaseclosed. real0m9.575s user0m3.122s sys0m0.981s2. 2.使用dbschema实用程序捕捉表模式和行类型必须使用-ui/-ua/-uia/all选项来获得命令行类型 [informix@vm1dbload]$dbschema-dtest-ttesttable-q>dbload.sql real0m0.416s user0m0.005s sys0m0.027s 3.将使用unload导出的数据以及使用dbschema导出的模式文件拷贝到目标服务器 [informix@vm1dbload]$scpunloadvm2: /home/informix/ [informix@vm1dbload]$scpdbload.sqlvm2: /home/informix/ 3.使用dbaccess在目标服务器中重建表模式(数据库名在目标服务器中要拥有) [informix@vm2~]$dbaccesstestdbload.sql real0m0.027s user0m0.008s sys0m0.005s4. 4.创建dbload命令文件(unload为数据导出的文件名7为每个数据行的字段数) Vicommand. fileunloaddelimiter'|'7; insertintotesttable; 5.运行dbload命令 timedbload-dtest1-ccomm-lerrlog real2m11.003s user0m10.564s sys0m3.325s 导入导出共计耗时: 141.021s 4.3.3onunload和onload ●将数据库中的数据卸载到磁带或磁盘中的文件中;将通过onunload命令创建的数据装入到数据库服务器中 ●以二进制格式和页大小为单位复制数据windows4Klinux2K ●在使用onload和onunload实用程序之前,必须将压缩表和分段表中的数据解压缩 ●允许对表进行select和update ● ● ●优点 ✓速度快可选的日志记录功能 ●缺点 ✓只在同一操作系统上具有相同版本的数据库服务器间移动数据 ✓无法修改数据库模式 ✓使用难度大 ✓不可用于SE7.22-7.25SE5.1或更早版本 ●用法 onunload[-l][-t [ onload[-l][-t [-d [ -l指示onunload分别从LTAPEDEVLTAPEBLK和LTAPESIZE读取磁带设备块大小和磁带大小的值 -b指定磁带设备的块大小(以千字节计) -s指定存储在磁带上的数据量(以千字节计) -t指定磁盘上文件的路径名或安装输入磁带的磁带设备的路径名 ●案例 1.使用onunload实用程序下载数据 [informix@vm1~]$touchonunload [informix@vm1~]$onunload-t/home/informix/onunloadtest PleasemounttapeandpressReturntocontinue... Pleaselabelthisastapenumber1inthetapesequence. real0m18.873s user0m0.005s sys0m0.010s 2.将下载的数据拷贝到目标服务器 [informix@vm1~]$scponunloadvm2: /home/informix/ 3.使用onload实用程序将数据上传(在目标端此数据库应该是不存在的) [informix@vm2~]$onload-t/home/informix/onunloadtest PleasemounttapeandpressReturntocontinue... Theloadhassuccessfullycompleted. real0m54.308s user0m0.005s sys0m0.020s 导入导出共计耗时: 73.178s 4.3.4unload和load语句 ●卸载和装入指定的行 ●会产生长事务需要将其多次提交 ●Unload不锁表load会锁表并产生长事务 ●优点 ✓可以修改数据库模式 ✓可以在操作系统间移动数据 ✓易于使用 ✓可选的日志记录功能 ●缺点 ✓只接受指定的数据格式 ●案例 1.使用unload语句将表卸载到输出文件 [informix@vm1~]$mkdirdbload [informix@vm1~]$cddbload [informix@vm1dbload]$viunload.sh dbaccesstest< unloadto"/home/informix/dbload/unload"select*fromtesttable; EOF [informix@vm1dbload]$shunload.sh Databaseselected. 1972124row(s)unloaded. Databaseclosed. real0m9.575s user0m3.122s sys0m0.981s2. 2.使用dbschema实用程序捕捉表模式和行类型必须使用-ui/-ua/-uia/all选项来获得命令行类型 [informix@vm1dbload]$dbschema-dtest-ttesttable-q>dbload.sql real0m0.416s user0m0.005s sys0m0.027s 3.将使用unload导出的数据以及使用dbschema导出的模式文件拷贝到目标服务器 [informix@vm1dbload]$scpunloadvm2: /home/informix/ [informix@vm1dbload]$scpdbload.sqlvm2: /home/informix/ 3.使用dbaccess在目标服务器中重建表模式(数据库名在目标服务器中要拥有) [informix@vm2~]$dbaccesstestdbload.sql real0m0.027s user0m0.008s sys0m0.005s4. 4.在目标服务器中使用load语句导入数据 [informix@vm2~]$viload.sh dbaccesstest< loadfrom"/home/informix/unload"insertintotesttable; EOF [informix@vm2~]$timeshload.sh real1m25.477s user0m6.251s sys0m2.150s 导入导出共计耗时: 95.495s 4.3.5externaltable最大化的利用I/O利用率11.7基本上百分之百利用I/O ●优点 ✓快速重建大数据量的表 ✓在线增量数据加载入库 ●缺点 Externaltable不支持 –Index –Primarykey,uniquekey,foreignkey –Trigger –Merge语句的目的表 –一个查询语句中只能含有一个外部表(表关联的时候不能是外部表和外部表) –不能作为outerjoin的outertabname –Update和delete语句 –loadfrom./orders.unlinsertintoorders_ext –Altertable语句 –Grand,revoke语句 –LBAC –… ●介绍: ØIDS11.5.xC6的新特性 Ø一个正常的表是由informix进行存储管理即表的数据是通过informix自身进行管理,而外部表是以操作系统文件方式管理 Ø支持files和namedpipe Ø支持所有的数据类型 Ø可以通过sql接口进行访问IDS外部的数据 Ø高性能ETL工具 Ø利用SQL语句简单快速随大数据集合的导入、导出处理 ●定义外部表的数据对应的格式: ØDELIMITED符号分隔列的文本格式 ØINFORMIXInformix内部的格式,是一个二进制的格式 ØFIXED固定长度的格式 ●两种模式: ØDELUXE在表有indexes和unique约束的情况下,自动更新索引和检查约束,提供快速并行loading 使用单条记录insert方法来load数据,处理index和每一行数据,只对处理的记录锁定,目标表的其他记录可以被同时访问 当下列情况下使用该模式: 重建index的代价非常高 当需要使用delete释放的空间 其他用户同时访问该表的记录 ØEXPRESS能提供最高效的load空载的情况表是空表 使用light-append,绕过bufferpool,只对rawtable+noindex有效 Load数据时,系统自动对表加“exclusive”锁,其他用户不可以访问该表 当导出的表中的数据绕开buffer直接将数据导入到外部表对应的磁盘中 开并发裸表 Systablestabtype为E的 ●案例 1.建立外部表 createexternaltabletesttable_extsameastesttable using ( 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", maxerrors100 ); 2.把数据unload到数据文件 [informix@vm1~]$viexter.sh dbaccesstest< ins 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1]
]