扒一扒Oracle数据库迁移中的各种坑

简介:
\
 

 

Oracle迁移是数据库运维中一项必不可少的工作,具体到项目层面上则有系统割接、数据库版本升级迁移、数据库主机更换、数据库拆库、数据库合库、测试系统搭建等等各类场景,然而正所谓万变不离其宗,迁移总的来说就是Dataguard、RMAN、底层复制等物理方式以及Datapump、GoldenGate等逻辑方式。本文目的在于从笔者实际参与的各种迁移类项目出发,简明扼要地从宏观的角度数一数迁移类项目中可能遇到的坑。

 

无法绕过的架构类问题
 

 

对于一个核心的系统来说,数据库很可能并不是孤立的,而是涉及应急、容灾、BCV、备份等各个方面,同时这个数据库又可能是别的数据库的数据源的源端或者目标端。当进行这种复杂系统的迁移时,务必考虑到这些方面。

 

笔者进行参与的某运营商数据库升级项目是通过GoldenGate方式实现换机器方式升级的,这个运营商的某核心库则相当复杂了,其涉及的外围因素如下:

  1. 通过赛门铁克底层同步库软件实现的容灾库;

  2. 通过赛门铁克底层同步库软件实现的BCV库;

  3. 通过GoldenGate软件实现的应急系统。

 

由于涉及的数据库较多,我们在处理这个项目时,采用了提前升级应用系统,同时升级主系统以及容灾系统,最后升级BCV系统的方式进行调配。

 

不能掉以轻心的资源问题
 

 

迁移工作应当尽可能降低对现网运维工作的影响,由于迁移工作而引发的现网系统出现问题是客户很难接受的事情,然而在实际的迁移工作中,因为疏忽大意或者对系统架构不了解而导致问题。

 

对于需要从源端数据库直接进行DATAPUMP等方式数据导出的迁移工作而言,需要注意导出工作对源端造成的CPU、内存、IO、文件系统等影响相信很多DBA都能想到,但在后续的传输以及入库中,则反而容易遇到不了解系统架构的问题了,例如下述两个例子:

  1. 网络未分离,过多ftp进程并发传输占用网络带宽,进而影响应用系统;

  2. 目标数据上没有应用,但其存储与现网是共用的,大并发进行数据导入导致影响现网。

 

对于目标端本身就是生产系统的情况,则操作更得小心翼翼了,除了常规的CPU、内存等指标外,还得注意归档、表空间等细节,遗漏其中一项都可能引发故障,这种迁移只能步步为营,慢慢搞了。

 

难以省心的应用
 

 

迁移工作的完成需要应用厂商和数据库的相互支撑,然而,从笔者亲身的项目经验来看,偶尔也会遇到个别不靠谱的开发人员,进而影响整个项目的推进,下面是笔者遇过的几个例子:

  1. 割接后跑过来抗议说新库和旧库数据不一致,核查原因发现旧库应用未停止干净,幸亏提前做了监控,否则问题说不清;

  2. 未正确修改应用配置,导致连错实例,影响进度;

  3. 前期未充分测试,在升级期间才发现,处理起来相当被动。

 

五花八门的数据库问题
 

 

与上面相比起来,数据库本身的问题就更复杂了,需要通过项目经理来积累了,下面是笔者总结的类型:

  1. SQL语句性能类,例如版本变更导致的语句性能退化;

  2. 对象及权限类问题,例如对象编译不通过,这种问题留到割接期间会显得相当被动;

  3. JOB调度问题,例如实例重启导致的job多余调度导致脏数据;

  4. 数据库管理问题,例如监控或者备份机制跟不上;

  5. 数据库配置问题,例如参数设置不合理;

  6. 特殊对象类型问题,例如不常用的QUEUE仅迁移而未START导致应用报错。

 

 

 

本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2015-12-07

目录
相关文章
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
628 1
|
4月前
|
关系型数据库 数据库 RDS
【瑶池数据库训练营及解决方案本周精选(探索PolarDB,参与RDS迁移、连接训练营)】(5.30-6.8)
本周精选聚焦数据库迁移训练营、快速连接云数据库RDS训练营及智能多模态搜索解决方案。为用户提供模拟教程与实战演练,学习RDS MySQL实例连接与数据管理技能,助力企业智能化发展。每周解锁数据库实战新场景,抓紧时间,精彩不容错过!
|
5月前
|
存储 关系型数据库 数据挖掘
【瑶池数据库动手活动及话题本周精选(体验ADB、 SelectDB,参与 RDS 迁移训练营)】(4.21-4.27)
本文为 “瑶池数据库动手活动及话题精选” 系列第一期,聚焦 SelectDB 日志分析、AnalyticDB Zero-ETL 集成、RDS 迁移训练营三大实战,设积分、实物等多重奖励,同步开启话题互动。点击链接参与,每周解锁数据库实战新场景。
|
3月前
|
关系型数据库 MySQL 数据库
MySQL数据库上云迁移
本文介绍了将数据库迁移到RDS for Mysql的两种主要方法:停服迁移和不停服迁移。停服迁移适合可短暂中断服务的场景,通过mysqldump或DTS完成;不停服迁移适用于需保持业务连续性的场景,推荐使用DTS实现结构、全量及增量数据迁移。文中详细列出了每种方法的具体操作步骤,帮助企业根据需求选择合适的迁移方案。
MySQL数据库上云迁移
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
|
5月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1072 28
|
3月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。

热门文章

最新文章

推荐镜像

更多