oracle11g 導出表報EXP-00011:table不存在。


oracle11g,在用exp命令備份數據庫時,如果表中沒有數據報EXP-00011錯誤,對應的表不存在。這導致對應的空表無法備份。

原因:11g默認創建一個表時不分配segment,只有在插入數據時才會產生(當然也可以強制分配),以節省磁盤空間。

對於已經存在的空表解決辦法:

就是想辦法讓空表有segment,第一種:可以通過插入數據的方式(不想要這些數據可以回滾),只要有insert動作就會分配segment;

                                        第二種:就是強制分配:alter table tablename allocate extent;

如果采用第二種可以用以下方法:

1、用以下這句查找空表:select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

 2、把查詢結果導出,執行導出的語句; 

為了后面創建的表能直接分配segment

用系統賬戶登錄數據庫,修改參數deferred_segment_creation(11g新增的)。該參數即指是否延遲創建segment,默認為true。如果想讓表創建時就分配segment,那么就應該修改該參數為false即alter system set deferred_segment_creation=false。如下所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM