exp/imp方式迁移数据库对象不一致问题分析

昨天做了数据库的迁移,由于数据量比较小,采用exp/imp的方式,库迁移的过程中没有报任何错误,但是在迁移完成后两库的对象数据不一致,查询如下:
 
在原库上查询:
SQL> select count(OBJECT_NAME),OBJECT_TYPE from user_objects group by OBJECT_TYPE;
COUNT(OBJECT_NAME) OBJECT_TYPE
------------------ ---------------------------------------------------------
              1631 LOB
              1644 TABLE
              1653 INDEX
 
在新库上查询:
SQL> select count(OBJECT_NAME),OBJECT_TYPE from user_objects group by OBJECT_TYPE;
 
COUNT(OBJECT_NAME) OBJECT_TYPE
------------------ -------------------
              1621 LOB
              1653 INDEX
              1644 TABLE
 
可见,LOB对象数不一致,继续查user_lobs视图,如下:
 
原库上查询:
select count(*) from user_lobs;
1621
 
新库上查询:
select count(*) from user_lobs;
1621
 
很奇怪,为什么user_lobs视图查询结果一致,而 user_objects 查询结果不一致
 
继续查询未迁移过来的LOB对象:
 
在原库上查询:
 
select b.*
from user_segments b
where b.segment_name  in ( 
select a.OBJECT_NAME
from user_objects a
where a.OBJECT_NAME not in (select segment_name from user_lobs)
  and a.OBJECT_TYPE = 'LOB');
 
1 SYS_LOB0000076835C00003$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
2 SYS_LOB0000087181C00004$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
3 SYS_LOB0000076839C00004$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
4 SYS_LOB0000094418C00003$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
5 SYS_LOB0000087177C00003$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
6 SYS_LOB0000087173C00003$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
7 SYS_LOB0000087191C00004$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
8 SYS_LOB0000094422C00004$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
9 SYS_LOB0000095266C00003$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
10 SYS_LOB0000095270C00004$$  LOBSEGMENT ASSM ROADSHOW 65536 8 1 65536 1048576 1 2147483645 2147483645      DEFAULT
 
正好10个对象,是ASSM ,怀疑是空段,迁移时数据库自动忽略了,进一步查询,这些段分配的数据块:
 
select block_id, file_id, segment_name, blocks, extent_id
  from dba_extents
 where wner = 'ROADSHOW'
   and segment_name in ('SYS_LOB0000076835C00003$$',
                        'SYS_LOB0000087181C00004$$',
                        'SYS_LOB0000076839C00004$$',
                        'SYS_LOB0000094418C00003$$',
                        'SYS_LOB0000087177C00003$$',
                        'SYS_LOB0000087173C00003$$',
                        'SYS_LOB0000087191C00004$$',
                        'SYS_LOB0000094422C00004$$',
                        'SYS_LOB0000095266C00003$$',
                        'SYS_LOB0000095270C00004$$')
 order by extent_id;
查询结果为空,得出结论:数据库在导出时自动忽略了没有分配数据块的LOBSEGMENT。
 
补充:
1、数据泵的方式也存在上述问题。
2、ASSM请参考:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27471208/viewspace-750039/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27471208/viewspace-750039/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OGG(Oracle GoldenGate)是Oracle数据库的一种高性能、实时数据复制和数据集成解决方案。它可以从源数据库捕获事务日志,并将这些日志传输到目标数据库,实现实时数据同步。OGG的实现原理是通过读取源数据库的redo日志或归档日志,将变更数据以SQL语句或二进制格式传输到目标数据库,然后在目标数据库上重新执行这些变更操作,从而实现数据的同步。 ADG(Active Data Guard)是Oracle数据库的一种高可用性解决方案,它通过在备用数据库上启用只读访问,实现实时数据保护和查询功能。ADG的实现原理是在备用数据库上应用源数据库的redo日志,实时保持备用数据库与源数据库的数据一致性,并将读取请求路由到备用数据库,从而实现实时数据保护和查询功能。 DG(Data Guard)是Oracle数据库的一种灾备解决方案,它通过在备用数据库上应用源数据库的归档日志,实现数据的异地备份和恢复功能。DG的实现原理是将源数据库的归档日志传输到备用数据库,然后在备用数据库上应用这些归档日志,从而实现数据的异地备份和恢复功能。 RAC(Real Application Clusters)是Oracle数据库的一种集群解决方案,它可以将多个服务器组成一个集群,共享数据库和资源,提高数据库的可用性和性能。RAC的实现原理是通过共享存储和共享网络,实现多个服务器对数据库的同时访问,从而提高数据库的可用性和性能。 XTTS(Cross-Platform Transportable Tablespaces)是Oracle数据库的一种跨平台传输表空间的解决方案。它可以将表空间从一个平台迁移到另一个平台,实现跨平台的数据迁移。XTTS的实现原理是通过将表空间的数据文件导出为通用的数据文件格式,然后将这些数据文件导入到目标平台的数据库中,从而实现跨平台的数据迁移exp/impexpdp/impdp是Oracle数据库的导出和导入工具,用于将数据库对象和数据导出到文件,然后再从文件中导入到另一个数据库中。exp/imp是传统的导出和导入工具,expdp/impdp是数据泵导出和导入工具。它们的实现原理是通过将数据库对象和数据转换为特定的导出文件格式,然后通过导入工具将这些文件中的对象和数据导入到目标数据库中。 Rman(Recovery Manager)是Oracle数据库的备份和恢复工具,它可以对数据库进行全量备份、增量备份和日志备份,并提供了灵活的恢复选项。Rman的实现原理是通过读取数据库的数据文件和日志文件,将备份数据存储到备份设备中,并在需要恢复时,根据备份数据和日志文件进行恢复操作,从而实现数据库的备份和恢复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值