oracle怎么扩展内存,oracle数据库内存调整之增加内存

如何使oracle的SGA在32位的操作系统下超出2G?

Win2003 :

成都创新互联拥有10余年成都网站建设工作经验,为各大企业提供网站建设、成都网站设计服务,对于网页设计、PC网站建设(电脑版网站建设)、成都app开发、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、域名与空间等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。

由于32位的CPU的在windows系统中2G给系统用2G给应用程序使用,如系统及oracle参数不作修改时,oracle的SGA内存使用不能超过1.7G,所以要对一些进行windos

ows和oracle参数据进行修改,大致有以下几步:一 windows 上的参数据修改:

1. 修改boot.ini文件,加/3GB /PAE:

在这行,multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows" /3GB /PAE 2.修改windows 注册表:

regedit到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 这个目录中找到AWE_WINDOW_MEMORY这个参数,将其修改为oracle需要内存的大小:例如:6G时为:6*1024*1024*1024

这个参数如不存大时,可以新建一个字符串名为AWE_WINDOW_MEMORY,值为上面讲过的大小,这个值需要足够大,不够时将报:

ORA-27102 out of memory

OSD-00034 Message 34 not found; Product=RDBMS;facility =SOSD

O/S Error: (OS 8) Not enough storage is available to process this command

3.修改windows控制面板中的管理工具-- 域安全策略-- 本地安全策略 --锁定内存页 中加入启oracle数据库的OS用户名.

二 ORACLE数据库中要改的参数:

1.在改参数之前最好能先备份一个spfile到pfile 文件以防数据库修改失败时可以从这个参数文件在启动数据库: create pfile='d:\inittest.ora' from spfile; 2.主要修改的参数为:

_db_block_lru_latches --这个参数据大小为=CPU数*2*8

取消参数据:db_cache_size,sga_max_size

db_block_buffers

USE_INDIRECT_DATA_BUFFERS=TRUE

SQL shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL startup

ORACLE 例程已经启动。Total System Global Area 1008280152 bytes

Fixed Size 455256 bytes

Variable Size 478150656 bytes

Database Buffers 528482304 bytes

Redo Buffers 1191936 bytes

数据库装载完毕。

数据库已经打开。

SQL alter system set "_db_block_lru_latches"=128 scope=spfile;系统已更改。SQL alter system reset db_cache_size scope=spfile sid='*';系统已更改。SQL alter system set lock_sga=false scope=spfile;系统已更改。SQL alter system set db_block_buffers=1179648 scope=spfile;系统已更改。SQL alter system set use_indirect_data_buffers=true scope=spfile;系统已更改。SQL create pfile='d:\init2.ora' from spfile;文件已创建。SQL shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。可以通过OEM来修改PGA,shared pool这些内存大小

SQL startup

ORACLE 例程已经启动。Total System Global Area 7516192768 bytes

Fixed Size 455256 bytes

Variable Size 478150656 bytes

Database Buffers 3528482304 bytes

Redo Buffers 1191936 bytes

数据库装载完毕。

数据库已经打开。

Linux

有不少用户认为在32位Linux,只能设置约1.7GB的Oracle SGA。也有不少用户在不同的Linux发行版中使用相同的配置过程,获得了不同的SGA最大值,便认为某些Linux发行版存在问题。这些想法都比较片面。实际上 32位Linux上Oracle SGA 的容量取决于三个指标,即:Linux kernel 版本、Oracle Database 版本、Linux 内核参数shmmax。这里跟据一些网上文章做了些查正,做一些分析吧。一、内核版本的影响在32位Linux平台,至少都有两套内核供用户使用。一个是smp核心,一个是hugemem核心。两个核心的区别在于直接映射的内核数据代码地址空间的区别:SMP 核心:在x86架构下,虚拟地址空间的大小为4G。在这4G空间中,用户空间占3G (0×00000000到0xbfffffff),核心空间占1G(0xc0000000到0xffffffff)。这样的分配策略称为3G/1G分配。具体的分配方式如下:1. 0GB-1GB User space - Used for text/code and brk/sbrk allocations (malloc uses brk for small chunks)2. 1GB-3GB User space - Used for shared libraries, shared memory, and stack; shared memory and malloc use mmap (malloc uses mmap for large chunks)3. 3GB-4GB Kernel Space - Used for the kernel itself这种分配方式对于拥有1G物理内存以下的系统是没有任何问题的,即使超过1G物理内存,3G/1G分配策略也没有什么问题,因为内核可以在高端内存区域 (物理地址1G以上的内存)中存放一些内核数据结构(比如页缓冲等)。然而,随着物理内存的增多,3G/1G分配策略的问题也逐渐会暴露出来。这是因为一些关键的内核数据结构 (比如用于管理物理内存的mem_map[]) 是存放在1G核心空间之内的。对于32G内存的系统,mem_map[]会占用近 0.5G的低端内存(物理地址896M以下的内存),这样留给核心其他部分的内存就不到所有内存的1.5%;而对于64G内存的系统,mem_map[] 本身就会耗尽所有的低端内存,造成系统无法启动。但是把mem_map[]放到高端内存的做法也不太实际,因为mem_map[]和内存管理,体系结构相关底层实现,文件系统以及驱动等几乎所有的核心的关键部分均有联系,这时候就需要使用hugemem核心了。hugemem 核心:与SMP的3G/1G策略不同,hugemem 使用4G/4G分配方式。可以使核心空间由1G增加到4G,而用户空间也由3G增加到4G。相比3G/1G分配策略,对于4G物理内存系统,使用4G/4G分配可以增加低端内存达3倍以上,而对于32G物理内存系统,则会有更多的提升,达到原来的6倍。 理论上,4G/4G策略可以支持物理内存达200G的x86系统(如果硬件没有限制的话),即使对于这样的系统,4G/4G策略也能保证留有1G可用的低端内存。不论能否理解上面的解释,只须要记住 smp 和 hugemem 两个核心,一个是 3G/1G策略,一个是4G/4G策略即可。二、Oracle Database 版本:Oracle SGA 是挂载在内存用户空间中,不同版本的 Oracle Database ,挂载SGA起始地址是不同的:Oracle 10g Release 1:挂载SGA的起始地址为0×50000000(1.25GB)Oracle 10g Release 2:挂载SGA的起始地址为0×20000000(0.5GB)(其它版本未查正,有兴趣可以自已看看Oracle手册)从这个结果可以看出,理论上若使用3G/1G的smp核心,Oracle 10g Release 1 的SGA可设置到 3GB - 1.25 = 1.75GB 。正是因此,也有人认为Oracle SGA 只能设置到 1.75GB。而升级至 R2 版本,则可以设置到 3GB - 0.5GB = 2.5GB 。相同的,使用 4G/4G 的hugemem 核心能够获得多大的SGA 就很清楚了。

