通過exp導出表數據,遇到提示表不存在,但是該表是實際存在的。

查資料發現這是Oracle11g版本以后系統新增一個參數【deferred_segment_creation】,該參數控制是不分配segment給新建的空表或者導入的空表,默認是true。
如果創建了空表或通過imp命令導入了空表,用exp導出空表就會提示表不存在。
最直接的解決辦法是,修改參數set deferred_segment_creation=false,但是通過修改該參數並不能給以存在的空表分配segment。
alter system set deferred_segment_creation=false;
如果表中已存在空表,則需要手動分配segment
alter table 表名 allocate extent;
如果空表很多的情況下,查詢存在的空表,並批量執行修改語句
select ' alter table '|| table_name || ' allocate extent;' from user_tables where segment_created='NO';
