【异常处理】几个Datapump迁移的异常处理(LOB、index数量差异等)

在做一套库的迁移准备,测试的时候有些异常,记录一下处理办法。
如果有处理不对的地方,请不吝赐教。

1.dba_objects表对比发现LOB对象数量差距大

数据泵迁移完对比对象数量,发现LOB对象差距很大。

目标库执行查询:

--查询目标库数据
select object_type, count(*) as num
  from dba_objects
 where owner = 'LC'
 group by object_type

--查询源库数据,通过dblink
select object_type, count(*) as num
  from dba_objects@qy
 where owner = 'LC'
 group by object_type

查询结果,相差1070个LOB对象:
image.png
image.png

由于只是迁移测试,并没有停业务,所以首先想到的是不是在迁移完成到对比数据之间的时间之间,创建了大量的LOB对象呢?

--目标库执行查询
select object_type, object_name, status, created
  from dba_objects@qy
 where object_type = 'LOB'
 order by CREATED desc;

查询结果,没有新创建LOB:
image.png
对象的状态(VALID/INVALID)并不会影响导入,这点不需要验证。

到这里就没思路了,有大佬提示查询mos,在1595391.1中找到答案:
含有lob字段的表drop掉之后,lob字段实际并没有purged,而是放在回收站中。这种情况下,查询dba_object(包含user_object和obj)仍然能看到删掉的lob对象。准确的对比方式应该是查询user_lobs表。

我们分别查询user_lobs表跟user_recyclebin表:

select count(*) from user_lobs;
select count(*) from user_lobs@qy;

user_lobs的结果:
image.png

 select count(*) from user_recyclebin@qy where type='LOB';

源库user_recyclebin的结果:
image.png

最后

  1. 源库回收站中1070+user_lobs中360=1430,这样就跟dba_objects表的数量对起来了,所以这部分忽略即可
  2. obj表是user_objects视图的同义词
--dba_objects表中查看obj的类型
select * from dba_objects where object_name='OBJ';

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值