基于地震资料处理的数据库迁移方法研究

2023-10-05 08:10金弟邵萌珠何嘉诚叶月明王宗仁
电子设计工程 2023年19期
关键词:数据库系统工区实例

金弟,邵萌珠,何嘉诚,叶月明,王宗仁

(中国石油杭州地质研究院计算机应用研究所,浙江杭州 310023)

地震资料处理平台是油气勘探开发领域重要的科研装备[1-2],对油气井位部署和规模油气藏发现起到重要作用。杭州地质研究院是以海相海洋为特色的中国石油下属油气勘探研究院,开展国内外油气勘探地震资料目标处理研究。随着油气勘探深入开展,需对现有地震资料处理平台的数据库系统进行升级改造,为了有高性价比以及快速有效方便完整进行数据库迁移,提出将Oracle 数据库[3-4]迁移到PostgreSQL 数据库[5-7]的数据迁移解决方案。为油气勘探开发领域的数据库数据迁移提供借鉴参考。

1 数据库迁移设计方案

1.1 数据组织结构分析

现有地震资料处理的Oracle 数据库系统共有OPM、OCM、RDM 等7 个数据库实例,涉及的处理工区有常规处理、交互式处理、时间偏移、深度偏移四种地震工区类型[8]。如图1 所示,整个数据库系统数据组织架构以地震项目工区为核心,每个地震项目工区在物理上对应一个表空间,逻辑上对应一个Schema,每个Schema 对应所属的数据库对象集。

图1 地震资料处理数据组织逻辑结构

可以看出,数据库数据组织结构具有多数据库实例、多地震项目工区类型、多Schema、多数据库对象、多数据变化等特点。这些特点增加了数据库数据迁移过程的复杂性,提升了对数据迁移完整性的要求,是数据库数据迁移的难点所在。也是在设计数据迁移方案时,重点需要解决的关键性问题。

1.2 数据迁移技术流程

通过上述对地震资料处理平台Oracle 数据库数据组织逻辑结构的阐述与分析,数据库系统有多个数据库实例和一定规模数量不同类型的地震资料处理项目工区Schema。

数据库数据迁移以地震资料处理项目工区为一个逻辑迁移单位,数据库数据迁移方法的核心思想是采用模板机制方法设计来解决。

1)分析源数据库系统中数据库实例层的数据组织结构,构建数据库实例级模板及相关参数,分析源数据库系统的不同地震项目工区层的数据组织结构,构建地震工区级模板及相关参数,完成二类模板构建及参数选择。

2)设计模板转换程序,针对具体的数据库实例名称、项目工区类型、项目工区名称等参数输入完成模板到项目工区级数据迁移的SQL 执行脚本集。

3)根据SQL 执行脚本集完成数据库数据迁移和数据完整性、一致性检查。数据迁移技术流程如图2所示。

图2 数据迁移技术流程

1.3 创建模板与参数选择

随着地震资料处理平台长期使用和地震资料处理项目工区增多,7 个数据库实例与不同地震项目工区的组合在源数据库系统中产生大量的Schema,每个Schema 又产生众多所属的数据库对象集,因此源数据库系统的各个数据库实例中具有Schema 数量的动态变化和数据库对象集合的数量规模不确定性等特性,通过模板机制能很好地解决这些问题。

针对7 个数据库实例设计7 个数据库实例级的模板。如图3,针对四种地震资料处理项目工区类型设计四类地震项目工区级模板,针对每个数据库实例模板和每类地震项目工区类型的特点,结合对应地震项目工区Schema 中的数据库对象类型,每类地震项目工区级模板由若干数据库对象子模板构成,结合模板的参数选择实现模板到可执行迁移脚本程序集的生成。

1.4 迁移工具设计

迁移工具主要由SQL 模板集、Perl[9]转换程序、SQL 脚本集等构成。

1)SQL 模板实现在1.3 节阐述的各类模板。

