基于游标和LOAD技术的DB2数据库高效数据迁移方法

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:mitsuaki
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要]在DB2数据库中,游标cursor和LOAD技术相结合是进行数据迁移的有效解决方法,它的优点是迁移速度快,耗用时间短,当迁移海量数据时该优点尤其显著,而且被迁移的数据无需从源库导出保存到服务器文件系统上,节省存储空间,既适用于同一数据库内的数据迁移,也适用于异构操作系统平台上的不同DB2数据库间的数据迁移。
  [关键词]游标;LOAD技术;数据迁移
  中图分类号:TP311.13 文献标识码:A 文章编号:1009-914X(2016)03-0132-01
  1、前言
  在信息系统建设中,常常存在将某数据库中的数据一次性迁移到另一个数据库中的需求,这种迁移既可能发生在同一个数据库内的不同数据表之间,也可能会发生于不同数据库的数据表之间。本文假设场景是进行DB2数据库的数据迁移,如何准确、高效、方便地完成数据迁移,是DBA的重要工作。
  2、游标和LOAD技术
  DB2数据库进行数据迁移时,通常做法是首先从源库将数据用export方法导出保存到服务器文件系统上,然后再连接上目标数据库,用import方法将数据导入。但是这种方法存在两个缺点:
  (1)、需要先将被迁移数据export导出保存到文件系统上,这将占用文件系统存储空间,尤其是当迁移海量数据时,导出文件所耗用的存储空间将十分巨大和可观。
  (2)、import方法无法满足性能要求。用import方法向目标数据库加载数据时,速度低耗时长。尤其是当加载海量数据时,所耗费的时间将十分漫长。
  使用游标和LOAD技术相结合进行数据迁移,可有效避免上述两个缺点:
  (1)、使用游标方式的数据迁移,可避免导出文件耗用大量存储空间的缺点。它直接在源表、目标表之间进行数据的抽取、传输和加载,不需要将源表的数据先导出保存到文件系统上,不会产生中间数据文件。该方法快速高效、语法简洁,是一种数据迁移的好方法。
  游标(cursor)是关系型数据库中的一个重要概念,它提供了一种对从表中检索出的数据进行操作的灵活有效的手段。游标是一个指针,检索出数据结果后,游标首先指向结果集中的第一条数据,当第一条数据读取完成后,指针自动移动指向结果集中的下一条数据,直至遍历完成整个数据集。
  使用游标进行数据迁移时,需要事先创建出目标表的数据结构,而且目标表和源表的数据结构要保持一致或字段的数据类型是兼容的。
  (2)、LOAD加载方式能显著提升数据加载速度,明显缩短所耗用的时间。LOAD的加载原理及与import的区别是:import加载数据时,是对数据按照行方式进行处理,使用数据库SQL引擎把数据一行一行加载进入数据库,而LOAD方式则是对加载数据按照DB2物理存储方式进行格式化,然后将格式化的数据按页进行处理,绕过数据库SQL引擎直接在底层将页数据加载进入数据库,数据处理效率十分高效,非常适合于加载海量数据的场景。
  3、实现过程
  3.1 语法说明
  定义一个游标,然后使用LOAD方法操作游标将数据从源表写入目标表。假设迁移场景是:源表与目标表位于同一数据库(数据库的日志模式是循环日志模式),将源数据表tab1中的数据迁移到目标数据表newtab,目标表newtable的数据结构已经创建而且与源表保持一致,语法示例如下:
  connect to dbname user username@
  declare cur_1 cursor for select * from tab1@
  load from cur_1 of cursor insert into newtab@
  第一條语句的作用是连接数据库(语句中dbname指的是数据库名称,username指的是连接数据库的用户名);第二条语句的作用是游标的定义语句,cur_1是游标名称,从数据表tab1中检索所有字段的数据;第三条语句是使用load命令将游标中的数据加载进入目标表newtab。
  执行上述语法需要在数据库服务器上执行,在数据库服务器上将上述语法保存成一个txt文件,然后在DB2 CLP环境中执行db2 –td@ -vf filename.txt即可,在执行过程中,系统会提示用户输入密码,输入密码后,系统开始进行数据迁移。
  3.2 特定数据类型的数据加载
  若数据表中含有generated always as identity或generated always 类型的字段,那么上面的load命令在加载这种类型的字段时会出现报错,这时需要在load命令中添加特定的修饰符才能使数据加载成功。
  当表中包含有generated always as identity类型的字段时,需要添加的修饰符是:modified by identityoverride。完整语法是:
  connect to dbname user username@
  declare cur_1 cursor for select * from tab1@
  load from cur_1 of cursor modified by identityoverride insert into newtab@
  当表中包含有generated always 类型的字段时,需要添加的修饰符是:modified by generatedoverride。完整语法是:
  connect to dbname user username@
  declare cur_1 cursor for select * from tab1@   load from cur_1 of cursor modified by generatedoverride insert into newtab@
  3.3 不同数据库之间的数据迁移
  以上场景中描述的是源表和目标表在同一数据库中的数据迁移,若源表和目标表位于两个不同的数据库中,这时就需要游标的database选项,以指定从哪个数据库来加载数据,语法是:
  declare cur_1 cursor database srcdb user dbuser using pwd for select * from tab1@
  上述语法中,srcdb指的是源表所在的数据库的名字,dbuser指的是连接源数据库的用户名,pwd是该用户名的密码,在实际使用时,用相应具体值代替。
  完整語法是:
  connect to dbname user username@
  declare cur_1 cursor database srcdb user dbuser using pwd for select * from tab1@
  load from cur_1 of cursor insert into newtab@
  上面语法中,dbname指的是目标表newtable所在的数据库,srcdb是源表所在的数据库。执行上述语法需要在目标表newtable所在的数据库服务器上进行。
  3.4 日志模式对数据加载的影响
  load在对数据加载过程中,对数据库的影响与数据库的日志模式有关:当数据库的日志模式是循环日志模式时,load加载过程对数据库中其他数据表的存取并无影响,但当数据库的日志模式是归档日志模式时则会产生重要影响:load命令一运行就会立即将目标数据表所在的表空间置为backup pending状态,load命令运行完成后,表空间仍然处于backup pending状态,直至对整个数据库或对该表空间进行一次备份才会使表空间脱离backup pending状态回到正常状态。在此期间,表空间中的所有表的增删改操作都将会失败。如果目标数据库是一个已经投运在用的数据库,那么这种情况会使连接到此数据库的业务系统的运行发生中断,对于需要7X24连续不间断运行的信息系统来说,这种情况是不可接受的。
  为避免这种情况,可以使用load命令的nonrecoverable选项,语法如下:
  load from cur_1 of cursor insert into newtab nonrecoverable@
  按照上述语法运行load数据加载,就不会影响表空间的状态,表空间仍然处于正常状态,对表空间中表的增删改操作都将继续正常进行,业务系统继续处于正常运行状态。
  4、结束语
  游标和LOAD技术相结合,能够实现快速迁移DB2数据库中的数据,对于迁移海量数据尤其有效。对于DBA,是一种迁移数据的较好方案。
  参考文献
  [1] 徐明伟,王涛. DB2数据库管理最佳实践[M]. 北京:电子工业出版社,2011.
  [2] 王飞鹏. 运筹帷幄DB2[M]. 北京:电子工业出版社,2012.
  [3] 牛新庄. 深入解析DB2[M]. 北京:清华大学出版社,2009.
  作者简介:柴新(1974.10-),男,江苏电力信息技术有限公司,长期从事数据库方面的工作,具有丰富的数据库开发和运维经验。
