Oracle 11gR2 exp不会导出某些表

我有一个在Linux(x64)上运行的Oracle 11g(11.2.0.1)数据库。 在数据库中,我有一个模式和33个表(全部在同一个表空间)。 当我通过sqlpluslogin时,我可以列出所有的表格

SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE = 'TABLE'; 

但是,当我导出表空间使用

 exp ... BUFFER=65536 FULL=N COMPRESS=N CONSISTENT=Y TABLESPACES=... FILE=... 

那么它只能输出33个表中的24个。 我试图通过导出缺less的表

 exp ... TABLES=<missing_table> ... 

但后来我得到一个错误:

  EXP-00011: <schema>.<missing_table> does not exist 

我怎么知道这里有什么问题?
我怎样才能导出所有的表格?

更新:

在遵循Gary的build议之后,我发现了导出和缺失表格之间的以下区别。 导出表的DDL:

 CREATE TABLE "MY_SCHEMA"."EXPORTED_TABLE" ( ... ) TABLESPACE "MY_TS" PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K BUFFER_POOL DEFAULT) LOGGING NOCOMPRESS 

现在,一个不导出的表的DDL:

 CREATE TABLE "MY_SCHEMA"."MISSING_TABLE" ( ... ) TABLESPACE "MY_TS" PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( BUFFER_POOL DEFAULT) LOGGING NOCOMPRESS 

上述DDL由企业pipe理器生成。 用sqlplus创build的那些没有包含缺less表的STORAGE部分

我发现,当我重新组织它们并将STORAGE INITIAL值设置为64K时,这些表就会被导出。

问题解决了。 (希望 ;))

为其中一个工作的表做一个SELECT DBMS_METADATA.GET_DDL('TABLE','yourTableName') ,一个不工作。 然后玩点差异。 (请注意yourTableName区分大小写。)

可能是像BLOB / CLOB或分区在不同的表空间,依赖于另一个模式,不被导出所拥有的types…

从Oracle 11gR2(11.2.0.1)开始,有一个新function:延迟段创build:发送的表的创build被推迟到第一行被插入。 这是因为dba_segments中没有列出空表,并且没有被exp实用程序导出。

最简单的解决scheme是使用expdp工具。

如果必须使用exp实用程序,则必须对所有空表运行以下命令:

 ALTER TABLE tablename ALLOCATE EXTENTS 

表存在于数据库中,但除非您为此表分配一个范围,否则不能导出它。

经过:00:00:00.04 14:44:54 PIMUSER @ mdmqa> alter table RECORDAPPROVALHISTORY分配盘区;

我得到类似的错误,并认为它也与同义词有关。

我可以描述数据库中的特定表并从中select(零行)。 我也可以从公共同义词中描述select

但是当我导出该表时,我得到了011不存在的错误,名称或synoynm。 当我插入一行(即解决了一个问题),我可以通过表名输出,但不能通过同义词。

当然,这一切在11.1工作

首先我听说过expdp。 将看看这个

是您导出的相同表空间中的表? 检查这个查询:

 SELECT table_name, tablespace_name FROM user_tables 

这是一个新的Oracle11function。 只在企业版中。 空表将不会被导出。

是的,表格存在于同一个模式中。 一些没有导出的表包含数据,只有less数几个表的数量是零,其余的都有数据。

问候

分配范围起作用。 您可以使用以下语句查找表格:

select 'alter table '||table_Name||' allocate extent;' from user_Tables where temporary='N' and table_name not in (select segment_name from user_segments)