oracle11g 數據庫導出報“ EXP-00003:
阿新 • • 發佈:2018-01-04
table 服務 初步 行修改 11.2 alt fix pool 作用
oracle11g 數據庫導出報“ EXP-00003: 未找到段 (0,0) 的存儲定義”錯誤的解決方案
轉載 2016年09月18日 17:48:33原文鏈接:http://edmzkj.blog.51cto.com/9115753/1433814
導出oracle11.2.0.2的服務器的數據時,報“EXP-00003: 未找到段 (0,0) 的存儲定義”錯誤。初步分析是由於數據表是空表導致該問題。
Oracle 11G在用EXPORT導出時,空表不能導出。
11GR2中有個新特性,當表無數據時,不分配segment,以節省空間
解決方法:
一、 insert一行,再rollback就產生segment了。
該方法是在在空表中插入數據,再刪除,則產生segment。導出時則可導出空表。
二、 設置deferred_segment_creation 參數
該參數值默認是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。修改SQL語句:
alter system setdeferred_segment_creation=false scope=both;
- 1
需註意的是:該值設置後對以前導入的空表不產生作用,仍不能導出,只能對後面新增的表產生作用。如需導出之前的空表,只能用第一種方法。
三、 用以下這句查找空表
select‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables wherenum_rows=0;
- 1
把查詢結果導出,執行導出的語句,強行修改segment值,然後再導出即可導出空表
可以通過以下方式生成數據庫更新的sql語句:
在pl/sql的命令窗口中執行
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\alterTableSql.sql;
Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;
spool off;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
自動將空表更新sql生成到C盤根目錄的alterTableSql.sql文件中。然後執行該sql文件更新數據庫。
Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;
- 1
也可以換成:
Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where segment_created= ‘NO‘ ;
- 1
oracle11g 數據庫導出報“ EXP-00003: