oracle在32位的Linux环境下SGA如何突破2GB内存限制的最终解决方案

简介: 32位机上内存无法支持4GB以上的说法太极端,如win2003 server就可以在32位机上认出8GB的内存。   因此Oracle的SGA在32位机上是可以突破2GB这个限制的,不过付出的代阶就是不能使用ASM这个功能,SGA,LargePool, SharePool都要手工来设置值。

32位机上内存无法支持4GB以上的说法太极端,如win2003 server就可以在32位机上认出8GB的内存。

 

因此Oracle的SGA在32位机上是可以突破2GB这个限制的,不过付出的代阶就是不能使用ASM这个功能,SGA,LargePool, SharePool都要手工来设置值。

 

本人实验的软件版本为:

 

Oracle版本为10

Linux版本为RedHatAs4或者RedHatAs5

其它版只要是Linux的kernel高于2.4的支持large page的都可以做到,下面是具体步骤:

 

第一步:
   在/boot/grub/grub.conf文件中添加bigpages=xMB到相关的内核条目后来开启大页面支持,这里的x象下面这样计算:
   总SGA大小(单位G)*1024
   然后围绕这个值取整百,因此一个32G大小的SGA,我们做下面的计算:
   32*1024=4096=32768
   因此/boot/grub/grub.conf文件条目看起来就是:
   kernel /vmlinuz-2.4.9-e.40enterprise ro root=/dev/cciss/c0d0p2 bigpages=32768MB
   
第二步:

 用ROOT用户:
 umount /dev/shm
 mount -t ramfs ramfs /dev/shm
 chown oracle:dba /dev/shm
 
 并将以上步骤放到/etc/rc.local文件中,位于启动ORACLE的脚本的前面以便于它在启动时就被生限
 
 这三个命令的意思就是让LINUX使用 RAMFS这个(bigpages)特性,该特性在LINUX AS4以上版本才有
 
 
 第三步:
 
 
 编辑:/etc/security/limits.conf

oracle soft memlock 1048576 
oracle hard memlock 1048576

该值的计算公式:比如说我要分配给 share_pool 2g这个值就是 2*1024*1024,建议把这个值设成 9*1024*1024,设完后。

执行:

su - oracle

此后的操作必须全是用oracle用户来操作了

切换到ORACLE用户后使用:

ulimit -l命令, 可以发觉此时oracle用户对系统的环境的使用数已经为: ulimit了

cd /opt/oracle/product/10/dbs

strings spfilemyoracle.ora > init.ora.bak

       以文本文件生成一份spfilemyoracle.ora的拷贝,名为 init.ora.bak。

   一个init*.ora对应一个spfile*.ora,其作用是:

   使用文本文件格式的init.ora先启动一下你oracle中的实例,如果可以启动,然后使用create spfile from pfile='init.ora的全路径'。

   因为,如果你用init.ora这样的格式的文件是可以启动的,但是每次要敲命令:
   
   startup pfile='init.ora的全路径'
   startup force
   这样的方式来启动。
   
   为了让oracle在接受到startup命令就启动就一定要把这个init*.ora文件转换成二进制的spfile
   
   如:
   
   文本格式:initmyoracle.ora 对应的二进制spfile就是:spfilemyoracle.ora

   
修改刚才的这个init.ora.bak(我们使用copy作试验,如果发生死机或者不行的时侯,手工去启动ORACLE所在的LINUX服务器,原来的服务应该是一点没有损坏的)

vi /opt/oracle/product/10/dbs/init.ora.bak

把如下的这些行删了

xxx.__db_cache_size=1828716544
xxx.__java_pool_size=16777216
xxx.__large_pool_size=16777216
xxx.__shared_pool_size=134217728

找到这一行:

*.db_block_size=8192

在这行下增加:

*.use_indirect_data_buffers=true
*.db_block_buffers = 786432
*.shared_pool_size = 252984832  (这个值不能太大,也不能太小,如果太小了,在加载这个pfile时系统会提示你把这个值放到多少at least,按照系统提示的值放就行了)

其中:

db-block_buffers的值为你要的SGA的最大数,如我给的SGA是6GB(给的比较保守), 算法如下:


db-block_buffers=(6*1024*1024)/8=786432

sqlplus sys/mysyspassword@myoracle as sysdba

shutdown immediate

startup pfile='/opt/oracle/product/10/dbs/init.ora.bak'

如果成功了

这时可以把它切成spfile了

create spfile from pfile='/opt/oracle/product/10/dbs/init.ora.bak';

startup force

以后每次启动就是你要的SGA了。

 

目录
相关文章
|
13天前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
178 68
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
10天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
2月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
151 48
|
28天前
|
算法 Linux
深入探索Linux内核的内存管理机制
本文旨在为读者提供对Linux操作系统内核中内存管理机制的深入理解。通过探讨Linux内核如何高效地分配、回收和优化内存资源,我们揭示了这一复杂系统背后的原理及其对系统性能的影响。不同于常规的摘要,本文将直接进入主题,不包含背景信息或研究目的等标准部分,而是专注于技术细节和实际操作。
|
2月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
43 4
|
2月前
|
存储 算法 安全
深入理解Linux内核的内存管理机制
本文旨在深入探讨Linux操作系统内核的内存管理机制,包括其设计理念、实现方式以及优化策略。通过详细分析Linux内核如何处理物理内存和虚拟内存,揭示了其在高效利用系统资源方面的卓越性能。文章还讨论了内存管理中的关键概念如分页、交换空间和内存映射等,并解释了这些机制如何协同工作以提供稳定可靠的内存服务。此外,本文也探讨了最新的Linux版本中引入的一些内存管理改进,以及它们对系统性能的影响。
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
133 8
|
2月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
536 6
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
103 3