从Oracle9i开始,引入了一个共享池顾问的新特性。DBA可以使用这个特性,对共享池的内存使用进行优化,进行正确地调整。
为什么需要共享池顾问
------------------------
+该顾问建议中关于library cache内存的信息,根据假设调整共享池大小,来预判对系统整体解析活动造成的影响。
+当需要解析时,如果无法分配连续的内存,该解析就被阻塞,造成数据库和应用的性能下降。
+另一方面,如果分配的内存远大于共享池所需要的那么系统服务器的资源就被无价值地浪费了。
什么是共享池顾问
------------------------
+共享池顾问在Oracle9.2被引入,持续对共享池的library cache的使用进行跟踪。
+持续对不同大小的共享池进行统计(从当前设置的50%到200%)
+DBA可以通过新视图V$SHARED_POOL_ADVICE了解不同共享池大小的相关性能。
+该视图(V$SHARED_POOL_ADVICE)给出的信息包括:评估library cache需要多少的内存,library cache中的对象大小,评估共享池大小变化时,解析消耗的时间。
如何使用共享池顾问
------------------------
+初始化参数STATISTICS_LEVEL需要设置为ALL或TYPICAL(不能是BASIC)
+该参数可以动态修改:
SQL> alter system set statistics_level=typical;
如何从V$SHARED_POOL_ADVICE中收集有用的信息
-------------------------------------------
在设置好所需的参数之后,在一个负载稳定的系统中运行一段时间后,可以通过简单的SQL语句查询该视图,如下:
SQL> SELECT shared_pool_size_for_estimate "Size of Shared Pool in MB",
shared_pool_size_factor "Size Factor",
estd_lc_time_saved "Time Saved in sec"
FROM v$shared_pool_advice;
Size of Shared Pool in MB Size Factor Time Saved in sec
------------------------- ----------- -----------------
Size of Shared Pool in MB Size Factor Time Saved in sec
------------------------- ----------- -----------------
672 .4565 599736
832 .5652 605198
992 .6739 607924
1152 .7826 608063
1312 .8913 608089
1472 1 608103
1632 1.1087 608111
1792 1.2174 608112
1952 1.3261 608112
2112 1.4348 608112
2272 1.5435 608112
Size of Shared Pool in MB Size Factor Time Saved in sec
------------------------- ----------- -----------------
2432 1.6522 608112
2592 1.7609 608112
2752 1.8696 608112
2912 1.9783 608112
3072 2.087 608112
16 rows selected.
+从上面的输出可以看出当前的共享池设置为1.4G(Size factor为1)。
+将共享池增大到3072,才能在解析时节约1秒。
+使用该视图,DBA可以更有效地调节共享池
注意
-----------------------
+改变共享池大小引起的latch争用以及碎片问题,该顾问无法考虑。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30146442/viewspace-2089206/ ,如需转载,请注明出处,否则将追究法律责任。