设备与实验室管理平台数据迁移的实践与思考

2016-05-31 08:41陈岸庆金映辉
中国教育信息化·高教职教 2016年3期
关键词:Oracle数据库跨平台

陈岸庆 金映辉

摘 要:为了提高我校设备与实验室管理平台的安全性和稳定性,我们制定了可行的方案,实现了数据的迁移,完成了系统软硬件的全面升级。本文详细记录了数据迁移的操作步骤和注意事项,为其他相似的业务系统数据迁移、跨平台升级提供借鉴。

关键词:数据迁移;跨平台;跨版本;Oracle数据库

中图分类号:G482 文献标志码:A 文章编号:1673-8454(2016)05-0044-03

一、引言

本校的设备与实验室管理平台是一个基于三层结构BS模式的设备管理系统,实现了对教学、行政办公、生活后勤设备以及大型精密仪器等固定资产的管理。设备与实验室管理平台运行环境为x86架构的Windows Server 2003操作系统,物理内存总数为4G,使用Oracle 10G数据库存储业务数据。近年随着高校信息化建设的不断发展、学校规模的扩大、实验室建设的快速发展、设备管理业务需求的不断增加,现有服务器的硬件性能已经严重落后。另外,系统架构也存在纰漏,Tomcat应用服务和Oracle 10G数据库部署在同一台服务器,导致频繁产生资源竞争。以上软硬件环境影响了设备与实验室管理平台的安全性和稳定性,常出现宕机现象,严重影响服务质量。因此,对服务器硬件升级以及对软件系统的优化是此次数据迁移的主要目的。系统优化主要从以下三个方面进行:①应用和存储分离。应用系统和存储系统分别部署在不同的服务器,这样既避免资源竞争,又提高了系统的安全性和处理效率。②操作系统平台的更换。生产数据库7x24小时不间断运行,选择较为稳定的Linux系统作为后台操作系统。③数据库版本的升级。11G版本的Oracle数据库为DBA和开发人员提供了更多的功能和特性,并且提升了数据库的稳定性。

二、数据迁移准备工作

1.硬件服务器的规划

目前虚拟机技术在许多应用环境中取代传统物理服务器。虚拟化极大地节省了成本,简化了管理,维护方便。因此在迁移之前,利用虚拟机技术对硬件服务器进行规划。我们准备了四台Dell PowerEdge R910服务器,采用Raid10方式构建冗余磁盘,安装Vmware Esxi 5.5U2,使用Vcenter组成群集,提供统一管理的虚拟机服务。构建两台虚机服务器,一台作为应用服务器提供对外Web服务,另一台作为Oracle数据库服务器存储日常业务数据,实现应用与存储的分离。应用服务器虚拟机安装Windows Server 2008 R2操作系统,部署Tomcat应用服务,第一和第二块网卡连接内网Oracle数据库,开启vmotion以及管理流量选项,第三和第四块网卡提供对外的Web服务。数据库服务器虚拟机安装Oracle linux 5.10操作系统,部署Oracle 11.2.0.0版本数据库,开启vmotion功能。VSphere 5.1[1]以上版本支持无共享存储的在线迁移功能,即使主机只有LOCAL DISK,没有挂载共享存储,也可以通过vmotion的网络来迁移虚拟机,将虚拟机在ESXi主机上的“内存数据”及“本地磁盘数据”通过网络迁移至其他ESXi主机上。利用这个特性,当主机发生硬件故障或者需要升级主机硬件配置的时候,也不会对业务产生很大的影响,确保业务不被中断。硬件服务器的规划如图1所示。

2.制定迁移方案

为了尽量减少停机时间,计划在2小时之内完成全部迁移工作。正因为如此,需制定详细可行的迁移方案,确保迁移成功。万一迁移失败,要能及时恢复。

(1)迁移前需做好以下工作

①迁移方式的选择。

Oracle数据库提供了多种数据迁移的方式:EXP/IMP逻辑导入导出,数据泵,Rman备份恢复,表空间传输,高可用性dataguard、stream等。本校的设备与实验室管理平台作为一个业务系统,为教职工提供固定资产管理服务。如果数据迁移导致长时间停机,会严重影响用户开展日常工作。利用Oracle传输表空间(Transporting Tablespaces Between Databases)[2]的特性能够满足需求,在较短时间之内快速完成数据迁移,同时也满足跨平台(Windows到Linux)以及跨版本(Oracle10G到11G)的技术要求。

