ALTER SYSTEM SET PGA_AGGREGATE_LIMIT 一般不大于系统的40%,或者就是系统总的内存减去sga后,剩余部分的一般不大于120%。
pga_aggregate_target一般为PGA_AGGREGATE_LIMIT的一半,
也就是说,一般pga_aggregate_target为系统的10-20%,PGA_AGGREGATE_LIMI为pga_aggregate_target的2倍,系统的20-40%,不大于剩余的的120%(或者就是系统总的内存减去sga后,剩余部分的一般不大于120%。)
否则将会出现报错:
在Oracle 12c R1之前,没有选项可以用来限制和控制PGA的大小。虽然你设置某个大小为PGA_AGGREGATE_TARGET 的初始参数,Oracle会根据工作负载和需求来动态地增大或减小PGA的大小。而在12c中,你可以通过开启自动PGA管理来对PGA设定硬性限制,这需要对PGA_AGGREGATE_LIMIT 参数进行设置。因此,你现在可以通过设置新的参数来对PGA设定硬性限制以避免过度使用PGA。
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit |
重要提示:
当超过了当前PGA的限制,Oracle会自动终止/中止会话或进程以保持最合适的PGA内存。