11g oracle導出表時會默認不導出數據為空
1、Oracle11g默認對空表不分配segment,故使用exp導出Oracle11g數據庫時,空表不會導出。
2、設置deferred_segment_creation 參數為FALSE後,無論是空表還是非空表,都分配segment。
在sqlplus中,執行如下命令:
SQL>alter system set deferred_segment_creation=false; 查看:
SQL>show parameter deferred_segment_creation;
該值設置後只對後面新增的表產生作用,對之前建立的空表不起作用。
解決方案:
1.用以下這句查找空表並生成執行命令
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
2.將查詢結果的內容導出,執行導出的語句。
3.然後再用exp的方式去導出數據庫,就可以完整的導出包括空表的數據庫。
1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 將數據庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
看看這個文檔,一目了然