数据迁移之后,总是需要进行源库和目标库的核对,来判断本次数据迁移是否成功。以下采用DBLINK方法进行核对,是在工作中总结的,通过对象和数据量来进行判定数据迁移是否成功,如果以下核对内容完全一致,基本上可以判定迁移成功。DBLINK中的用户需要有DBA权限,在目标库中创建DBLINK。
一、核对迁移对象
找出迁移对象差异,如果查出结果,说明迁移过程中漏了对象,查询结果即为漏的对象。
SELECT *
FROM DBA_OBJECTS@DBLINK_101701622 T
WHERE T.OWNER = 'U_SJZX_WEB'
AND T.OBJECT_NAME NOT IN (SELECT OBJECT_NAME FROM USER_OBJECTS T)
AND T.OBJECT_NAME NOT LIKE '%$$%';
二、核对表的数据量
1.重新分析表的数据量,为了下一步能够获得准确的数据量,源库目标库都需要执行查询结果。
SELECT 'analyze table ' || TABLE_NAME || ' compute statistics;' FROM USER_TABLES;
2.找出数据量差异表对象
SELECT YB_BM 源表表名,
YB_NUM 源表数据量,
MB_BM 目标表名,
MB_NUM 目标数据量,
BDJG 比对结果
FROM (SELECT T.TABLE_NAME YB_BM,
T.NUM_ROWS YB_NUM,
TT.TABLE_NAME MB_BM,
TT.NUM_ROWS MB_NUM,
CASE
WHEN T.NUM_ROWS = TT.NUM_ROWS OR T.NUM_ROWS IS NULL THEN
'相同'
ELSE
'不相同'
END BDJG
FROM DBA_TABLES@DBLINK_101701622 T, USER_TABLES TT
WHERE T.OWNER = 'U_SJZX_WEB'
AND T.TABLE_NAME = TT.TABLE_NAME(+)) A
ORDER BY BDJG;
补充说明:PUBLIC类型的DBLINK是迁移不到目标库的,得需要手动创建。