怎么扩大oracle内存 修改oracle内存
在虚拟系统中安装oracle时怎么增加物理内存
对于虚拟机的物理内存的添加,首先必须关掉虚拟机,
扎赉特ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
然后选择虚拟机的设置-在里面有一个Physical
Memory(或者中文:内存),在这里就可以调整虚拟机的物理内存。但注意别调到超过你电脑的内存数量
有问题追问或者百度Hi我都行
如何使oracle的SGA在32位的操作系统下超出2G?
Win2003 :
由于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系统配合内存文件系统来配置了。
如何扩大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 10g安装过后怎样调整内存分配大小
ORACLE 10g的话看你是否使用ASMM(自动共享内存管理,11g就是AMM了),如果是的话,就设置参数:sga_target、pga_aggregate_target两个参数就O了,至于比例看系统,OLTP系统前者设计大一点,占用整个INSTANCE百分之六七十比较正常,OLAP的时候SGA没有必要要那么大了。
不过你要自己设置每一个细节参数的话,就将上述参数设置为0就会自动关闭ASMM(对应进程MMAN,10g和11g没有变化都是这个进程),然后一般设置一下参数:
1、数据缓冲区:
db_cache_size 数据缓冲区DEFAULT区域大小,也是默认的大小
db_keep_cache_size 数据缓冲区keep区域大小,几乎不会被替换掉的内存区
db_recycle_cache_siez 数据recycle区域大小,几乎用完就回收掉的内存区
2、共享池
shared_pool_size
内部保存SQL信息、数据字典、控制信息,其实这部分最好不用自己去控制,它自己管理就行。里面有个参数:shared_pool_reserved_size适当的时候也可以配置一下。
如果你要用rman相关的东西,要配置一下大池,如果没有JAVA PROD在ORACLE内部,JAVA池几乎无用,做Stream复制,就设置一下stream池。
PGA一般设置一个最大值就行,内部它一般自己去调节(PGA内部一般有一段内存和一些后台进程组成),分专用模式还是共享模式的区别(MTS系统中),内部有些细节参数会根据CPU去配置的(如DBWR最多可以20个,最少是1个,可根据CPU的个数设置,但是一个INSTANCE最多20个),另外可以设置内部的SORT_AREA_SIZE、hash_area_size等等用于用户进程查询时产生的内存开销(超过这个值就会到临时表空间去做了),
怎么修改oracle占用的内存大小
如果是10g,那么修改参数,sga_target,和sga_maxsize以及pga_xxxxx(具体的名字忘记了,自己show parameter pga查一下)
修改语句举例:alter system set sga_target=xxxxx;scope=spfile;全部修改后重起数据库。
如果是11g,那么是修改参数memory_target.修改参数一致。
如果是linux系统,还要修改操作系统文件system文件(操作系统不同,该文件名称也不同),其中有一个值,最好改一下,不过要停库后修改。(不改也可以)
分享标题:怎么扩大oracle内存 修改oracle内存
转载来源:http://azwzsj.com/article/higpep.html