数据迁移部分问题总结

按照计划在周二开始了数据迁移,本来之前也做了不少的准备工作。但是还是在迁移的过程中出现了一些问题。简单做一个总结。

1.constraint导致的数据reject
在数据加载的时候,报了如下的错误。有一些数据记录被reject了,查看后发现是源库和目标库中表的not null constraint导致的,在源库中没有not null constraint,但是在目标库中有。
这个问题只能和开发做确认,稍后处理。

records from TESTDATA_HIST

cannot insert NULL into ("XXXXX"."TESTDATA_HIST"."TOT_OBJ")

2.foreign key 导致的constraint enable
在数据加载之前,对于foreign key都做了diable的操作,在加载的过程中也没有出现任何问题。但是在enable foreign key的时候,报了02298的错误。

ERROR at line 1:

ORA-02298: cannot validate (XXXXX.CH_XXXX_1FK) - parent keys not found

alter table CH_XXXX enable constraint CH_XXXX_1FK       
这个问题,先做了constraint novalidate,交给开发去检查数据。     
                        

3.关于datapump加载一个较大的表,含有clob字段,数据5000万条

impdp xxxx/xxxx file=exp_test.dmp logfile=imp_test.log TABLE_EXISTS_ACTION=APPEND CONTENT=DATA_ONLY REMAP_SCHEMA=CNVDBO8:XXXX REMAP_TABLESPACE=LARGE_DATA:DATAS01

因为这部分是由另外一个dba来做的,他没有使用nohup方式,结果到半夜的时候,远程的网络重启了。收到了下面的信息,这确实有些崩溃。
Broadcast Message from uxadmin3 (pts/8) Wed Jun 11 01:08:29...

PLEASE LOG OFF NOW ! ! !
        System maintenance about to begin.
All processes will be terminated in 0 seconds.

Broadcast Message from uxadmin3 (pts/8) Wed Jun 11 01:08:29...
SYSTEM BEING BROUGHT DOWN NOW ! ! !

Connection to 10.196.28.42 closed by remote host.
Connection to 10.196.28.42 closed.

然后等网络好了之后,重新开始。在跑了1个多小时后报了乳腺癌的错误,就退出了。

ORA-31693: Table data object "XXXX"."TEST":"PMAX_AMAX_EMAX" failed to load/unload and is being skipped due to error:
ORA-00001: unique constraint (XXXX.TEST_PK) violated
Job "XXXXX"."SYS_IMPORT_FULL_01" completed with 1 error(s) at 02:34:33

可见数据可能有问题,根据我们的理解在datapump运行的过程中,如果突然中断,是直接rollback的。
但是数据现在都导不进去。最后使用了如下的选项,又是一个漫长的过程,这个时候对datapump也算是有一些心理煎熬了。

DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS

这次启用了nohup方式,在远程网络中断,后台依然在进行。

