我正在尝试在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'重新创建了我的表格
答案 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