2)Perl 转换程序是迁移工具的主程序执行代码,主要包括把SQL 模板转换成SQL 脚本集和执行SQL 脚本集两项功能。

图3 二类模板创建与执行脚本生成关系

3)SQL 脚本集分为创建、拷贝、修改三种类型,创建类SQL 脚本主要完成表、序列、视图、触发器等数据库对象的创建功能,拷贝类SQL 脚本完成对应数据库对象的实体数据从源数据库系统服务器迁移到目标数据库系统服务器,修改类SQL 脚本通过追加约束、索引等数据库操作修改数据库的地震资料处理项目工区相关联的Schema 所属数据库对象集。

2 数据库数据迁移实现

该节以OPM 为数据库实例,某海域的一个时间偏移地震项目工区作为数据迁移案例。源数据库系统为2010 年建设的Oracle 数据库,目标数据库系统为2022 年建设的PostgrepSQL,源数据库与目标数据库的迁移环境如表1所示,案例数据信息如表2所示。

表1 数据迁移环境

表2 案例数据信息

2.1 迁移前相关准备工作

2.1.1 迁移数据备份

在进行数据迁移之前,为了解决在数据迁移过程中出现数据缺失、数据错误导致数据无法恢复的问题,需对源数据库系统Oracle 进行备份。由于迁移数据以地震资料处理项目工区为迁移单位,因此需要对迁移的项目工区进行备份。在源数据库服务器上,利用Oracle Export 工具[10]对该项目工区对应的Schema 的数据库对象集合进行逻辑备份。

2.1.2 Oracle_FDW安装配置与互连

数据迁移工作需要在目标数据库服务器上对源数据库服务器执行远程数据迁移任务,通过PostgreSQL 的 Oralce_FDW(ForeignDataWrapper for Oracle Database)[11]方式创建源数据库系统与目标数据库系统互连数据迁移通道。目标数据库服务器需要进行如下安装配置:

2.2 创建OPM数据库实例

2.2.1 创建OPM数据库实例模板

在目标数据库服务器上,OPM 数据库实例创建主要包括两项功能,一是创建OPM 数据库用户名、实例名以及相关授权操作,二是创建OPM 数据库用户对应的Schema 数据库对象集合。下面为OPM 数据库实例模板中创建数据库的部分SQL 代码,其中$dbuser、$dbpassword 等以$开头的为参数输入(下同):

2.2.2 生成创建数据库实例执行SQL脚本

通过转换程序模块把OPM 数据库实例模板转换成可执行的SQL 脚本,以下为转换程序函数调用入口:

PGUtils 是转换程序工具包,ConvertToDBSQL 函数共有5 个参数。第一个参数为OPM 数据库实例模板;第二个参数为除模板之外新追加的执行程序代码变化部分;第三个参数为转换成可执行的SQL 脚本的存储位置;第四个参数为模板中需要被替换的部分参数列表,一般是$开头的参数,如$dbuser 等;第五个参数为实际替换的具体参数值列表,如hzopm001。

2.3 创建时间偏移地震项目工区

2.3.1 动态构建时间偏移地震项目工区模板

针对源数据库服务器,根据地震项目工区模板类型、源数据库的OPM 数据库名称、源OPM 数据库中被迁移的Schema 名称,生成该Schema 对应的数据库对象集数据,为转换程序生成最后的数据库对象创建提供源数据库对象信息。在hzopm001 数据库实例中,ZZ99 项目工区对应的Schema 主要包括表、视图、序列、角色、触发器等数据库对象类型。模板生成信息函数如下:

2.3.2 地震项目工区数据库对象创建

在已经创建目标数据库服务器的OPM 数据库实例中,完成批量自动创建地震项目工区对应的表空间、用户、权限等。对于一些特殊的数据库对象集,如数据库对象索引index、约束constraint、序列sequence 等与源数据库对应不一致,需要在目标数据库系统中额外重建。

