Oracle 11 exp命令導出分區表dmp文件報錯EXP-00003解決方法

1.命令:(在cmd執行)
例如:exp username/password@TEST file=E:\STUDENT.dmp tables=(STUDENT)
導出表STUDENT到本地E盤目錄,username和password分別是數據庫用戶名和密碼,TEST是數據庫;

2.執行時發生錯誤,EXP報錯:exp-00003:未找到段(0,0)定義
百度說是因爲:數據庫在exp導出11g時報錯EXP-00003。在11g版本中在沒有數據的情況下是不會分配extent。所以如果出現這種情況需要手動對錶分配extent。

3.解決方案,找到一些的語句不行,查出來想要導出的表並不是空表,最後找到一個語句是,這個語句的結果能夠看到想要導出的表是沒有分配extend的.
select 'alter table '||table_name||' allocate extent(size 64k);' sql_text,table_name,tablespace_name
from user_tables where table_name not in (select segment_name from user_segments where segment_type = 'TABLE');

4.把執行出來的結果SQL_TEXT拿出來執行,給表分配extend:
alter table STUDENT allocate extent(size 64k);
但是執行報錯ORA-14254: 不能爲 (組合) 範圍分區表或列表分區表指定 ALLOCATE STORAGE


5.解決ORA-14254:這個錯誤,應該是因爲要這個表有分區的原因,不能夠對整個表進行分配extend, 修改上面的SQL_TEXT,按照分區對錶進行分配extend. 沒有報錯。
alter table STUDENT modify partition STUDENT_00 allocate extent;
STUDENT_00是表的分區名字,表的分區有多個,要對每個分區執行上面這個語句;


6.把表的每個分區都分配了extend了之後,重新到cmd執行exp命令,不會報錯。

導出的時候是按照分區導出的,所有分區導出的行數加起來和表的記錄數相同。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章