②安装数据库服务器,配置Oracle 11G数据库,编写好Rman[3]备份恢复脚本。

③提前安装配置Web应用服务器,程序指向新的Oracle数据库,并且做好测试工作。

(2)迁移过程中需做好以下工作

①在迁移当天夜间,停止源端服务器的Web服务,设置数据库的表空间状态为只读。

②此时业务处于停止状态,然后从源数据库中导出表空间元数据,拷贝元数据和表间数据文件到目标数据库,拷贝完成之后导入表空间元数据到目标数据库中。

③最后设置目标端数据库表空间为读写。

④测试Web应用是否正常。如果出现短时间内无法解决的问题,那么就进行简单的回退工作:重新更改源数据表空间的状态为读写,启动源端Web应用,恢复正常业务。

三、数据库迁移实现

1.系统字节码的确定

跨平台迁移表空间,需要查询视图V$TRANSPORTABLE_PLATFORM,确定源系统和目标系统ENDIAN_FORMAT是否一致。ENDIAN_FORMAT是系统平台的字节码,表示数据存储和处理的顺序。运行命令如下:

Select * from V$TRANSPORTABLE_PLATFORM;

此次迁移工作中源端的服务器操作系统Microsoft Windows 和目标端服务器操作系统Linux x86的ENDIAN_FORMAT都是Little,那么就省去了使用RMAN命令转换数据文件的步骤。

2.自包含检查

源数据库表空间进行自包含检查,确定需要迁移的对象是否引用其他表空间。使用数据库自带的PL/SQL包进行检查,拥有EXECUTE_CATALOG_ROLE 角色权限的用户可以运行PL/SQL包:

EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('表空间名称', TRUE);

如果发现违反条件的对象,可以通过如下命令查看结果:

SELECT * FROMTRANSPORT_SET_VIOLATIONS;

如果无返回数据说明表空间是自包含的。

3.生成传输表空间数据集

用户必须拥有EXP_FULL_DATABASE角色的权限,才可以生成传输表空间数据集。以下为操作的详细步骤:

① 设置数据表空间集为只读。

SQL> ALTER TABLESPACE “表空间名称” READ ONLY;

Tablespace altered.

② 导出源数据表空间元数据。

元数据是描述数据结构的信息,实际数据并没有导出,所以即使表空间的数据量巨大,导出也能很快完成。

SQL> HOST

$EXPDP system/password DUMPFILE=sbc.dmp DIRECTORY=sbc_dir_source

TRANSPORT_TABLESPACES = “表空间名称”。

DUMPILE定义元数据文件的名称,DIRECTORY定义了dmp文件存放的位置,在使用导入导出之前必须先定义DIRECTORY对象,并且赋予read和write权限给public。

③ 完成之后,退回到SQLPLUS命令行

$ EXIT

如果系统字节码endian不一致,此时可以使用RMAN命令来进行转换。

4.传输表空间数据集

数据文件和表空间元数据需要拷贝到目标数据库。可以使用多种方式实现拷贝:

①Linux操作系统从远程Windows系统主机拷贝文件,可以使用SCP命令;

②使用Oracle提供的 DBMS_FILE_TRANSFER程序包,可以方便地从本地数据库和远程数据库之间传输文件;

③使用SecureCRT、FileZilla等FTP工具实现远程拷贝。

5.导入传输表空间数据集

导入操作不需要用户拥有特别的权限,直接运行如下命令:

IMPDP system/password DUMPFILE=sbc.dmp DIRECTORY=sbc_dir_target TRANSPORT_DATAFILES=/路径/数据文件名称.dbf。

DUMPFILE参数定义导入的元数据文件名称。The DIRECTORY 定义dmp文件存放位置,TRANSPORT_DATAFILES参数定义数据文件所在路径和文件名称。

命令运行成功之后,源表空间所有数据已经拷贝到目标数据库。查看导入日志是否有错误发生,同时更改表空间的状态为读写。至此,数据迁移操作全部完成。

四、数据迁移工作思考