如在模板数据库对象集中,对地震项目工区输入表PROJECT_INPUT_DATA、作业运行状态视图JOB_RUN_VIEW 等自动创建,而相关索引、约束、序列需另外重建。

2.4 执行数据迁移

完成创建数据库实例OPM 和时间偏移地震项目工区ZZ99,对应Schema 所属数据库对象集的元信息在目标数据库服务器中构建生成,开始进入用户数据的迁移工作。由于源数据库系统中数据对象集的元数据结构动态变化,在迁移数据的过程中,采用动态获取数据库对象的元数据结构信息方法。

以数据库对象table 为例,迁移过程方法如下:

1)输入Schema 名称、Tables 名称,从源数据库系统中动态获取Table 的元数据结构信息:

2)根据动态获取的源数据库系统中table 对应的数据结构信息,实现Table 中的源数据库系统用户数据迁移到对应的目标数据库系统中:

3)在迁移的过程中,参照文献[12-13]的方法解决数据转换过程错误、数据类型不一致、目标数据库字段信息不一致等常见问题。

2.5 数据迁移结果分析验证

数据迁移时在多台机器上执行多个任务,并通过网络传送大量数据,不可避免会出现错误[14]。需要对数据迁移结果的一致性与完整性进行检查,主要从数据库对象的数量、数据库对象存储的数据量以及地震资料处理应用软件获取数据库数据效果三个方面进行。

2.5.1 数据库对象数量

在源数据库系统中,向系统表user_objects 中获取所有的数据库对象类型及其对应的数据库对象数量,然后与目标数据库进行对比,确保数据迁移到目标数据库的数据库对象类型、数据库对象数量不丢失遗漏。图4为使用Oracle sqlplus和PostgreSQL psql 分别统计的数据库对象数量排名前五的源数据库与目标数据库的对象数量对比。

图4 数据迁移前后数据库对象数量对比

2.5.2 数据库数据量

地震资料处理涉及海量的地震资料采集文件数据、中间生成文件数据以及成果文件数据,这些文件数据信息主要存放在带有dataset 标识的相关表中,是核心数据信息之一。图5 列举了这些核心数据量排名前五的数据迁移前后的对比。

图5 数据迁移前后数据库数据数量对比

2.5.3 应用软件实效

图6 是迁移前基于Oracle 的Omega2011 应用中,旧地震项目工区ZZ98的25个有效地震资料处理作业流程。图7是迁移后基于PostgreSQL的Omega2021 应用中[15-19],新地震项目工区ZZ99 的25 个有效地震资料处理作业流程。数据库迁移前后确保相同的作业流程名和个数,而且Oracle数据库中的非活动的无效作业流程(标识打×)没有迁移到PostgreSQL数据库系统中。

图6 迁移前基于Oracle的Omega2011应用

图7 迁移后基于PostgreSQL的Omega2021应用

3 结束语

基于地震资料处理平台的数据库迁移是油气勘探行业科研装备更新换代的重要一环,在地震资料并行处理应用软件Omeg 的应用场景下,文中给出的从Oracle 数据库系统向PostgreSQL 数据库系统迁移的方法和工具取得了很好的效果。但是在整个迁移过程中,还存在着手动人工干预操作,如何从源数据库系统中自动智能化获取全面的元数据信息,并能自我纠错地生成对应的目标数据库系统元信息,迁移解决方案适用到更多的地震资料并行处理应用软件的应用场景中,这些都是今后下一步研究的方向和内容。

猜你喜欢
数据库系统工区实例
关于铁路编组站减速顶工区标准化建设研究
数据库系统shell脚本应用
精确发现溢流研究及在西北工区现场应用
铁路隧道定额工区长度和通风管线路工程量计算规则探讨
耀眼的橘红色——河南省焦作市公路局养护工区养护机械队速写
微细铣削工艺数据库系统设计与开发
实时数据库系统数据安全采集方案
核反应堆材料数据库系统及其应用
完形填空Ⅱ
完形填空Ⅰ