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)
建議你用expdp導出吧 別用oracle 11G 對於空表默認是不分配段的,所以用exp導出的時候就沒有導出。用法參照help,網上一大把命令。
使用expdp要先在數據庫中創建directory,並給相應的用戶read,write權限.
SQL>create directory dmpdir as '/u01/dmdir';
SQL>grant read,write on directory to system;
expdp system/pw schemas=test directory=dmpdir dumpfile=test_1.dmp,test-2t.dmp logfile=exp-2012-11-testt.log exclude=STATISTICS parallel=2
可以並行導出