BULK COLLECT FAILS WITH ORA-04030
Recently We have a procedure that reads and distract data from a larger table O_APACHE_LOG(about 40 million rows per day) to many smaller one under some condition for ETL.
[@more@]We are using the BULK COLLECT、FORALL and INSERT ALL statements to process data.When we have run the procedure,we capture two exceptions(ORA-04030: 在嘗試分配 16408 位元組 (koh-kghu call ,pmucalm coll) 時程式記憶體不足 & ORA-04030).we know that these exceptions occured because Operating system process private memory has been exhausted.
Please be aware that BULK operations (using FORALL etc.) just need a lot private (PGA) memory.This is not a bug or we don't need to immediately think of a memory leak.
Still it is recommended to apply the latest patchset as usually some memory leaks get fixed in a patchset and it is clear any memory you can save can be used for the bulk operations.
This is a clear sign that you have insufficient memory to execute the BULK operations which is also clear from the above error message.
As per the recommendation give by the Expert (ARE) the Potential solutions are,
- increase swap on the Linux system
- add more physical RAM
- lower the sga size (so pga will get more room)
- make sure only one such high pga demanding process runs at the same time.(i.e)execute the procedure when there is no or very less activity in the Database.
- break up the bulk collect into pieces on the application side, especially when there's no bound on the potential number of records that must be processed.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38542/viewspace-918535/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 的 bulk collect用法Oracle
- 【PL/SQL】初試 bulk collectSQL
- pl/sql中bulk collect的用法SQL
- 使用BULK COLLECT+FORALL加速批量提交
- APPEND,bulk collect,正常插入比較APP
- 使用Bulk Collect提高Oracle查詢效率Oracle
- PL/SQL LOB和檔案操作,bulk collectSQL
- 使用bulk collect實現cursor 批量fetch!
- 多行資料的批處理之bulk collect
- 用BULK COLLECT 減小LOOP的開銷(1)OOP
- Oracle中巧用bulk collect實現cursor批次fetchOracle
- [20180110]Oracle Bulk Collect and LimitOracleMIT
- 使用oracle bulk collect 提高select FETCH LOOP的速度OracleOOP
- oracle中bulk collect into用法 (批次效率提取遊標資料)Oracle
- 使用Forall 與bulk collect的快速複製表資料
- 遊標+bulk collect into limit的不同方法查詢資料MIT
- oracle10g_plsql_rercursor_type_table of_小引例_bulk collect intoOracleSQL
- [20180111]Oracle Bulk Collect and Limit2OracleMIT
- Oracle資料庫的BULK COLLECT用法之批量增刪改<轉>Oracle資料庫
- 一次遷移思考的記錄--bulk_collect的limit用法MIT
- 轉摘plsql高階程式設計_table_array_for all_bulk collect into_fetchSQL程式設計
- bulk_collect結合dbms_application_info監控資料處理進度APP
- Spark2 Dataset之collect_set與collect_listSpark
- Elasticsearch——mget及bulkElasticsearch
- PLSQL Procedure 引起 ORA-04030SQL
- XDMCP connection failsAI
- Elasticsearch的Bulk API使用ElasticsearchAPI
- Go 語言中的 collect 使用Go
- 用 Laravel Collect 收藏文章Laravel
- sqlserver bulk insert報錯Cannot bulk load because the file could not be opened.SQLServer
- Oracle告警日誌ora-04030Oracle
- aix 6.1 ORA-04030 問題AI
- mongodb批量操作, bulk_write,MongoDB
- Bulk Insert命令具體
- ORA-04030處理一例
- bulk insert 在mssql中使用SQL
- 資訊批量提取工具bulk-extractor
- oracle bulk collects 之 java selectOracleJava