ORACLE内存调整建议
- 格式:doc
- 大小:68.50 KB
- 文档页数:10
oracle内存分配和调优总结⼀直都想总结⼀下oracle内存调整⽅⾯的知识,最近正好优化⼀个数据库内存参数,查找⼀些资料并且google很多下。
现在记录下来,做下备份。
⼀、概述: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内存架构组成,按照图上⾯的显⽰可以⼀⽬了然关键的参数和参数名称:对于 SGA 部分,我们通过 sqlplus 中查询可以看到:SQL> select * from v$sga;NAME VALUE---------- --------------------Fixed Size 454032Variable Size 109051904Database Buffers 385875968Redo Buffers 667648Fixed Size:oracle 的不同平台和不同版本下可能不⼀样,但对于确定环境是⼀个固定的值,⾥⾯存储了 SGA 各部分组件的信息,可以看作引导建⽴SGA 的区域。
Variable Size :包含了 shared_pool_size、java_pool_size、large_pool_size 等内存设置Database Buffers :指数据缓冲区:在 8i 中包含 db_block_buffer*db_block_size、buffer_pool_keep、buffer_pool_recycle 三部分内存。
Oracle数据库内存优化Oracle的一些启动参数都保存在pfile和spfile这两个文件里面,早先的oracle(8i及之前版本)都是用pfile,这是个文本文件,可以用记事本修改,但必须要重新启动数据库服务才能生效,后来的oracle(8i之后)改用spfile,这是二进制文件没法用记事本修改,不过可以不用手动启动数据库服务。
oracle9i数据库默认从pfile中启动,但是可以指定从spfile 启动数据库,所以优化oracle数据库内存就会出现两种方法,即静态修改pfile文件和动态修改spfile。
方法一:静态修改pfile方式(注意:此方法只使用于数据库管理员明确当前数据库实例使用哪个pfile文件的情况,一般不建议使用这种方法,建议选用下面的方法操作)。
具体步骤如下所示:1)开始→运行→输入sqlplus /nolog ,然后用下图所示的命令连接到数据库。
注意:如果当前数据库的系统用户密码做了修改请用修改后的,一般9i数据库的系统用户名和密码与下图中是一致的。
2)输入命令:show parameter pfile查看当前数据库实例是不是以pfile启动,如果是pfile 启动的vale为空,如果是spfile启动的value下是spfile的路径。
3)输入命令:show parameter db_cache_size查看当前缓存大小注意:如果确定当前数据库实例从默认pfile中启动就找到下图所示的pfile文件夹下的init.ora文件,修改db_cache_size=838860800,然后保存这个文件夹,在“我的电脑-管理-服务”中重新启动oracle服务即可达到修改的目的。
方法二:动态修改spfile方式。
(注意:建议选用这种方法修改内存,因为这种方法不用关注pfile的位置,因为需要从spfile 中生成pfile)具体步骤如下所示:1)开始→运行→输入sqlplus /nolog ,然后用下图所示的命令连接到数据库。
Oracle数据库内存参数调优技术的个人总结近来公司技术,研发都在问我关于内存参数如何设置可以优化Oracle的性能,所以抽时间整理了这篇文档,以做参考。
目的:希望通过整理此文档,使公司同事对oracle内存结构有一个全面的了解,并在实际的工作中灵活应用,使oracle的内存性能达到最优配置,提升应用程序反应速度,并进行合理的内存使用。
实例结构oracle实例=内存结构进程结构oracle实例启动的过程,其实就是oracle内存参数设置的值加载到内存中,并启动相应的后台进程进行相关的服务过程。
进程结构oracle进程=服务器进程用户进程几个重要的后台进程:DBWR:数据写入进程.LGWR:日志写入进程.ARCH:归档进程.CKPT:检查点进程(日志切换;上一个检查点之后,又超过了指定的时间;预定义的日志块写入磁盘;例程关闭,DBA强制产生,表空间offline)LCKn(0-9):封锁进程.Dnnn:调度进程.内存结构(我们重点讲解的)内存结构=SGA(系统全局区) PGA(程序全局区)SGA就是我们所说的内存调优的主要对象。
我们重点就是设置SGA原则:SGA PGA OS使用内存<总物理RAM1、SGA系统全局区.(包括以下五个区)A、数据缓冲区:(db_block_buffers)存储由磁盘数据文件读入的数据。
大小: db_block_buffers*db_block_sizeOracle9i设置数据缓冲区为:Db_cache_size原则:SGA中主要设置对象,一般为可用内存40%。
B、共享池:(shared_pool_size):数据字典,sql缓冲,pl/sql语法分析.加大可提速度。
原则:SGA中主要设置对象,一般为可用内存10%C、日志缓冲区:(log_buffer)存储数据库的修改信息.原则:128K ---- 1M 之间,不应该太大D 、JAVA池(Java_pool_size)主要用于JAVA语言的开发.原则:若不使用java,原则上不能小于20M,给30M通常就够了E、大池(Large_pool_size)如果不设置MTS,主要用于数据库备份恢复管理器RMAN。
Oracle数据库内存优化操作说明Oracle数据库内存优化是提高数据库性能的重要手段之一。
通过设置合理的内存参数,可以有效地削减IO操作,提高数据访问速度。
本文将介绍一些常见的Oracle数据库内存优化操作。
一、调整PGA参数PGA(Program Global Area)是每个数据库会话独有的内存区域,用于存储排序、哈希操作等临时数据。
调整PGA参数可以提高排序和连接操作的性能。
1. 设置PGA_AGGREGATE_TARGET参数该参数把握PGA内存的总量,一般建议设置为SGA的1/3到1/2。
可以通过以下命令设置:ALTER SYSTEM SET PGA_AGGREGATE_TARGET=XXXM;2. 调整SORT_AREA_SIZE参数该参数把握每个排序操作使用的PGA内存大小,一般建议设置为100MB到200MB。
可以通过以下命令设置:ALTER SESSION SET SORT_AREA_SIZE = XXXM;3. 调整HASH_AREA_SIZE参数第1页/共4页该参数把握每个哈希操作使用的PGA内存大小,一般建议设置为SORT_AREA_SIZE的1/2到1倍。
可以通过以下命令设置:ALTER SESSION SET HASH_AREA_SIZE = XXXM;二、调整SGA参数SGA(System Global Area)是Oracle数据库的全局共享内存区域,用于存储缓存数据、SQL执行方案等。
调整SGA参数可以提高数据访问的速度。
1. 调整SHARED_POOL_SIZE参数该参数把握缓存SQL语句的内存大小,一般建议设置为SGA的1/4到1/3。
可以通过以下命令设置:ALTER SYSTEM SET SHARED_POOL_SIZE=XXXM;2. 调整DB_CACHE_SIZE参数该参数把握数据库缓冲区的内存大小,一般建议设置为SGA的1/2到2/3。
可以通过以下命令设置:ALTER SYSTEM SET DB_CACHE_SIZE=XXXM;3. 调整LOG_BUFFER参数该参数把握数据库日志缓冲区的内存大小,一般建议设置为10MB到100MB。
千里之行,始于足下。
Oracle数据库内存优化操作说明Oracle数据库的内存优化操作主要包括以下几个方面:1. 调整SGA和PGA的大小:- SGA(System Global Area)是Oracle数据库实例使用的内存区域,包括数据库缓存、共享池等。
可以通过修改SGA_TARGET和SGA_MAX_SIZE等参数来调整SGA的大小。
- PGA(Program Global Area)是每个进程独自使用的内存区域,包括排序区、hash区等。
可以通过修改PGA_AGGREGATE_TARGET参数来调整PGA的大小。
2. 合理配置各个内存区域的大小:- 根据具体的数据库负载情况,可以调整SGA组件的大小,如缓冲区大小、共享池大小等,以提高数据库的性能。
- 合理配置PGA区域的大小,可以减少排序操作的磁盘访问,提高查询效率。
3. 使用自动内存管理 AMM(Automatic Memory Management):- AMM是Oracle 11g及以上版本中提供的内存管理特性,可以自动分配SGA和PGA的大小。
可以通过设置MEMORY_TARGET参数来启用AMM。
4. 使用自动PGA管理:- Oracle 12c及以上版本中提供了自动PGA管理特性,可以根据需要自动调整PGA的大小。
可以通过设置PGA_AGGREGATE_TARGET参数来启用自动PGA管理。
5. 合理配置数据库连接池:第1页/共2页锲而不舍,金石可镂。
- 如果数据库中有大量的并发连接,可以考虑启用连接池来管理连接,减少连接的开销,提高数据库的并发性能。
6. 合理配置数据库缓存:- Oracle数据库中有多个缓存区域,如数据缓存、共享池等,可以根据具体的负载情况,调整缓存的大小,以提高查询性能。
需要注意的是,内存优化操作可能会引起数据库的性能变化,因此在进行内存优化之前,最好先进行充分的测试和评估,以确保优化操作是必要且有效的。
Oracle性能调整(一)——基本参数调整一、操作系统参数交换区是Oracle的一项基本的要求。
可以根据Oracle的发行要求来确定。
一般交换区大小的要求是该服务器内存的2倍至4倍之间,建议是内存的4倍Note2:oracle 文件设置当服务器平台已完成操作系统的安装后,就应该开始认真的考虑下面的问题:A、是否采用裸设备实际应用的生产系统基本都是采用裸设备,使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。
B、安装点的考虑Oracle的安装点就是指数据文件、日志文件和控制文件的安置路径,为了使系统在以后运行性能达到优化,建议将数据文件、日志文件和控制文件的安置路径与数据库系统存放在不同的路径上。
最好将数据文件、日志文件和控制文件分别存放在不同的路径。
C、SYSTEM表空间对应数据文件在自定义安装会话中,建议你根据需要设置system表空间所对应的数据文件的大小。
一般要设置比默认值的2倍。
该数据文件的大小最好是在300MB至500MB间。
因为数据文件太小不利于系统的运行。
D、临时表空间对应的数据文件临时表空间对应的数据文件可以根据将来系统存放的应用的处理情况来定。
比如系统将来可能要经常进程排序处理,则需要设置较大的临时表空间,也可能需要再建立新的临时表空间。
这里建议临时表空间的数据文件在100MB至300MB左右。
E、回滚段表空间对应的数据文件回滚表空间都是系统管理,初始值也是根据系统事务量预估计的值,实际到运行阶段如果系统常出现ORA-01555错误的时候,可能就需要增加回滚表空间的大小。
F、日志文件的大小日志文件的大小对于Oracle系统的运行也是相当重要。
默认值是太小。
实际根据事务繁忙预估计日志大小,没有固定的具体值范围,建议重做日志切换时间不能过短也不能过长,一般在20-40分钟左右。
该参数可以在系统运行期间根据数据库系统日志切换时间重新调整,控制文件的大小。
G、数据库块的大小如果你的应用系统是OLTP的话,可以采用较小的数据库块。
Oracle内存参数调优设置Oracle 数据库系统中起到调节作⽤的参数叫初始化参数,数据库管理员根据实际情况需要适当调整这些初始化参数以优化Oracle系统。
1 主要系统参数调优介绍 2 系统内存参数的分配 2.1 Oracle 实例= 内存结构 + 进程结构 内存结构 = SGA + PGA SGA(系统全局区):⽤户存储数据库信息的内存区,该区域为数据库进程所共享。
它包含服务器的数据和控制信息,主要包含⾼速数据缓冲区、共享池、重做⽇志缓存区、Java池,⼤型池等内存结构。
SGA的设置,理论上SGA的⼤⼩应该占OS的内存的 1/3-1/2左右。
SGA + PGA + OS使⽤的内存 < 总的物理内存 查看当前系统SGA的信息select name,bytes/1024/1024 as "Size(M)"from v$sgainfo; 根据查询信息显⽰当前还有148M可⽤的SGA内存,系统当前的内存配置并不是最优的,我们在实际使⽤过程中根据情况可以重新分配内存。
2.2 SGA的设置原则 SGA = (db_block_buffers * db_block_size) + (shared_pool_size + large_pool_size + java_pool_size + log_buffers) (1)缓冲区⾼速缓存(database_buffer_cache):主要存储由磁盘数据⽂件写⼊的数据 ⼤⼩:db_block_buffers * db_block_size分配原则:缓冲区⾼速缓存的调整,⽤户进程所存取的所有数据都是经过缓冲区⾼速缓存来存取,所以该部分的命中率,对性能⾄关重要。
缓冲区⾼速缓存的使⽤情况记录在动态性能表v$sysstat中,可通过查询该表来了解其活动情况,以决定如何调整。
select name,value from v$sysstat where name in ('dbblock gets','consistent gets','physical reads');dbblock gets和consistent gets的值是请求数据缓冲区中读的总次数。
oracle调整方案Oracle 调整方案概述:在使用 Oracle 数据库的过程中,为了提高性能和优化查询效率,调整数据库配置和参数设置是一个重要的工作。
本文将介绍一些常见的Oracle 数据库调整方案,帮助您优化数据库性能。
一、硬件配置调整1. 增加内存:增加数据库服务器的内存可以提高数据库的性能,特别是在处理大量并发查询和高负载的情况下。
2. 增加硬盘容量:如果数据库的数据量持续增长,可以考虑增加硬盘容量,以确保数据库有足够的空间存储数据。
3. 使用高速磁盘:使用高速磁盘,如固态硬盘(SSD),可以提高数据库的读写速度和响应时间。
二、数据库参数调整1. SGA(System Global Area)调整:SGA 是 Oracle 数据库的内存区域,包括共享池、数据库缓冲区等。
可以通过调整 SGA 参数的大小来提高数据库的性能。
2. PGA(Program Global Area)调整:PGA 是每个连接到数据库的进程所使用的内存区域,可以通过调整 PGA 参数的大小来优化 SQL 查询性能。
3. 调整日志缓冲区大小:适当增加日志缓冲区的大小可以提高数据库的写入性能,特别是在大批量写入数据的情况下。
4. 调整查询优化器参数:Oracle 使用查询优化器来生成最优的执行计划。
通过调整一些查询优化器参数,如 optimizer_mode、optimizer_index_cost_adj 等,可以提高查询效率。
三、索引调整1. 分析索引的使用情况:使用 Oracle 提供的分析工具,如 Explain Plan,可以分析查询语句的执行计划和索引的使用情况。
根据分析结果,可以考虑删除不使用或者很少使用的索引,减少索引维护的开销。
2. 创建合适的索引:对于经常用于查询的列,可以创建合适的索引,提高查询性能。
但是要注意索引的数量和大小,过多或过大的索引会增加数据库的开销。
3. 索引压缩:对于大型表的索引,可以考虑使用 Oracle 提供的索引压缩功能,减少索引的大小,提高查询性能。
Oracle 10g的内存调整报告SGA--(初始化参数sga_target)||__shared pool(初始化参数shared_pool_size) chunk链表结构构成Bucket | || |__library cache| || |__dictionary cache| || |__reserved size (初始化参数shared_pool_reserved_size)|||__ DEFAULT buffer cache(初始化参数db_cache_size) LRU链表结构||__KEEP buffer cache (初始化参数db_keep_cache_size)||__RECYCLE buffer cache (初始化参数db_recycle_cache_size)|||__ large pool (初始化参数large_pool_size)||__java pool (初始化参数java_pool_size)||__ streams pool (初始化参数streams_pool_size)||__log buffer (初始化参数log_buffer)PGA--(初始化参数pga_aggregate_target)||__ sort_area_size||__ bitmap_merge_area_size||__ hash_area_size||__ open_cursors||__ oracle 堆栈和TNS堆栈PRE_PAGE_SGAoracle实例启动时,会只载入各个内存区最小的大小。
而其他SGA内存只作为虚拟内存分配,只有当进程touch到相应的页时,才会置换到物理内存中。
但我们也许希望实例一启动后,所有SGA都分配到物理内存。
这时就可以通过设置PRE_PAGE_SGA参数来达到目的了。
这个参数的默认值为FALSE,即不将全部SGA置入物理内存中。
当设置为TRUE时,实例启动会将全部SGA置入物理内存中。
(Oracle管理)ORACLE存储及优化‐SGA_MAX_SIZE最大使用的SGA内存数,是限制值‐PGA_AGGREGATE_TARGET目标PGA内存值,可以超过,做排序、JOIN及用户连接用。
内存溢出时,PGA要往上扩,如果通过HDISK本地硬件的IO很大(内存交换页),则可能存在内存溢出。
通过V$PGASTAT中的参数OVER_ALLOCATION_COUNT,正常是0,如果大于0,则PAG 可能太小‐DB_BLOCK_SIZE(2k~32K)交易系统设置得可以小一点,查询系统设置得大一点4.表分区技术‐表分区要放在不同的表空间,分区要考虑到备份任务及提高可用性‐分区技术的效益和目标i.性能1.SELECT和DML操作只访问指定分区2.并行DML操作ii.可管理性1.历史数据清除2.提高备份性能3.指定分区的数据维护操作iii.可用性1.将故障局限在分区中2.缩短恢复时间‐范围分区i.特别适合于按时间周期进行数据的存储,比如按月、年等ii.数据管理能力强,对数据迁移、数据备份、数据交换方便iii.范围分区与记录值有关,实施难度和可维护性相对差‐HASH分区i.以HASH算法来分,分布均匀ii.分区数一般是2的幂,效率最高iii.容易实施iv.总体性能佳v.适合于静态数据(不用DELETE操作,比如人员档案信息)vi.支持局部索引分区,维护量小‐列表分区i.相当于用枚举分区ii.优缺点同范围分区‐复合分区i.既适合于历史数据,又适合于数据均匀分布ii.一般可以为RANGE-Hange,Range-List分区,实现粒度更细的操作iii.支持复合localindexes操作‐索引分区i.数据分区后,要提高性能,一定要建索引分区ii.Global索引分区不同与表分区iii.Local索引分区与表分区相同iv.分区表上的非分区索引等同于Global索引‐OLTP系统中的建议i.Global和uniquelocalindex性能优于nonuniquelocalindexii.Localindex提供了更好的可用性‐OLAP系统中的建议i.Localindex更适合于数据装载和分区维护ii.在大量的数据时,能充分利用Localindex并行查询能力‐分区交换功能i.通过交换数据段,实现分区和非分区表的数据交换,以及子分区和分区表的数据交换,速度快ii.Local索引自动维护iii.Global索引必须重建‐分区设计原则i.表的大小:当表大小超过1.5GB—2GB,或对于OLTP系统,表的记录超过1000万,都应考虑分区ii.数据访问特性:基于表的大部分查询应用,只访问表中少量的数据。
Oracle内存分配与调整者l 作者介绍冯春培,毕业于北京信息工程学院。
曾做电信计费后台程序开发,从事过开发DBA工作,目前公司主要做数据库优化产品开发。
热爱ORACLE,在任数据库管理版块版主(biti_rainy),个人兴趣主要在oracle internal、performance tuning。
对数据库管理、备份与恢复、数据库应用开发、SQL优化均有广泛理解。
希望大家一起探讨oracle及相关技术。
l 前言对于oracle的内存的管理,截止到9iR2,都是相当重要的环节,管理不善,将可能给数据库带来严重的性能问题。
下面我们将一步一步就内存管理的各个方面进行探讨。
l 概述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中。
对于SGA部分,我们通过sqlplus中查询可以看到:SQL> select * from v$sga;NAME VALUE-------------------- ----------Fixed Size 454032Variable Size 109051904Database Buffers 385875968Redo Buffers 667648Fixed Sizeoracle 的不同平台和不同版本下可能不一样,但对于确定环境是一个固定的值,里面存储了SGA各部分组件的信息,可以看作引导建立SGA的区域。
oracle内存占用过高和修改不当无法启动oracle实例的解决办法今天,在自己机器上装了oracle 12c,发现Oracle的服务Oracle RDBMS Kenel Executable (OracleServiceORCL)占用内存高达5G,本人电脑内存才16G。
如此高的占用率,真让人心疼。
于是就对Oracle的内存进行调整。
具体办法如下:1. 在cmd命令中输入如下命令启动sqlplus:sqlplus /nolog2. sql启动后,连接数据库,命令如下:conn /as sysdba;3. 如果是oracle 11g以后版本,可以修改MEMORY_MAX_TARGET的值来设置自己想要内存值,我这里设置为1024M。
alter system set memory_max_target=1204M scope=SPFILE;4. 关闭数据库实例shutdown immediate5.启动Oracle实例,基于spfile里面设置情况。
startup注意事项:1)MEMORY_MAX_TARGET是MEMORY_TARGET的最大阈值,MEMORY_TARGET是Oracle使用机器内存的总量,默认值为0,即由oracle自动根据机器内存来分配,MEMORY_TARGET = SGA_TARGET + PGA_AGGREGATE_TARGET,当SGA_TARGET和PGA_AGGREGATE_TARGET都设置为0时,Oracle会自动根据MEMORY_TARGET对两者进行内存分配。
2)如果更改过SGA_TARGET和PGA_AGGREGATE_TARGET的值,请用下面语句将其恢复0。
记得不太清楚的,可以通过show parameter命令来查看内存的情况。
ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE;ALTER SYSTEM SET PGA_AGGREGATE_TARGET =0 SCOPE = SPFILE;show parameter命令例子如下,注意下面命令的sga可以换成target或者memory来查看memory_max_target和memory_target的值。
Oracle内存占⽤⾼过时的调整策略先贴出具体步骤开启⾃动共享内存管理 ASMM第⼀步:将MEMORY_MAX_TERGET和MEMORY_TARGET和设置为0SQL> alter system set memory_max_target=0 scope=spfile;System altered.SQL> alter system set memory_target=0 scope=both;System altered.第⼆步:设置sga_target和pga_aggregate_target的数值SQL> alter system set sga_target=1024m scope=both;System altered.SQL> alter system set pga_aggregate_target=512m scope=both;System altered.第三步:重启数据库开启⾃动内存管理 AMM⾃动内存管理(Automatic Memory Management)是11G中推出的新功能,10G中只有⾃动SGA管理。
启⽤了AMM只需设置内存的⼤⼩,就可以⾃动的在SGA和PGA之间分配内存,省去了管理设置SGA和PGA的⿇烦。
AMM的相关参数:MEMORY_TARGET:SGA和PGA可以使⽤的内存的总的⼤⼩,可以动态的设置,最⼤值不超过MEMORY_MAX_TARGET。
MEMORY_MAX_TARGET:可以使⽤的内存的最⼤值,这个是静态参数,要修改必须重启数据库。
SGA_TARGET:SGA⽬标内存⼤⼩,启⽤AMM后,这个参数应该设为0.PGA_AGGREGATE_TARGET:PGA⽬标内存⼤⼩,启⽤AMM后,应该设为0.开启AMM:要想开启AMM,只需要设置MEMORY_TARGET,同时设置SGA_TARGET和PGA_AGGREGATE_TARGET都为0。
ABC公司Oracle数据库参数调整建议1.Oracle参数initdb.ora (修改建议)目前系统现在分析:(1)Windows 2003可以显示50G内存,但操作系统是32位,最多默认支持4G,用户进程支持2G,Oracle可能支持1.7G内存;(2)不清楚是否对操作系统做过支持大内存的调整;从下表的参数分析,可能没有修改;(3)不清楚此系统Windows是否允许在虚拟环境(Virtual Machine),故保守起见,我们的建议是:把内存往小里调整。
根据我们的经验,对Oracle数据库调整如下:总内存控制在1.5GSGA控制在800MPGA使用700Mtestdb.__db_cache_size=469762048testdb.__java_pool_size=8388608testdb.__large_pool_size=8388608testdb.__oracle_base='D:\app\Administrator'#ORACLE_BASE set from environment testdb.__pga_aggregate_target= 734003200 #700M #671088640testdb.__sga_target=838860800 #800M #1249902592testdb.__shared_io_pool_size=0testdb.__shared_pool_size= 335544320 #320M #738197504testdb.__streams_pool_size=8388608*.audit_file_dest='D:\app\Administrator\admin\xbrldb\adump'*.audit_trail='db'*.compatible='11.2.0.0.0'*.control_files='E:\data\xbrldb\control01.ctl','D:\app\Administrator\flash_recovery_ area\xbrldb\control02.ctl'*.db_block_size=8192*.db_domain=''*.db_name='xbrldb'*.db_recovery_file_dest='D:\app\Administrator\flash_recovery_area'*.db_recovery_file_dest_size=21474836480*.diagnostic_dest='D:\app\Administrator'*.dispatchers='(PROTOCOL=TCP) (SERVICE=xbrldbXDB)'*.fast_start_mttr_target=30*.job_queue_processes=1000testdb.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(H OST=10.24.58.100)(PORT=1531))))'*.log_archive_format='ARC%S_%R.%T'*.memory_target= 1610612736 #1.5G#1916796928*.nls_language='SIMPLIFIED CHINESE'*.nls_territory='CHINA'*.open_cursors=300*.processes=1500*.remote_login_passwordfile='EXCLUSIVE'*.sessions=1655*.sga_max_size=838860800 #800M 1258291200*.undo_tablespace='UNDOTBS1'2.Wind ows内存调整参考资料2.1.Windows 2003支持大内存先要开启PAE功能,方法如下:打开Boot.ini 文件,然后将/PAE 参数添加到boot.ini中,如以下所示:multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows Server 2003, Datacenter Edition" /PAE如果CPU、主板、操作系统都支持并启用PAE(物理地址扩展),那么此时的物理内存地址总线就是36位。
2^36 = 68719476736 = 64 GB另外,当前的x64并非真正使用64位的地址总线,而是48位,所以内存上限是2^48。
所以,现在的32位系统并非纯正的“32位”;x64并非纯正的"64位"。
为什么Windows 2003 32位版本最高可以支持128GB内存?自P4、K8以后的32位CPU,物理地址地址都是40位,所以可以支持128GB。
另外windows2003的版本也对此有影响:Windows Server 2003 Web Edition 32位版最大能支援2G的RAM,Windows Server 2003 Standard Edition 32位版最大能支援4G的RAM,Windows Server 2003 Enterprise Edition 32位版最大能支援32G的RAM, Windows Server 2003 Datacenter Edition 32位版最大能支援512G的RAM远景上还有一个很详细的讨论贴:/thread-456977-1-1.html2.2.32位Windows上扩展Oracle SGA使用大内存/2010/04/32位windows上扩展oracle-sga使用大内存/默认情况下32位系统最大只能访问4G的内存,用户进程最多访问2G的内存空间,系统内核保留2G的内存空间。
如果想增加用户进程访问的内存空间,那么需要修改windows 的启动参数boot.ini,在boot.ini文件中增加/3G的开关. [operating systems]multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise"/fastdetect /3G这样可以扩展用户进程访问多达3G的内存空间,系统内核保留1G的内存空间。
/3G只是给用户进程增加了1G的内存空间,但是我们使用的内存还是限制在4G 以内。
针对上面的情况我们可以通过PAE(物理地址扩展,Inter发明)技术让操作系统使用理论上多大64G的内存,大约我们都知道32位的应用最多能识别4G 的内存,要访问大于4G的内存,除了操作系统可以识别访问大于4G的内存外,应用软件也要支持访问大于4G的功能。
支持PAE的Windows操作系统有:Microsoft Windows Server 2003 Enterprise EditionMicrosoft Windows Server 2003 Datacenter EditionMicrosoft Windows 2000 Advanced ServerMicrosoft Windows 2000 Datacenter Server支持PAE技术的Oracle版本:Oracle 9.2.xOracle 10.1.xOracle 10.2.xOracle 11.1.xOracle 11.2.xWindows上启用PAE在Windows上启用PAE,/3G和/PAE可以同时使用,如果同时使用这两个参数,那么操作系统最能只能使用16G的内存。
有关Windows PAE相关知识可以参考下面的连接:/kb/283037/zh-cn/whdc/system/platform/server/PAE/pae_os.mspx [operating systems]multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE[operating systems]multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3G /PAE除了配置/PAE之外,启动OracleServiceSID(SID代表实际的数据库实例)的服务还必须有”Lock Pages In Memory”系统权限,这个权限默认属于LocalSystem用户。
一般Oracle的服务都用这个服务启动,如果不是,则可以修改启动服务的账户为LocalSystem用户。
Oracle中使用PAE在介绍Oracle使用PAE之前,首先必选先引入一概念。
AWE:地址窗口扩展,地址窗口扩展到意思是在普通的用户进程空间内划分一快区域,这里的普通用户进程空间指导前面的2G或3G(启用/3G后)的内存空间。
通过参数AWE_WINDOW_MEMORY定义这个区域大小,默认为1G,这个区域其实是一个指针窗口,这个指针窗口指向大于4G物理内存之外的某个物理地址范围。
Oracle 在访问扩展到物理内存时,首先必须将要访问的数据映射到AWE区域,然后在AWE区域中操作这些数据块。
以此循环。
其实Oracle就是通过AWE间接的访问大于4G的物理内存,并不是Oracle的进程直接操作大于4G的物理内存。
Oracle SGA中只有数据库缓冲区可以使用这一扩展内存空间。
其他的SGA组件都必须在2G/3G的内存空间内定义。
默认情况下AWE_WINDOW_MEMORY=min(4096*DB_BLOCK_SIZE*8*2*CPU_COUNT)/8 + (awe_window_memory * 10%)。
可以通过编辑windows注册表来定义HKLM\Software\Oracle\Home0\AWE_WINDOW_MEMORY 默认为1G并且AWE不支持db_cache_size、ASMM(自动共享内存管理)、AMM(自动内存管理)技术,用db_blocks_buffer的形式使用扩站内存,定义db_blocks_buffer前,首先定义use_indirect_data_buffers=true.操作前搞清楚如何分配内存空间:3G内存空间内包括以下Oracle组件:PGA、UGAshared_pool_size、java_pool_size、large_pool_size、log_buffer_size、streams_pool_sizeAWE_WINDOW_MEMORY所有线程的堆栈空间怎样定义各个内存的大小,需要DBA仔细斟酌。