使用expdp匯出資料,報ORA-01691表空間不足錯誤

datapeng發表於2014-03-24

    客戶叫我們幫助他做一個資料庫的遷移,資料庫本身不大,檔案大小約200g,匯出來的資料庫也就60多個g,並且給了一個比較長的停機時間,所以我們選擇採用expdp、impdp的方式進行

[oracle@mytest myerp]$ nohup ./scmexpdp.sh > myerplog.log &
[oracle@mytest myerp]$ more myexplog.log
檢視日誌,還比較順利,很快到了開始匯出的時候了
Export: Release 10.2.0.5.0 - 64bit Production on Saturday, 22 March, 2014 19:50:47

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine
and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/****** DIRECTORY=myexpdp schemas=myerp1,myerp2 dumpfile=myerp_%U.dmp filesize=20480m logfile=myerp0318.log PARALLEL=4
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 62.24 GB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE

[oracle@mytest myerp]$ tail -f myexplog.log
在後臺,我也觀察一下檔案的變化。日誌沒有動靜,檔案大小也沒有動靜,大概過了10分鐘仍然沒有動靜,於是我又賴著性子等了一下,還是沒有動靜,感覺挺奇怪的,檢查語句確實沒有問題,為什麼會這樣,正在猶豫的時候,匯出日誌檔案突然出現了以下錯誤:
ORA-39171: Job is experiencing a resumable wait.
ORA-01691: unable to extend lob segment SYSTEM.SYS_LOB0000665077C00039$$ by 61446 in tablespace SYSTEM

這個時候報出了,有一個lob欄位因為擴充套件失敗,導致工作掛起,我用的system使用者來導數的,所以報的是system表空間不足。這時候,對問題進行檢查:


SQL> select tablespace_name,sum(bytes/1024/1024/1024) gbytes from dba_free_space where tablespace_name = 'SYSTEM' group by tablespace_name;

TABLESPACE_NAME                    GBYTES
------------------------------ ----------
SYSTEM                         0.03298889

從這裡看,由於system可能存在一些碎片的情況,無法找到一個連續的空間也很正常。由於匯出的時候,會生成一個表SYS_EXPORT_SCHEMA_01,這個表主要是記錄一些匯出的任務資訊等內容,其本向大小也就100多m,但是透過查詢發現,本表有一個lob欄位,已經到了1.2g
SQL> select l.owner,
   2  l.table_name,
   3  l.segment_name,
   4  s.bytes/1024/1024/1024 gbytes
   5  from dba_lobs l,
   6  dba_segments s
   7  where l.table_name like 'SYS_EXPORT_SCHEMA%' and
   8  l.table_name = s.segment_name;

 OWNER                          TABLE_NAME                     SEGMENT_NAME                       GBYTES
 ------------------------------ ------------------------------ ------------------------------ ----------
 SYSDB                          SYS_EXPORT_SCHEMA_01          SYS_LOB0000665077C00039$$          1.2479325

可以看到lob欄位已經比較大了,並且還在擴張。

出現這種情況,也比較正常,比如說匯出的內容挺多,需要記錄到這個表中,導致這個lob段不斷的擴充套件!

解決辦法就是擴充套件system表空間

SQL> select file_name,bytes from dba_data_files where tablespace_name = 'SYSTEM';

FILE_NAME                                                BYTES
---------------------------------------------------------------
/u01/app/oracle/oradata/myerp/system01.dbf              2147483648

SQL> alter database datafile '/u01/app/oracle/oradata/myerp/system01.dbf' resize 4096m;

將檔案擴充套件到4g後,expdp任務繼續進行。最後,我透過後臺檢視,這個lob段最終擴充套件到了1.6g!任務完成!

 

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

相關文章