三、kernel shmmax 参数:shmmax定义单个共享内存段的最大值,它的取值范围区间是[0,4294967295], 单位为byte,4294967295 bytes即4294967296 bytes(4GB)减去1。一般来说,它应该足够大以容下整个SGA,避免SGA使用多个共享内存段造成Oracle性能下降。那么,将shmmax设置为最大值4294967295,使用 hugmemem 核心,Oracle 10g R2 版本,则理论上的SGA最大值为 3.5GB。尽管用户进程可用的虚拟地址空间为4GB以及shmmax的最大值为4294967295,仍然可以通过使用内存文件系统(in-memory filesystem,比如tmpfs、ramfs以及hugetlbfs)打开Oracle的Very Large Memory (VLM)特性来扩展SGA超过4GB,比如6GB。但是这种方法有个不方便的地方是,用户不能够再使用Oracle 10g中的Automatic Shared Memory Management了。总结一下:SMP核心和hugemem核心的影响:SMP核心:1GB+3GB,SGA最大值为1.75GB(3GB-1.25GB)Hugemem核心:4GB+4GB , SGA最大值为2.75GB(4GB-1.25GB)Oracle 不同版本的影响:Oracle 10g Release 1:挂载SGA的起始地址为0×50000000(1.25GB)Oracle 10g Release 2:挂载SGA的起始地址为0×20000000(0.5GB)那么:Hugemem 核心 + Oracle 10g Release 2 ,SGA最大值为3.5GB(4GB-0.5GB)BTW:由于64位系统对应16EB寻址范围,而不是32位系统的4GB,所以想要获得更大SGA,性能更好的效果,应该优先使用 64 位系统,而不是通过32系统配合内存文件系统来配置了。

Linux下Oracle如何扩充已满的存储空间

您好,很高兴为您解答,方法如下: /sbin/sysctl -a | grep shm /sbin/sysctl -a | grep sem /sbin/sysctl -a | grep file-max /sbin/sysctl -a | grep ip_local_port_range 如果我的回答没能帮助您,请继续追问。

如何扩大oracle的内存

oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是 SGA和 PGA(process global area or private global area)。对于 SGA 区域内的内存来说,是共享的全局的,在 UNIX 上,必须为 oracle 设置共享内存段(可以是一个或者多个),因为 oracle 在UNIX 上是多进程;而在 WINDOWS 上 oracle 是单进程(多个线程),所以不用设置共享内存段。PGA 是属于进程(线程)私有的区域。在 oracle 使用共享服务器模式下(MTS),PGA中的一部分,也就是 UGA 会被放入共享内存 large_pool_size 中。

在虚拟系统中安装oracle时怎么增加物理内存

对于虚拟机的物理内存的添加,首先必须关掉虚拟机,

然后选择虚拟机的设置-在里面有一个Physical

Memory(或者中文:内存),在这里就可以调整虚拟机的物理内存。但注意别调到超过你电脑的内存数量

有问题追问或者百度Hi我都行


网站栏目:oracle怎么扩展内存,oracle数据库内存调整之增加内存
标题来源:http://scjbc.cn/article/hscddc.html

其他资讯