環境:CentOS7.4 Oracle11.2.0.4(搭建rac集群) 問題描述:在使用exp命令執行導出的時候,部分表提示“EXP-00003: 未找到段 (0,0) 的存儲定義”警告。 問題原因:該問題是因為導出的數據表為空表導致的。Oracle 11GR2當表無數據時,不分配segment, ...
環境:CentOS7.4 Oracle11.2.0.4(搭建rac集群)
問題描述:在使用exp命令執行導出的時候,部分表提示“EXP-00003: 未找到段 (0,0) 的存儲定義”警告。
問題原因:該問題是因為導出的數據表為空表導致的。Oracle 11GR2當表無數據時,不分配segment,以節省空間,因此在用EXPORT導出時,空表不能導出。
解決方法:
1、使用以下語句查找空表,把查詢結果導出執行,強行修改segment值,然後再導出即可導出空表。
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;註意:語句查出來的不一定是全部的表(有可能有漏掉),如果有缺失可以根據導出日誌執行以下alert語句即可。
2、在相應的空表中插入一條記錄再刪除(或者rollback)。這樣可以產生segment。導出時則可導出空表。
3、設置deferred_segment_creation 參數。該參數值預設是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。
alter system setdeferred_segment_creation=false scope=both;註意:該值設置後對以前導入的空表不產生作用,仍不能導出,只能對後面新增的表產生作用。如需導出之前的空表,只能用前面兩種辦法。
參考:https://blog.csdn.net/u013991521/article/details/52576473