其他文献
[摘 要]立式硫化罐,包括筒体、压膜装置、压盖、安全联锁装置、下法兰、上法兰和卡箍,下法兰颈部双面焊接在筒体上方,下法兰上设有上法兰,卡箍将上法兰和下法兰连接起来,上法兰中间设有一个孔洞,孔洞侧壁上设有槽形板,压膜装置卡在槽形板中。该立式硫化罐设计合理,通过对筒体、下法兰、上法兰和卡箍的强度和疲劳计算,将卡箍上与上法兰连接处设有8个啮齿,与下法兰连接处设有7个啮齿,上法兰上设有啮齿数量为8个,下法
期刊
[摘 要]以双向DC-DC Buck-Boost变换器为核心,用STC12C5A60S2单片机,差分式放大器,电阻分压电路,继电器等组成测控电路,来实现锂电池自动充放电的控制与状态检测。使锂电池充电更安全高效。  [关键词]双向DC-DC Buck-Boost变换器 锂电池充放电 状态监测  中图分类号:TM911 文献标识码:A 文章编号:1009-914X(2016)03-0130-01  1
期刊
[摘 要]随着信息技术的迅猛发展,计算机的应用已经渗透到各个行业的领域之中,是人们生活必不可少的一部分,随着应用范围的拓展,对计算机实践操作能力的要求也就越来越高,而作为培养人才的教师来说,应该结合学生的个性特征,根据教学内容构建不同的教学模式,从而打造优质的课堂教学,确保课堂教学的有效性。本文在此从几个不同的角度对如何做好中职计算机课堂教学改革做了一定的研究。  [关键词]中职;计算机;课堂教学
期刊
[摘 要]由于使用万用表测量保护压板的不当,很容易造成误跳运行开关,为解决生产难题,发明人专供技术难关,有针对性地发明一种保护压板专用表,经测试合格、实际使用满足要求,杜绝了压板投入的隐患。  [关键词]保护压板;测量;万用表;专用表  中图分类号:TM774 文献标识码:A 文章编号:1009-914X(2016)03-0129-01  引言  在电力系统中,保护压板(见右图)作为一种开关量,被
期刊
[摘 要]本文通過对分布式电源概念的分析,阐述了分布式电源的四个基本特征,并对常见的分布式电源,如太阳能发电,风力发电,生物智能发电,燃料电池等进行了介绍。  [关键词]分布式电源、DES、风力发电、太阳能发电  中图分类号:TM61;F426.61 文献标识码:A 文章编号:1009-914X(2016)03-0141-01  引言  分布式电源作为大电源的重要补充,具有清洁、高效的特点,将成为
期刊
[摘 要]现阶段,电子技术已经逐渐发展成为了我国国民经济发展过程中的一项核心技术,电子技术应用系统的发展与进步,对于人们生活水平的发展与提升起着重要的推动作用。本文就针对我国电子技术应用系统发展现状进行简单分析,旨在为日后的电子技术发展创新提供简单借鉴。  [关键词]电子技术;应用系统;发展现状  中图分类号:TM1 文献标识码:A 文章编号:1009-914X(2016)03-0143-01  
期刊
[摘 要]本文设计一种基于单片机控制的恒温系统研究,系统通过按键设置温度的上下限,当温度超出限制范围时,单片机驱动相应的负载工作,同时产生声光报警。  [关键词]STC89C51单片机,温度控制,DS18B20  中图分类号:TP273.5 文献标识码:A 文章编号:1009-914X(2016)03-0142-01  1.前言  温度是工业生产中主要的被控参数之一,但随着现代工农业技术的发展及人
期刊
[摘 要]为研究许疃矿区地表移动变形规律,在82首采区建立了地表移动观测站。以实测数据为基础,通过分析获得了许疃矿在巨厚表土层下开采煤层地表移动的动静态规律,求得了相关动态参数和静态参数;获得了本区巨厚表土层充分采动条件下的地表沉陷规律、相关角值参数和概率积分法预计参数;为矿区今后“三下”壓煤开采和保护煤柱留设提供了科学依据。  [关键词]巨厚表土层;观测站;地表移动;变形;参数;规律;  中图分
期刊
[摘 要]本文对发电厂锅炉压力容器的安全性能进行评价,分析了锅炉压力容器对安全生产所造成的影响,从技术、制度等多个方面对其进行分析,针对性的提出了解决建议,旨在提高锅炉压力容器的安全性能,促进企业发展。  [关键词]锅炉压力容器;安全评价;研究  中图分类号:TH49 文献标识码:A 文章编号:1009-914X(2016)03-0131-01  引言  随着科学技术的不断发展,各类先进的仪器设备
期刊
[摘 要]通常讲的差动保护包含了变压器差动保护、发电机差动保护和母线差动保护。实现差动保护的基本原则是一致的,即将各侧元件的电流互感器按差接法接线,正常运行以及保护范围外部故障时,差电流等于零;保护范围内部故障时差电流等于故障电流。但是由于诸多因素的影响,差动继电器的动作电流按躲开外部故障时产生的最大不平衡电流整定远远不能满足系统的要求。针对目前差动保护的发展概况及在我厂设备更新改造中的广泛应用,
期刊