Starting "XXXXX"."IMPDP_MEMO": XXXXX/******** directory=DR_DATAPUMP_1 dumpfile=exp_mo1_memo.dmp logfile=imp_mo1_memo.log TABLE_EXISTS_ACTION=APPEND CONTENT=DATA_ONLY REMAP_SCHEMA=CNVDBO8:PRDAPPO REMAP_TABLESPACE=LARGE_DATA:DATAS01 parallel=6 DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS JOB_NAME=impdp_memo
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Write failed: Broken pipe

在煎熬了3个小时候,终于有了下面的一段话。对于reject的数据也根据主键信息罗列了出来。

imported "XXXXX"."MO1_MEMO":"PMAX_AMAX_EMAX" 11.89 GB 52646187 out of 53020364 rows

 Rejected row #1043:

   column APP_ID: 1000
   column ENTITY_KEY: 1
   column PERIOD_KEY: 2
   column MEMO_ID: 34141901
。。。。。。

4.sequence检查

对于sequence的检查也是数据迁移的重中之重,在最后的检查中,尽管之前的sequence的值做了一个很大的buffer,胆识还是有一些sequence的问题。


TABLE_NAME


SEQ_NAME


SEQ_MAX


COLUMN_MAX


sequence_1


EXTRACT_FILE_SEQ


22144093


22044092


sequence_2


RC_RATES_1SQ


20462516


20362515


sequence_3


MNTR_TREAT_1SQ


22592118


22492117

时间: 2024-10-12 20:33:05

数据迁移部分问题总结的相关文章

ORACLE与SQL之间的数据迁移

oracle|数据 高级数据迁移        很多时间,要在异构数据库之间进行数据迁移或抽取,如果在SQL中提取ORACLE的数据,可以通过ODBC.OLEDB等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的.        在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE.SQL用Datetime等.   一 关于ORACLE的透明网关配置        ORACLE安装

使用Kettle数据迁移添加主键和索引

Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,主要用于数据抽取.转换.装载.kettle兼容了市面上几十种数据库,故用kettle来做数据库的迁移视乎是个不错的选择. kettle的数据抽取主要在于抽取数据,而没有考虑数据库的函数.存储过程.视图.表结构以及索引.约束等等,而这些东西恰恰都是数据迁移需要考虑的事情.当然,如果在不考虑数据库中的函数.存储过程.视图的情况下,使用kettle进行数据的迁移还算是一个可行的方案. 这篇文章主要是讲述在使用kettle进行数据库的

使用热备份进行分时恢复----怎样通过归档逐步恢复以缩短数据迁移时间

备份|恢复|热备份|数据 使用热备份进行分时恢复 ----怎样通过归档逐步恢复以缩短数据迁移时间 Last Updated: Monday, 2004-11-15 10:32 Eygle         很多时候你可能遇到这样的情况:一个大型数据库的迁移,但是只有很少的停机时间,这看起来充满困难.可是我们可以通过各种方法来缩短停机时间. 本例适用于同平台.同版本数据库迁移. 在此情况下,我们可以通过一个热备份,应用归档恢复数据库到一个一致的状态,此时数据库可以被只读(read only)打开.之

.net2.0中使用SqlBulkCopy进行大批量数据迁移

sql|数据 在.Net1.1中无论是对于批量插入整个DataTable中的所有数据到数据库中,还是进行不同数据源之间的迁移,都不是很方便.而在.Net2.0中,SQLClient命名空间下增加了几个新类帮助我们通过DataTable或DataReader批量迁移数据.数据源可以来自关系数据库或者XML文件,甚至WebService返回结果.其中最重要的一个类就是SqlBulkCopy类,使用它可以很方便的帮助我们把数据源的数据迁移到目标数据库中.下面我们先通过一个简单的例子说明这个类的使用:

SQL Server 7.0 的数据迁移到MySQL上的一种方法

mysql|server|数据 Microsoft SQL Server 7.0 的数据迁移到MySQL上的方法 Zhbforce   想必大家都很喜欢用Word打字,用Excel进行计算和规划,用PowerPoint作幻灯片进行展示-,但是这只用到了Office系列产品的很少的一部分功能.据调查,绝大部分用户只用到了Office产品的20%的功能,很少有人注意到Visual Basic for Application.实际上,熟悉掌握VBA的功能可以使你的工作事半功倍,尤其对会计.金融等专业来

FreeBSD系统的数据迁移方法

相信一些朋友也曾经想过如何快捷安全迁移数据,迁移数据可能有多种原因,一种是想增加一块硬盘,把原来一些空间不够的分区迁移过来:另一种是硬盘复制,旧的硬盘容量可能太小了,又或者已经出现了问题,想用新的硬盘代替.葱头就分别举例说明怎样迁移数据,具体方法可能和你的硬盘的实际情况有所不同,这里只是作一个指引. 无论是那种方法,都必须先将新硬盘装上并让系统正确识别.为了不用设硬盘跳线(硬盘缺省为Master),这里举例安装一个新的IDE硬盘到IDE1接口,即与旧硬盘使用不同的数据线,系统识别为ad2:如果你

教你实现MySQL表数据迁移自动化

一.背景 之前我写过关于SQL Server的数据迁移自动化的文章:SQL Server 数据库迁移偏方,在上篇文章中设计了一张临时表,这个临时表记录搬迁的配置信息,用一个存储过程读取这张表进行数据的迁移,再由一个Job进行迭代调用这个存储过程. 在这次MySQL的实战中,我的数据库已经做了4个分片,分布在不同的4台机器上,每台机器上的数据量有1.7亿(1.7*4=6.8亿),占用空间260G(260*4=1040G),这次迁移的目的就是删除掉一些历史记录,减轻数据库压力,有人说这为什么不使用表

如何将SQL Server数据迁移到MySQL

一.背景 由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL:由于涉及的表比较多,所以想在MySQL中生成对应表并导入数据: 上网找了些资料,如:将ACCESS和MSSQL导入MYSQL中.MySQL Migration 实现 MSSQL 到 MySQL数据迁移,虽然不知道里面的做法是否可以成功转移,但是里面的过程比较复杂,没有去尝试,后来自己找到了方法,最重要就是简单和准确(暂时没发现明显的BUG),这里

通过PL/SQL同时对200多个表空间进行创建、删除和数据迁移

功 能:创建存储过程,通过PLSQL同时对200多个表空间/用户进行创建/删除,数据迁移 适用范围: 表空间较多,数据量比较大的数据迁移.以后会逐渐把这种数据库单独放一个实例.已经有一套1TB以上数据量的库,例如csb221.要将此库迁移至另一个系统上的另外一套库csb461.   sys sysdba 登陆plsql --0.创建另外一套库的databaselink 如果能执行语句就不用创建link. Select upper(userid) as userid Frommymis_main.

如何克服云端数据仓库数据迁移问题?

云计算和数据仓库是合理的一对.云存储可以按需扩展,云可以将大量服务器贡献于某一具体任务.数据仓库通用功能是本地数据分析工具,受到计算和存储资源的限制,同时也受到设计者考虑新数据源集成的能力的限制.如果我们可以克服一些数据迁移的挑战,将一个数据仓库以及其数据分析工具从数据中心中的专用服务器转移到基于云的文件系统和数据库就可以解决这个问题. 云端数据管理通常牵扯到在分布式文件系统中加载和维护文件,像Hadoop分布式文件系统(HDFS),随后用类似MapReduce这样的工具处理数据.对于数据仓库和