exp-00003 no storage definition found for segment(0, 0)

剛爲用戶升級到11.2.0.4.160419,但居然還會出現此類大多數在9.2下出現的問題:

連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將導出指定的用戶...
. 正在導出 pre-schema 過程對象和操作
. 正在導出用戶 TAMIC 的外部函數庫名
. 導出 PUBLIC 類型同義詞
. 正在導出專用類型同義詞
. 正在導出用戶 TAMIC 的對象類型定義
即將導出 TAMIC 的對象...
. 正在導出數據庫鏈接
. 正在導出序號
. 正在導出簇定義
. 即將導出 TAMIC 的表通過常規路徑...
. . 正在導出表                             AA1導出了          34 行
. . 正在導出表                             AAA導出了       24602 行
. . 正在導出表                            AAAA導出了          46 行
. . 正在導出表                        AABORMAS
EXP-00003: 未找到段 (1024,0) 的存儲定義
. . 正在導出表                        AACBKMAS


熟悉看過11.2的online doc的Concept的同學應該知道:
DEFERRED_SEGMENT_CREATION specifies the semantics of deferred segment creation. If set totrue, then segments for 
non-partitioned tables and their dependent objects (LOBs, indexes) will not be created until the first row is inserted into the table.

很多dba的判斷一般是指由表結構卻沒有實際分配segment存儲所致,確實如此,在9.2之前的版本非常常見,但在11.2後Oracle新增量一個
deferred_segment_createon的參數,默認爲True,來延遲索引段和lob段的創建。

也是由於該新特性導致通過EXP導出的時候出現EXP-00003的錯誤,查詢該數據庫的deferred_segment_createon參數:

sql>show parameter deferred_segment_creation;
---------------------------  ------------- ---------
deferred_segment_creation        boolean     TRUE



參考MOS給出的Workaround方法:
Slower inserts as select into a non-partitioned table ,
especially if the select involves reading many rows or an expensive join.
 
This fix changes the behavior. such that the segments will be allocated
regardless if the INSERT inserts rows or not.
 
Workaround
Materialize segments for the table before issuing the insert as select.
'alter table <tname> allocate extent;' will materialize segments for the
table and its dependent objects like indexes and lobs.

最終採用的方法,禁用該參數,然後與分配一個存儲給問題表
alter system set deferred_segment_creation=false scope=both;
alter table <tname> allocate exten
t;


其他參考的Note:

Error During Schema Level Export - EXP-00003: no storage definition found for segment(0, 0)(文檔 ID 1969081.1)



發佈了87 篇原創文章 · 獲贊 10 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章