ORA-39095: Dump file space has been exhausted
?
ORA-39095: Dump file space has been exhausted
Table of Contents
- 1. 簡述
- 2. 錯誤信息
- 3. 分析
- 4. 解決
- 5. 擴展
1 簡述
一個朋友在導數據的時候,突然遇到ORA-39095錯誤。隨即查看磁盤空間,發現才使用了60%多。而導出的數據只有幾個G.
明明有空間,為什么會報空間耗盡呢?百爪搔心的問我~
下面是分析和解決過程。
2 錯誤信息
$ oerr ora 39095 39095, 00000, "Dump file space has been exhausted: Unable to allocate %s bytes" // *Cause: The Export job ran out of dump file space before the job was // completed. // *Action: Reattach to the job and add additional dump files to the job // restarting the job. [oracle@bossdb1 ~]$ 從錯誤信息來看,這個錯誤的本意是: 導出的數據量超出了dmp文件的最大容量。
官方的建議是: 給導出任務添加額外的dmp文件。 那么按這個思路處理的操作應該是:
但是我沒這樣做。有興趣的童鞋,可以按這個思路去處理一下,看是不是可以解決這個錯誤。
從官方的解釋來看,是文件大小不能容納所有數據引起的。可是據說并沒有配置filesize參數,也就是沒有限制單個文件大小。所以這個原因也排除。
3 分析
-
參數
directory=exp_dir dumpfile=for_union_query.dmp logfile=for_union_query.log CLUSTER=N include=table:"in(select table_name from tables_tobe_exported where owner='es')" parallel=10 schemas=ES compression=all -
分析 看參數文件中,突然反應過來:
- parallel 并行寫入
為了防止數據錯亂,Oracle不允許多個進程對同一個dmp文件進行同時寫入,而某個進程如果長時間無法獲取dmp文件的寫權限,就會報ORA-39095錯誤。
4 解決
將參數文件中的 parallel=10 這一行刪除。再導出時報錯消失。
其實不刪除,重新試幾次也可以導出成功。但是這里對導出的parallel 進行一次淺析。
5 擴展
很多人,在導出數據的時候為了加快導出速度,節省時間,都會加上parallel參數。但是對于Oracle的并行機制并不了解。 并不能真正的開啟并行導出或者導入。
比如本次示例中,只設置并行參數,這樣是不能真正打開并行導出的。最多只是 并行 讀取,但是不能實現并行寫入文件。
要加快導出速度,需要幾方面來配合:
- 數據庫寫進程
- 并行數
- 導出文件個數
只有這三者配合才可以真正的實現并行導出。
那么能開啟多少個并發, 首先要查看oracle instance里當前開啟了多少個數據庫寫進程
show parameter db_writer_processesparallel參數的值,不要超過這個參數的值 。不然對數據庫有影響。
設置dumpfile 參數值時,加上%U參數。加上這個參數后,可以由Oracle 數據泵自行決定創建多少個數據文件。 當然還可以指定filesize,不過不是必要的.
?
更多關于Oracle數據泵的用法參見Oracle 數據泵.
?
Created: 2019-06-19 Wed 16:57
Validate
轉載于:https://www.cnblogs.com/halberd-lee/p/11052422.html
總結
以上是生活随笔為你收集整理的ORA-39095: Dump file space has been exhausted的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces 1181
- 下一篇: 把一列数据分割成两列