32位 oracle SGA 扩展原理
来源:互联网 发布:lua windows安装 编辑:程序博客网 时间:2024/05/16 14:45
32位 oracle由于位数限制,是的oracle进程只能访问4GB(2的32次方)以下的虚拟额内存地址,这样一来,很多情况下内存空着而不能使用。默认情况下SGA不能超过1.7GB,这时,我们就要考虑怎样扩展oracle的SGA。
1、识别32为的oracle
通过执行:SQL> select * from v$version;
如果是64位的oracle,在查询结果中一定会显示64bit字样。若没有出现,则一定是32bit oracle。 当然也可以在操作系统上,进入$ORACLE_HOME/bin 目录,执行 $ file oracle
命令,会直接显示。
在确认了32位的数据库之后,通常情况下os系统进程只能访问4GB以下的空间,在 redhat linux as2.1 或者 as 3.0 版本中,他们可以提供VLM(Very Large Memory )功能支持,使得通过转换可以使用36bit 来标志内存地址,那么就是2的36次方,理论上最大可支持64GB的内存访问。这在oracle中,则是通过将内存单做文件来访问的,虚拟一个/dev/shm 的文件系统,这个文件系统是完全由内存组成的,这样将突破4GB的限制。
2、为何SGA存在1.7GB的限制
既然进程可以访问4GB以下的内存,为何通常SGA又是1.7GB呢?
在操作系统中,规定了一个进程在应用程序中,能访问的虚拟内存空间为0--3GB,而3--4GB这段虚拟地址空间是保留给kernel使用的。要注意这里强调的是虚拟地址空间,并没有说是物理地址空间。也就是说,假设8GB的内存,这0--3GB的虚拟内存地址空间可能出现在8GB内存的3GB--8GB部分内存段,并不是说物理内存的0--3GB的虚拟地址中,而这0--3GB的虚拟地址中,oracle是的使用时固定好了地址的(是虚拟地址的固定,不是物理地址的固定哦)
0GB —— oracle program 装载起点。
1GB ——oracle共享库装载起点。
1.25GB —— SGA起点。
2GB ——program stack
3GB ——kernel
在这段虚拟地址分配中,1.25GB是SGA的起点,而进程的私有空间的分配(stack部分)却是从靠近3GB处开始的。也就是实际上SGA和进程私有空间都是共用了1.25GB--3GB这部分的,由于进程私有空间特别小,通常习惯性的认为SGA可以达到1.7GB。进程私有空间有0.05GB足够了。
从oracle启动开始,或者从任何一用户进程登陆开始,所有的虚拟内存都已经分配固定好了,只有私有用户空间还可以扩展。
- 32位 oracle SGA 扩展原理
- 32bit oracle 扩展SGA原理
- 32bit oracle 扩展SGA原理
- Oracle 调优 32位一般SGA设置
- 32位Linux设置超大Oracle SGA的分析
- 使用ORACLE10G VLM特性 使32位ORACLE突破1.7G SGA限制
- 使用ORACLE10G VLM特性 使32位ORACLE突破1.7G SGA限制
- Oracle SGA
- oracle sga
- Oracle SGA
- Oracle 9i 性能大提升 SGA PGA 参数修改 &关于OS 64 32 Oracle 32 64 位概念 ...
- oracle在32位的Linux环境下SGA如何突破2GB内存限制的最终解决方案
- oracle在32位的Linux环境下SGA如何突破2GB内存限制的最终解决方案
- Oracle HowTo:如何在Linux上扩展SGA超过1.7G
- oracle查看SGA
- Oracle SGA PGA UGA
- oracle 内存管理SGA
- 00002.Oracle查看sga
- hpp文件和.h文件的区别
- VC连接MySql操作
- 15分钟的效率法则
- Spring声明式事务配置管理方法
- 递归入门_阶乘函数
- 32位 oracle SGA 扩展原理
- C++第13周项目5——银行系统支持多用户(v0.3)
- AHCI模式 Sata驱动下载、安装教程及蓝屏问题解决
- jmeter
- 常用回顾4------Swing用户界面设计
- l近百GB各方面黑客教程及书本
- 设计模式------策略模式
- RTSP简单命令
- jmeter2