分类: Oracle
2016-04-27 11:35:09
从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",
2 shared_pool_size_factor "Size Factor",
3 estd_lc_time_saved "Time Saved in sec"
4 FROM v$shared_pool_advice;
Size of Shared Pool in MB Size Factor Time Saved in sec
------------------------- ----------- -----------------
24 .5 525
32 .6667 525
40 .8333 525
48 1 525
56 1.1667 525
64 1.3333 525
72 1.5 525
80 1.6667 525
88 1.8333 526
96 2 526
10 rows selected.
+从上面的输出可以看出当前的共享池设置为48M(Size factor为1)。
+上面的例子看出,即使将共享池大小缩减为50%,也能达到同样的效果。
+将共享池增大到几乎2倍,才能在解析时节约1秒。
+使用该视图,DBA可以更有效地调节共享池
注意
-----------------------
+改变共享池大小引起的latch争用以及碎片问题,该顾问无法考虑。