32位 oracle SGA 扩展原理

简介: 32位 oracle由于位数限制,是的oracle进程只能访问4GB(2的32次方)以下的虚拟额内存地址,这样一来,很多情况下内存空着而不能使用。默认情况下SGA不能超过1.7GB,这时,我们就要考虑怎样扩展oracle的SGA。

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启动开始,或者从任何一用户进程登陆开始,所有的虚拟内存都已经分配固定好了,只有私有用户空间还可以扩展。

相关文章
|
4月前
|
SQL Oracle 关系型数据库
Oracle查看表空间 及表空间是否需要扩展
Oracle查看表空间 及表空间是否需要扩展
25 0
|
4月前
|
Oracle 关系型数据库 MySQL
php7.2安装OCI8扩展支持oracle数据库
做项目的时候,远程的oracle数据库为我们提供一张中间表,我这边业务中的一些数据是需要到oracle数据库中的这张中间表去查询的。 PHP连接oracle数据库。需要用到OCI8的扩展。说来惭愧,工作这么多年,还没有正经的使用过oracle数据库。 mysql数据库的语法跟oracle数据库的语法是不一样的,别跟我似的上来就用mysql的语法来操作oracle数据库……有点丢人了…… 今天我们大概记录一下OCI8扩展的安装过程。
53 0
|
11月前
|
Oracle 安全 关系型数据库
Linux的daemon进程对Oracle数据库的SGA使用大页内存的处理
Oracle对运行在机器内存超过32G上的数据库推荐使用HugePages 来容纳Oracle数据库的SGA,参见。
140 0
|
11月前
|
存储 运维 Oracle
Oracle数据库机:让数据价值回归用户“第一性原理”
Oracle数据库机:让数据价值回归用户“第一性原理”
|
SQL 存储 Oracle
MySQL和Oracle的区别是什么?底层原理是什么?
MySQL和Oracle的区别是什么?底层原理是什么?
480 0
|
Oracle 关系型数据库
oracle学习24-数据文件设置自扩展和监听日志文件过大处理
oracle学习24-数据文件设置自扩展和监听日志文件过大处理
197 0
|
Oracle 关系型数据库 数据库
Oracle SGA大小调整策略
Oracle SGA大小调整策略
631 0
Oracle SGA大小调整策略
|
SQL Oracle 关系型数据库
windows、linux下命令行登录oracle数据库方法,查询sga参数值sql语句
windows、linux下命令行登录oracle数据库方法,查询sga参数值sql语句
475 0
|
运维 监控 Oracle
3月19日直播【从12c到20c,Oracle多租户之10046跟踪PDB关库案例原理解析】
本次分享将针对DevOps代码质量审核、监控、开发环境测试、生产环境测试这四个方面存在的问题进行剖析并给出解决之道,希望能助您全面转型DevOps。
673 0
|
存储 Oracle 关系型数据库
Oracle表空间扩展
使用oracle时可能遇到无法通过8192在表空间中扩展错误,原因是数据库的表空间不足。 oralce默认数据块大小为8k,这种情况下,单文件最大为32G,但是默认块大小不能更改,如需更改需要重建数据库。
1357 0