数据泵技术在江苏油田业务协同平台数据库迁移中的应用

时间:2022-10-14 08:54:56

数据泵技术在江苏油田业务协同平台数据库迁移中的应用

摘 要:随着oracle数据库不断发展以及新技术的引入,数据库中数据量呈几何增长,导致的后果对硬件要求不断提高以及数据迁移、版本升级难度加大。本文通过介绍江苏油田业务系统平台数据库的迁移过程,阐述了oracle数据泵技术在跨版本、跨平台应用中需要注意的事项,在实际操作中取得良好效果,具有一定参考意义。

关键词:数据泵 业务系统平台 数据迁移

一、引言

江苏油田勘探开发一体化业务协同平台是江苏油田成立以来最大、最复杂的信息化工程,它涵盖了油田各种主营业务,但是随着数据量越来越大,数据库运行性能和系统稳定的重要性越来越大。基于IT技术的发展,决定把平台的数据库迁移到装有oracle11gRAC的集群服务器上。

二、数据迁移整体思路

本次数据库迁移是从10g版本迁移到11g版本,并从单实例数据库迁移到RAC集群,属于异构环境迁移,大幅度地提高了迁移的复杂程度。

数据库迁移过程中面临的挑战:

1.缩短业务中断的时间

即使是有计划的业务中断也将会对企业造成巨大的损失,据业界估计,80%的停机时间都来源于计划的下线,其中包括硬件迁移等。因此尽量缩短迁移过程所需要的时间是提高系统连续运行的关键,目前普遍要求在 5个小时内完成迁移,而且尽量不影响正在运行的业务系统。因此,如何保证在异构环境下的迁移,并且缩短迁移的时间和业务中断时间是最关键的环节。

2.数据的准确性

3.能否在前后期准备和迁移期间,大大减少对业务系统的影响

4.可以回退到旧环境,等等

考虑了各种因素以后,决定采用先确保数据迁移成功,再确保应用系统能够正常使用,最后优化迁移策略的实施步骤。

三、数据库迁移实施

1.数据库迁移

在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具(数据泵),还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP有两个优点:一是为数据及数据对象提供更细微级别的选择性( 使用exclude, include , content 参数);二就是可以并行执行(parallel),从而缩短数据迁移的时间,所以决定采用这种迁移方式。具体迁移步骤如下:

1.1建立目录对象

数据泵是一个基于服务器端的高速导入导出工具,通过dbms_datapump 包来调用,在服务器端建立目录并通知oracle指定目录对象。

# mkdir /data/lob_dir

# chown ╞R lobftp:oinstall /data/lob_dir

1.2原数据库导出且使用并行导出方式

在原数据库服务器上用oracle用户导出数据到目录对象中,由于基本表有一张大表,所以先不导出该表。

# expdp system/************ parfile=expdp_database.par

# more expdp_database.par

SCHEMAS=jsyt

DUMPFILE=LOB_DIR:jsyt_exsjt_%U.dmp /*使用目录对象*/

FILESIZE=6G

PARALLEL=4 /*使用并行参数*/

LOGFILE=LOB_DIR:jsyt_exsjt.log /*使用目录对象*/

JOB_NAME=JOB_JSBS_EXCLUDE_SJT

EXCLUDE=TABLE:"LIKE 'CJCGZL_TSC%'"/*使用过滤参数*/

1.3导出数据文件拷贝到目标服务器

1.4数据文件导入目标数据库

在目标服务器上使用oracle用户把数据文件导入数据库,在目标服务器上也要建立目录对象,才能使用数据泵导入数据。

# impdp system/************ parfile=impdp_database.par

# more impdp_database.par

directory=LOB_DIR /*使用目录对象*/

remap_schema=JSYT:C_JSYT

dumpfile=jsyt_exsjt_%U.dmp

PARALLEL=4 /*使用并行参数*/

CLUSTER=N /*使用集群参数*/

LOGFILE=jsyt_im_sjt_paraller.log

JOB_NAME=JOB_IMPDP_JSYT

1.5生成生产用户授权语句

编写脚本生成生产用户授权语句、查询用户授权语句、同义词授权语句、过程包授权语句。

==================================================

=================

-- 生成【将JSYT用户所拥有表的操作权限授予JSBS用户】语句

-- connect JSYT/*****

==================================================

==================

select 'grant select, insert, delete, update on ' || object_name || ' to jsbs;'

from user_objects

where object_type in ('TABLE') AND

object_name not like 'BIN%';

。。。。。。

2.数据库迁移技术方案完成,在迁移工作中总结几点需要注意的地方:

2.1并行参数的设置

并行参数(PARALLEL)可以开启多线程进行数据库导出导入工作,但是数值并不是越大越好,并行线程是按照表来导出导入数据,导入导出执行时间跟基本表的大小有很大关系,该数据库有超过10G的基本表有8个,其中有一个表达到了235G,最后别的表都完成导入导出,这个表的线程还在执行工作,这时候并行就不起作用。

2.2CLUSTER参数的设置

将ORACLE 10G 数据库数据迁移到ORACLE 11G RAC环境时,遇到了"ORA-31640: unable to open dump file "的错误。而且发现大的表才会报这个错,小的表可以顺利地导入进去。

因为报的错误是不可以读dump文件,仔细检查了文件及其目录的访问权限,发现没有任何问题。在metalink上搜索,找到了ID=1071373.1的文章,知道了真正的原因。原来11g R2的IMPDP 增加了一个参数设置:CLUSTER,在设置了parallel参数>1的情况下, 可以支持多个节点的同时导入工作。这边实际的情况是,另外一个节点无法访问到dump文件,我也是只想从一个节点导入数据,所以需要关闭这个选项.即CLUSTER=N

3.系统应用测试

使用weblogic重新配置数据源至新的数据库服务器,并进行应用系统的测试工作。期间发现很多模块使用不了,究其原因是数据库存储过程报错,问题出在wmsys.wm_concat函数上。wmsys.wm_concat的作用是将多行合并为一行,但是,在Oracle 10G中该方法返回值可直接转为String后使用,但是在11G中却是Clob类型,我们必须将clob转为String 或其他类型后才可以使用。

经过修改,再次测试时系统各个模块均能正常使用。

4.正式迁移

在进行了大量的准备工作后,本着缩短业务中断的时间、数据的准确性、可以回退到旧环境的原则,正式迁移开始了。

准备如下:

4.1表空间提前划分

按照原数据库的表空间划分情况,在目标服务器数据库上划分表空间。

4.2表迁移顺序制定

系统的备份策略是异机每天EXP全库备份,且235G的表更新频率低,基本一个星期更新一次。所以先把前一天的全库备份拷贝到目标服务器中,使用IMP先将该表导入到数据库里面。

4.3原数据库可用性确认

在数据库迁移的同时,原数据库只关闭监听,并不关闭数据库。保证就旧环境可用。

迁移工作开始,,由于数据库的数据量大,一次导入需要3个小时,导入也需要2个小时,加上后续的授权以后连接池设置,整个迁移进行要到6个小时,迁移工作成功。

四、结束语

本次通过数据泵技术实现数据库的升级以及数据的迁移,在迁移过程中,不断发现并解决版本差异带来的应用问题,以及测试迁移参数设置对迁移效果的影响,保证数据迁移的正确性和完整性。

参考文献

[1]李丙洋 《涂抹oracle—三思笔记之一步一步学oracle》 中国水利水电出版社 2010.

上一篇:浅谈数字程控交换机管理维护 下一篇:变问题为探究的教学设计