A PL/SQL team inside Oracle made excellent use of nested tables and MULTISET operators in SQL, blending data in tables with procedurally-generated datasets (nested tables). All was going well when they hit the dreaded: ORA-04030: out of process memory when trying to allocate 2032 bytes They asked for my help. The error occurred on this SELECT: SELECT * FROM header_tab trx WHERE (generated_ntab1 SUBMULTISET OF trx.column_ntab) AND ((trx.column_ntab MULTISET EXCEPT DISTINCT generated_ntab2) IS EMPTY) The problem is clearly related to the use of those nested tables. Now, there was clearly sufficient PGA for the nested tables themselves. So the problem was in executing the MULTISET-related functionality. We talked for a bit about dropping the use of nested tables and instead doing everything in SQL, to avoid the PGA error. That would, however require lots of work, revamping algorithms, ensuring correctness, you know the score. Then my eyes snagge
For the last twenty years, I have managed to transform an obsession with PL/SQL into a paying job. How cool is that?
Comments
Post a Comment