,問題描述:在導入一個用戶數據的時候,大小為14G左右,導進來的時候卡半天,后來發現是表空間滿了,已經恢復了大概6G左右,剩下8G左右沒有恢復。此時磁盤剩余19G,加了15G的表空間,磁盤就剩下4G左右,但是因為前台終止數據泵進程,大量的歸檔還在產生,給空間占滿,差點宕掉
1.impdp "'/ as sysdba'" directory=DATA_PUMP_DIR dumpfile=ecc_cfs20200824.dmp REMAP_TABLESPACE=ECC_CFS:THOUSEPP REMAP_SCHEMA=ecc_cfs:ecc_cfs_20200824 logfile=20200824.logfile
數據泵進行用戶數據恢復,恢復的時候卡半天,查看表空間可使用率為0
2.這邊前台停掉了數據泵進程,添加表空間,alter tablespace THOUSEPP add datafile '/oracle/oradata/thousepp/thousepp08.dbf' size 15G; 現在表空間可還是用率為18%
3.磁盤空間一查看一直在增長,直到根目錄下剩余4.2M才停止,后來才知道是因為前台停止數據泵進程,后台還在運行的。
4.數據庫日志也開始報錯,無法歸檔,怕在晚一會數據庫就進不去而且掛掉。因為歸檔時開啟的,數據量大的導入導出會產生大量的歸檔,所以磁盤空間減少的很快
5.萬幸數據庫還能進去,要不然就很麻煩了,查看正在運行的datapump進程后台停止數據泵進程,停掉相應的job_name
SQL> select * from dba_datapump_jobs;
6.impdp "'/ as sysdba'" attach=SYS_IMPORT_FULL_01 停掉相應的job,此時ps -ef 數據泵進程已經不存在了,只能后台停止。但是發現數據泵交互界面進不去,估計是沒有磁盤空間可分配了。也是一直hang住
7.清理了一些小文件也不行,萬幸這個是個測試庫, 手動清理了一些歸檔,進入了交互界面給job停掉
8.騰出來足夠的空間,重新導入之前存在的用戶直接覆蓋掉,將已經導入的表trcuncate掉,數據量稍大,這里truncate應該會比直接replace快
impdp "'/ as sysdba'" directory=DATA_PUMP_DIR dumpfile=ecc_cfs20200824.dmp REMAP_TABLESPACE=ECC_CFS:THOUSEPP REMAP_SCHEMA=ecc_cfs:ecc_cfs_20200824 logfile=20200824.logfile table_exists_action=truncate
所以以后如果開啟歸檔進行數據泵導出操作,一定要留夠足夠的空間,而且檢查做任何操作之前應該先進行全面的環境檢查,像這種情況只能后期加磁盤,或者測試庫給歸檔關掉