我正在致力于一年前已升级到Oracle 10g(现在为10.2.0.5)的数据仓库系统。将workarea_size_policy设置为手动或自动
数据库设置为workarea_size_policy=auto
和pga_aggregate_target=1G
。大多数ETL过程都是用PL/SQL编写的,并且此代码通常设置为workarea_size_policy=manual
,并在构建仓库的特定部分时为特定会话设置SORT_AREA_SIZE
和HASH_AREA_SIZE
。
对于构建的不同部分,为SORT_AREA_SIZE
和HASH_AREA_SIZE
选择的值是不同的。这些大小可能基于每个区域将要处理的预期数据量。
我遇到的问题是这段代码开始导致一些ORA-600错误发生。这让我怀疑我们是否应该重写自动设置。
设置手动设置的代码是很多年前由不在此处的开发人员编写的。它最初可能是为Oracle 8编写的,并且针对Oracle 9进行了修改,以将workarea_size_policy设置为手动。没有人真正知道如何找到用于HASH_AREA_SIZE和SORT_AREA_SIZE的值。他们可能完全不适合我所知道的。
经过那段很长的序言,我有几个问题。
- 我怎么知道什么时候(如果有的话),我应该重写与WORKAREA_SIZE_POLICY =手动手动设置?
- 如何为HASH_AREA_SIZE,SORT_AREA_SIZE等找到合适的值?
- 我如何基准特定设置实际上提供任何形式的好处?
我知道这是一个相当广泛的问题,但帮助将不胜感激。
@kamai感谢您的回答。以为我永远不会得到一个!想想我知道手动设置现在基本上被禁止了(尤其是因为我们从Oracle的支持中获得了这些),但是很难获得大量的生产代码。基本上尝试量化这个的任何好处(除了更少的ORA-00600错误)将看PGA内存顾问。 – 2011-06-10 09:30:52
@MikeyByCrikey不客气。如果这个答案有用,你能否将其标记为有用? – Kamal 2011-06-14 12:21:57
对不起,延迟很长。最后将答案标记为正确(仅在回答后两个月)。我想我知道我不应该再使用'HASH_AREA_SIZE'和'SORT_AREA_SIZE',但很难通过任何真正的理由来改变现有的代码。 – 2011-08-07 11:33:36