Oracle导出:表不存在

时间:2012-05-24 10:09:28

标签: oracle

我正在尝试在oracle 11g中导出数据

exp user/password file=dump.dmp tables = (table1)

通过sqlplus。

我收到以下错误:

  

即将通过常规路径导出指定的表格...
  EXP-00011:USER.TABLE1不存在
导出已终止   成功发出警告。

但是,当我检查谁是这个表的所有者时:

SELECT owner, table_name from dba_tables where table_name = 'TABLE1';

我认为TABLE1的所有者是USER

如何导出此表?

更新

实际上,我找到了解决方案。我希望它会帮助别人。 从版本11g开始,Oracle引入了一种称为延迟段创建的新功能。因此,如果现在有行,oracle不会创建表段。所以我用选项'segment creation immediate'重新创建了我的表格

4 个答案:

答案 0 :(得分:2)

实际上,我找到了解决方案。我希望它会帮助别人。从版本11g开始,Oracle引入了一种称为延迟段创建的新功能。因此,如果没有行,oracle不会创建表段。而我的表格中没有任何数据。所以我用选项'segment creation immediate'重新创建了我的表格

找到解决方案here。有更多的选择如何解决问题,并解释为什么这件事恰好在oracle 11g中。 :)

答案 1 :(得分:1)

除了Olivia的回答,我想添加一些代码:

SELECT 'alter table ' ||  table_name || ' allocate extent;'
from dba_tables where SEGMENT_CREATED = 'NO';

再次执行输出和exp。您的模式将被导出,包括空表。

编辑: 类似的问题here,也许你会在那里找到你的解决方案。

答案 2 :(得分:0)

改变这个:

exp user/password file=dump.dmp tables = (table1);

到此:

exp user/password tables = (table1) file=dump.dmp;

答案 3 :(得分:0)

您可以使用以下查询从特定用户进行表级导出。

exp user/password file=dump.dmp tables = user.table1