数据迁移是一个非常复杂和细致的过程,它要求设计与实施人员具备多元化的知识结构,否则就会陷入顾此失彼的境地。一个完整和成功的数据迁移解决方案包含六个部分:①具备专业技能的人员;②经过验证的解决方案;③稳健可靠的流程和方法论;④交付前实验室模拟验证;⑤高效的迁移工具;⑥应急的回滚措施。任意一个条件的缺乏都有可能导致数据迁移不成功。[4]

本次数据迁移使用传输表空间特性实现,整个迁移过程并不繁琐。但是笔者在实际操作中,还是遇到了一些问题。数据迁移完成之后,应用系统某些模块发生错误,通过查找原因,发现目标表空间中存储过程、程序包、视图、触发器等都没有生成,这类对象并不是数据段的对象,都是属于SYSTEM表空间,传输表空间不能对SYSTEM表空间的对象进行迁移。因此,与字典信息有关的对象,没有数据段的对象是不会在目标端生成,需要重新做一次exp/imp row=no导入导出,重新导入导出对象结构,这样可以快速在目标端生成SYSTEM表空间的对象。

Oracle环境中,传输表空间是快速数据迁移的一种技术手段,理想情况下传输速率可以达到近似网络直传的速率。[5]相对于其他手段,传输表空间最大的好处就在于不需要进行繁复的抽取和还原过程,并且可以实现跨平台的数据迁移。但是使用传输表空间特性是有限制的,需要满足一些基本条件,否则迁移过程中会发生问题。

①源数据库和目标数据库必须使用相同的字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。

②源数据库表空间的名称和目标数据库中的表空间名称不允许重复,如果相同,需要预先更改表空间名称。

③表空间中对象如果有引用其他对象,那么所有对象必须在同一个表空间中。如果引用对象在其他表空间,那么这些表空间需要一起迁移。

④不能移动SYS用户拥有的对象以及SYSTEM表空间中的内容。例如PL/SQL、Java 类、视图、同义词、用户、权限等。

⑤传输表空间需要系统平台的字节码(endian_format)相同。

迁移前期的准备工作还是很重要的,花费时间仔细参阅官方技术手册和官方文档还是非常值得的。

五、结束语

数据服务将成为高校信息化核心驱动力。数据无疑是最核心的驱动力。[6]数据的存储以及数据的迁移成为时刻需要关注的问题。

为了降低数据迁移对系统的影响,我校设备与实验室管理平台使用传输表空间特性在短时间之内完成整个应用数据的迁移,并且快速地恢复了应用系统的正常运行。目前新的应用平台配置使用高性能的机架式服务器,采用更为稳定的Linux系统运行Oracle11G版本数据库。系统在新的运行环境下,整体性能得到增强,系统运行效率、稳定性、安全性都得到大大的提升。数据库能够处理复杂事务,使业务系统的运行更加流畅。数据迁移为设备与实验室管理平台的稳定运行奠定了坚实的基础。

参考文献:

[1]VMware.VMware vSphere 5.5 文档中心[DB/OL].http://pubs.vmware.com/vsphere-55/index.jsp.

[2]Oracle.Database Administrator's Guide 10g Release 2(10.2) B14231-02[DB/OL].http://docs.oracle.com/cd/B19306_01/server.102/b14231/toc.htm.

[3]Oracle.Database Backup and Recovery User's Guide 11g Release 2 (11.2) E10642-06[DB/OL]. http://docs.oracle.com/cd/E11882_01/backup.112/e10642/toc.htm.

[4]数据迁移助力鄂尔多斯政务智能化[DB/OL]. http://www.sxjdw.org.cn/Details.aspx?pn=22&id=2311.

[5]朱有存,杨晓蓉,罗丹,郭平彩.用传输表空间技术升级Oracle数据库[J].医疗卫生装备,2012(7):39-40.

[6]宓詠.数据服务将成为高校信息化核心驱动力[J].中国教育网络,2015(8).

(编辑:王天鹏)

猜你喜欢
Oracle数据库跨平台
跨层级网络、跨架构、跨平台的数据共享交换关键技术研究与系统建设
一款游戏怎么挣到全平台的钱?
跨平台APEX接口组件的设计与实现
Oracle数据库安全管理策略的优化
Oracle数据库应用问题与解决方案分析
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统
基于B/S的跨平台用户界面可配置算法研究