【匯入匯出】EXP-00068分析

楊奇龍發表於2011-02-20
當匯出資料時,會遇到EXP-00068 錯誤。
   About to export specified tables via Conventional Path ...
   . . exporting table      TESTLOB
   EXP-00068: tablespace TEST_EXP is offline
   EXP-00068: tablespace TEST_EXP is offline          1 rows exported
   Export terminated successfully without warnings.

一般來說,EXP-68 的症狀,原因和解決辦法是:
Text  : tablespace  %s is offline
Cause : Export failed to export tablespace (tablespace being offline).
Action: Make tablespace online and re-export.

但是 也有時候甚至會遇到明明表空間online時,卻報錯誤。

解決辦法如下:
-----------------------------------------------------------------
1 連線資料庫,執行如下查詢,檢查錯誤中出現的表空間和資料檔案的狀態:
      SELECT d.tablespace_name,d.status,d.extent_management,f.file#,f.status
         FROM dba_tablespaces d, v$datafile f, v$tablespace t
         WHERE d.tablespace_name=t.name AND t.ts#=f.ts#(+);
2.a. 如果狀態顯示為 offline,則將表空間online
      ALTER TABLESPACE tablespace_name ONLINE;
  b. 如果表空間裡的一個或多個資料檔案offline,則將相應的資料檔案online
      ALTER DATABASE DATAFILE datafile# ONLINE;
  c. 如果表空間裡的一個或多個資料檔案的狀態為 recover,則將其恢復並online
      RECOVER DATAFILE datafile#
      ALTER DATABASE DATAFILE datafile# ONLINE;
          SQL> host exp system/****** file=d:\exp.dmp full=y
  d. 將報錯的表空間和資料檔案online後,再次執行匯出操作。
3. 如果表空間和資料檔案已經online 並且是表空間是本地管理的時候,可以忽略次錯誤!
  
例項:
-- Export log
    About to export the entire database ...
    . exporting tablespace definitions
    EXP-00068: tablespace TS1 is offline
    -- 檢視 DBA_TABLESPACES 檢視 TS1的狀態
    SQL> select TABLESPACE_NAME,STATUS
    from dba_tablespaces where tablespace_name='TS1';

    TABLESPACE_NAME                   STATUS
    ------------------------------ ---------
    TS1                               ONLINE

    TS1 顯示為online,此時需要做更深一步的研究。執行如下查詢來檢視錶空間TS1下的所有資料檔案的狀態。

    SQL> select a.file#, a.name, a.status
    2    from v$datafile a, v$tablespace b
    3    where a.ts#=b.ts#
    4    and b.name='TS1';

         FILE# NAME                        STATUS
    ---------- --------------------------- -------
            6 D:\TS1-1.DBF                 ONLINE
            7 D:\TS1-2.DBF                 RECOVER <== datafile requires recovery.
            9 D:\TS1-3.DBF                 ONLINE

從這裡可以看出 ts-2.dbf 需要恢復,這就是導致EXP-00068錯誤的原因。
 解決辦法
    -- 恢復資料檔案 7;
    SQL> recover datafile 7;
    Media recovery complete.
    SQL> alter database datafile 7 online;
    Database altered.
    ---再次檢查
    SQL> select a.file#, a.name, a.status
    2 from v$datafile a, v$tablespace b
    3 where a.ts#=b.ts#
    4 and b.name='TS1';

         FILE# NAME                     STATUS
    ---------- ------------------------ -------
             6 D:\TS1-1.DBF             ONLINE
             7 D:\TS1-2.DBF             ONLINE <== datafile is online now.
             9 D:\TS1-3.DBF             ONLINE
   --再次執行匯出就好!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-687585/,如需轉載,請註明出處,否則將追究法律責任。

相關文章