Oracle EXP匯出報錯EXP-00091分析解決

來源:互聯網
上載者:User

Oracle EXP匯出報錯EXP-00091分析解決

Oracle EXP/IMP是早期推出資料備份還原工具。因其簡單易用、功能強大的特性,廣泛的被行業接受。一些開發工具(如PL/SQL Developer)中甚至整合嵌入了EXP/IMP工具。一些國內Team Dev預設資料部署策略中,EXP/IMP也佔到了相當比例。
隨著Oracle版本的推進,新特性的推出,特別是海量資料庫不斷出現在公司專屬應用程式環境下,傳統的EXP/IMP工具架構已經不能承擔發展的需要。於是在10g版本中,Oracle推出了服務端啟動並執行資料泵Data Pump工具。到11g版本中,Data Pump已經成為成熟的資料匯入匯出、備份解決方案。

但是在實際開發領域,Exp/Imp還是有很大的市場。雖然11g中已經不推薦使用Exp/Imp,但是很多廠商部署小資料應用還是採用Exp/Imp方法。

本次記錄的是一次部署匯出Exp中出現的問題,記錄下來,留待需要的朋友需要。

--------------------------------------分割線 --------------------------------------

Oracle 11g 在RedHat Linux 5.8_x64平台的安裝手冊

Linux-6-64下安裝Oracle 12C筆記

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

--------------------------------------分割線 --------------------------------------


 
1、問題綜述
 
廠商上線部署系統,進行最後的資料匯出匯入測試。由於不是最終的環境,而且上線系統資料量初始比較少,所以推薦使用Exp/Imp或者Data Pump工具。在匯出過程中,系統資料雖然成功匯出,但是出現報錯EXP-00091。對應截屏照片如下(安全原因,屏蔽部分資訊): 
 

 
 
匯出操作最後以成功。但是在日誌中,每個資料表資料雖然可以匯出,但是對應的統計量匯出時候,報錯EXP-00091。Exporting questionable statistics,匯出統計量資訊問題。
筆者之前沒有遇到過這種問題,對於匯出操作前廠商進行過何種操作也沒有相關資訊,可以獲得的匯出語句如下: 
 

 
匯出文法也沒有什麼額外的資訊過程。一時間筆者也沒有處理的思路。
 
2、問題分析和檢索
 
留下錯誤資訊提示和語句資訊之後,筆者查詢了Oracle MOS官方網站,希望找到對應的資料。在文檔EXP Utility Reports EXP-91 During Export (文檔 ID 730106.1)中,筆者找到了這個問題的解釋。
Oracle統計量是CBO的工作基礎。Oracle最佳化器在發展曆程中,經曆了從RBO到CBO的演變過程。RBO時代,最佳化器建置規則是以代碼的方式固化在Oracle代碼中的。而CBO的工作是基於資料對象統計量。統計量反映在實體上,就是一系列的中繼資料資訊。在9i時代,CBO與RBO共同作用,而且統計量是需要人工進行收集維護的。而且,由於資料變化的原因,在一些早期CBO版本中,“即時”統計量往往還不能獲得最好的執行計畫。
所以,在9i的Exp/Imp工具開始,統計量匯出就成為Exp工具預設行為。Exp/Imp工具是一個用戶端工具,用戶端的字元集設定nls_lang和資料庫伺服器端是存在不同的。如果nls_lang環境變數設定與資料庫伺服器設定不同,就會導致這個問題出現。
下面我們通過實驗來試圖重現錯誤,來證實我們的推論。
 
3、錯誤類比
 
我們使用oracle 11gR2來進行測試類比,具體版本號碼為11.2.0.4。用戶端作業系統為Windows。
 
 
SQL> select * from v$version;
 
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE      11.2.0.4.0    Production
TNS for 64-bit Windows: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 – Production
 
 
當前,伺服器NLS關鍵參數如下。注意,查看nls資訊一定是資料庫層面的。
 
 
SQL> select * from nls_database_parameters;
 
PARAMETER                      VALUE
------------------------------ --------------------------------------------------------------------------------
NLS_LANGUAGE                  AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                  $
NLS_ISO_CURRENCY              AMERICA
NLS_NUMERIC_CHARACTERS        .,
NLS_CHARACTERSET              AL32UTF8
(篇幅原因,有省略……)
 
 
Nls_lang環境變數的參數格式包括nls_language、nls_territory和nls_characterset。具體格式如下:
 
NLS_LANG=_. 
 

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.