|
原帖由 henrybai 于 2008-9-5 15:23 发表 ![]()
说的对。确实是这样。sga_max_size的作用是什么呢?
只能在不重启系统的时候来限制内存组件?
1.在windows平台:
假设oracle sga size设置为1G;
当刚启动时,在windows任务管理器可以发现占用的内存不过100多M;
当各种负载上来之后,oracle占用的内存才会逐渐接近sga size;
就是说oracle并不是一开始就把pfile或spfile中指定的内存空间给占用了,而仅仅是按照最小原则获取OS内存;
不够了再继续分配空间;
当然SGA中的各个pool能够分配到的空间是由指定的参数决定的,且total size不可超过sga_max_size;
这应该是防止oracle把OS内存吃完了
事实上sga_max_size分配的是虚拟内存+物理内存之和,举例:
sga_max_size设置为1G,无负载的DB启动所需最小内存为200M;
那么在windows下看到的物理内存占用就是200M左右,另外800M是以虚拟内存的形式存放在HDD上的;
也可以通过修改sga_lock、pre_sga参数禁止将页面放在HDD上,以提高效能
2.不大明白你的意思
ps:很遗憾管理的两个oracle db都是在windows平台下,不了解在linux下的情况,应该会有不同 |
|