zl293 发表于 2013-12-5 15:27:41

关于表空间传输后的dmp中的表定义丢失的问题

本帖最后由 zl293 于 2013-12-5 15:37 编辑

从同事那拿到通过表空间传输过来的文件,希望给我能还原到另一台机器上去,迁移后发现表空间已经导入,但找不到表空间中的表。原库上的表空间已经删除了,有没有什么办法可以找到表定义?
以下是导入的日志,没有显示有TABLE的导入。

IMPORT: Release 11.2.0.1.0 - Production on 星期四 11月 21 14:54:17 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
;;;
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "TRANS"."SYS_IMPORT_TRANSPORTABLE_01":  trans/******** directory=data_pump_dir dumpfile=ts_dip11_201212.dmp transport_datafiles='I:\DIP11\TS_DIP11_201212_01.DBF','I:\DIP11\TS_DIP11_201212_02.DBF','I:\DIP11\TS_DIP11_201212_03.DBF','I:\DIP11\TS_DIP11_201212_04.DBF','I:\DIP11\TS_DIP11_201212_05.DBF' logfile=ts_dip11_201212.log
处理对象类型 TRANSPORTABLE_IMPORT/PLUGTS_BLK
处理对象类型 TRANSPORTABLE_IMPORT/POST_INSTANCE/PLUGTS_BLK
已成功加载/卸载了主表 "TRANS"."SYS_IMPORT_TRANSPORTABLE_01"
******************************************************************************

作业 "TRANS"."SYS_IMPORT_TRANSPORTABLE_01" 已于 14:55:29 成功完成

源端和目标端的版本都是11.2.0.1

Liu Maclean(刘相兵 发表于 2013-12-5 21:04:41

KEY WORD  11.2.0.1.0 deferred_segment_creation  imp bug

zl293 发表于 2013-12-6 21:35:42

Liu Maclean(刘相兵 发表于 2013-12-5 21:04 static/image/common/back.gif
KEY WORD  11.2.0.1.0 deferred_segment_creation  imp bug

但我这次导入并不太像是触发了bug,因为文本打开dmp元数据文件里根本就没有对象的信息。

lunar 发表于 2013-12-7 10:24:35

zl293 发表于 2013-12-6 21:35 static/image/common/back.gif
但我这次导入并不太像是触发了bug,因为文本打开dmp元数据文件里根本就没有对象的信息。 ...

11.2的NF,deferred_segment_creation缺省是true,这个导致创建一个表但是没有插入数据或者没有手工分配空间(很多命令都可以触发分配空间)的时候,这个表的定义只存在在dba_tables相关的视图中,在dba_segments等视图是没有的(包括相关index也是同样道理),因此,exp的时候,没有这个定义

zl293 发表于 2013-12-7 10:37:36

lunar 发表于 2013-12-7 10:24 static/image/common/back.gif
11.2的NF,deferred_segment_creation缺省是true,这个导致创建一个表但是没有插入数据或者没有手工分配 ...

我做表空间传输用的是expdp和impdp……

zl293 发表于 2013-12-7 10:38:29

lunar 发表于 2013-12-7 10:24 static/image/common/back.gif
11.2的NF,deferred_segment_creation缺省是true,这个导致创建一个表但是没有插入数据或者没有手工分配 ...

好吧,那没有这个定义了。要如何在仅有dbf数据文件时恢复数据呢?

lunar 发表于 2013-12-7 11:59:08

zl293 发表于 2013-12-7 10:38 static/image/common/back.gif
好吧,那没有这个定义了。要如何在仅有dbf数据文件时恢复数据呢?

你看下tab$中还有没有蛛丝马迹,否则找开发要

linusfay 发表于 2013-12-7 15:03:50

11.2在非sys用户创建对象的时候,都默认deferred_segment_creation缺省是true。当非sys用户创建一个对象,直到第一次像对象中填充数据的时候,db 才会对改对象分配extent。使用exp
imp传输不会导出此部分元数据。用expdp、impdp不会出现这样的情况

zl293 发表于 2013-12-7 15:37:46

lunar 发表于 2013-12-7 11:59 static/image/common/back.gif
你看下tab$中还有没有蛛丝马迹,否则找开发要

我知道表定义是什么,问题是如何重写进去,并让数据库载入dbf文件
页: [1]
查看完整版本: 关于表空间传输后的dmp中的表定义丢失的问题