189 8069 5689

oracle如何调整内存 修改oracle数据库内存参数

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内存参数调优技术详解

目的

希望通过整理此文档 使大家对 oracle 内存结构有一个全面的了解 并在实际的工作中灵活应用 使 oracle 的内存性能达到最优配置 提升应用程序反应速度 并进行合理的内存使用

实例结构

oracle 实例 = 内存结构 + 进程结构

oracle 实例启动的过程 其实就是 oracle 内存参数设置的值加载到内存中 并启动相应的后台进程进行相关的服务过程

进程结构

oracle 进程 = 服务器进程 + 用户进程

几个重要的后台进程

DBWR 数据写入进程

LGWR: 日志写入进程

ARCH: 归档进程

CKPT: 检查点进程 ( 日志切换 上一个检查点之后 又超过了指定的时间 预定义的日志块写入磁盘 例程关闭 DBA 强制产生 表空间 offline)

LCKn ( ) 封锁进程

Dnnn: 调度进程

内存结构 ( 我们重点讲解的 )

内存结构 =SGA (系统全局区) +PGA (程序全局区)

SGA 是用于存储数据库信息的内存区 该信息为数据库进程所共享 它包含 Oracle 服务器的数据和控制信息 它是在 Oracle 服务器所驻留的计算机的实际内存中得以分配 如果实际内存不够再往虚拟内存中写

我们重点就是设置 SGA 理论上 SGA 可占 OS 系统物理内存的 / —— /

原则 SGA+PGA+OS 使用内存 总物理 RAM

SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+ MB

SGA 系统全局区 ( 包括以下五个区 )

A 数据缓冲区 : ( db_block_buffers )存储由磁盘数据文件读入的数据

大小 : db_block_buffers*db_block_size

Oracle i 设置数据缓冲区为 Db_cache_size

原则 SGA 中主要设置对象 一般为可用内存 %

B 共享池 : ( shared_pool_size ) : 数据字典 sql 缓冲 pl/sql 语法分析 加大可提速度

原则 SGA 中主要设置对象 一般为可用内存 %

C 日志缓冲区 : ( log_buffer )存储数据库的修改信息

原则 K M 之间 不应该太大

D JAVA 池( Java_pool_size )主要用于 JAVA 语言的开发

原则 若不使用 java 原则上不能小于 M 给 M 通常就够了

E 大池( Large_pool_size )   如果不设置 MTS 主要用于数据库备份恢复管理器 RMAN

原则 若不使用 MTS M 之间 不应该太大

SGA= db_block_buffers*db_block_size+ shared_pool_size+ log_buffer+Java_pool+size+large_pool_size

原则 达到可用内存的 % 就可以了

PGA 程序全局区

PGA 包含单个服务器进程或单个后台进程的数据和控制信息 与几个进程共享的 SGA 正相反 PGA 是只被一个进程使用的区域 PGA 在创建进程时分配在终止进程时回收

A Sort_area_size  用于排序所占内存

B Hash_area_size 用于散列联接 位图索引

这两个参数在非 MTS 下都是属于 PGA 不属于 SGA 是为每个 session 单独分配的 在我们的服务器上除了 OS + SGA 一定要考虑这两部分

原则 OS 使用内存 +SGA+ 并发执行进程数 *(sort_area_size+hash_ara_size+ M) * 总内存

实例配置

一 物理内存多大

二 操作系统估计需要使用多少内存

三 数据库是使用文件系统还是裸设备

四 有多少并发连接

五 应用是 OLTP 类型还是 OLAP 类型

基本掌握的原则是 db_block_buffer 通常可以尽可能的大 shared_pool_size 要适度 log_buffer 通常大到几百 K 到 M 就差不多了

A 如果 M RAM  单个 CPU   db_block_size 是 bytes

SGA= * M= M 左右

建议 shared_pool_size = M db_block_buffer* db_block_size = M

具体 : shared_pool_size = # M

db_block_buffer=       # M

log_buffer =          # k ( K*CPU 个数 )

large_pool_size=       # M

java_pool_size =     # M

sort_area_size =       # k ( k M)

sort_area_retained_size =    # MTS 时 sort_area_retained_size = sort_area_size

B 如果 G RAM      单个 CPU   db_block_size 是 bytes

SGA= * M= M 左右

建议 shared_pool_size = M db_block_buffer* db_block_size = M

具体 : shared_pool_size=     # M

db_block_buffer=          # M

log_buffer =          # k ( K*CPU 个数 )

large_pool_size=        # M

java_pool_size =     # M

sort_area_size =       # k ( k M)

sort_area_retained_size =    # MTS 时 sort_area_retained_size = sort_area_size

C 如果 G     单个 CPU   db_block_size 是 bytes

SGA= * M= M 左右

建议 shared_pool_size = M db_block_buffer *db_block_size = M

具体 : shared_pool_size=     # M

db_block_buffer=          # M

log_buffer =             # k ( K*CPU 个数 )

large_pool_size=       # M

java_pool_size =       # M

sort_area_size =          # k ( k M)

sort_area_retained_size =    # MTS 时 sort_area_retained_size = sort_area_size

假定 bit ORACLE

内存 G

shared_pool_size = M data buffer = G

内存 G

shared_pool_size = M data buffer = G

内存 G

shared_pool_size = M M data buffer = G

参数更改方式

oracle i

主要都是通过修改 oracle 启动参数文件进行相关的配置

参数文件位置

d:\oracle\admin\DB_Name\pfile\init ora

按以上修改以上参数值即可

Oracle i:

两种方式 第一种是修改 oracle 启动参数文件后 通过此参数文件再创建服务器参数文件

第二种是直接运行 oracle 修改命令进行修改

SQLalter system set db_cache_size= M scope=spfile;

lishixinzhi/Article/program/Oracle/201311/16995

oracle数据库优化有哪些方法?

你最好买一本专门讲ORACLE性能优化的书,好好看看\x0d\x0a1、调整数据库服务器的性能\x0d\x0aOracle数据库服务器是整个系统的核心,它的性能高低直接影响整个系统的性能,为了调整Oracle数据库服务器的性能,主要从以下几个方面考虑: \x0d\x0a1.1、调整操作系统以适合Oracle数据库服务器运行\x0d\x0aOracle数据库服务器很大程度上依赖于运行服务器的操作系统,如果操作系统不能提供最好性能,那么无论如何调整,Oracle数据库服务器也无法发挥其应有的性能。 \x0d\x0a1.1.1、为Oracle数据库服务器规划系统资源 \x0d\x0a据已有计算机可用资源, 规划分配给Oracle服务器资源原则是:尽可能使Oracle服务器使用资源最大化,特别在Client/Server中尽量让服务器上所有资源都来运行Oracle服务。 \x0d\x0a1.1.2、调整计算机系统中的内存配置 \x0d\x0a多数操作系统都用虚存来模拟计算机上更大的内存,它实际上是硬盘上的一定的磁盘空间。当实际的内存空间不能满足应用软件的要求时,操作系统就将用这部分的磁盘空间对内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能下降。为了避免过多地使用虚存,应加大计算机的内存。 \x0d\x0a1.1.3、为Oracle数据库服务器设置操作系统进程优先级 \x0d\x0a不要在操作系统中调整Oracle进程的优先级,因为在Oracle数据库系统中,所有的后台和前台数据库服务器进程执行的是同等重要的工作,需要同等的优先级。所以在安装时,让所有的数据库服务器进程都使用缺省的优先级运行。 \x0d\x0a1.2、调整内存分配\x0d\x0aOracle数据库服务器保留3个基本的内存高速缓存,分别对应3种不同类型的数据:库高速缓存,字典高速缓存和缓冲区高速缓存。库高速缓存和字典高速缓存一起构成共享池,共享池再加上缓冲区高速缓存便构成了系统全程区(SGA)。SGA是对数据库数据进行快速访问的一个系统全程区,若SGA本身需要频繁地进行释放、分配,则不能达到快速访问数据的目的,因此应把SGA放在主存中,不要放在虚拟内存中。内存的调整主要是指调整组成SGA的内存结构的大小来提高系统性能,由于Oracle数据库服务器的内存结构需求与应用密切相关,所以内存结构的调整应在磁盘I/O调整之前进行。 \x0d\x0a1.2.1、库缓冲区的调整 \x0d\x0a库缓冲区中包含私用和共享SQL和PL/SQL区,通过比较库缓冲区的命中率决定它的大小。要调整库缓冲区,必须首先了解该库缓冲区的活动情况,库缓冲区的活动统计信息保留在动态性能表v$librarycache数据字典中,可通过查询该表来了解其活动情况,以决定如何调整。 \x0d\x0a \x0d\x0aSelect sum(pins),sum(reloads) from v$librarycache; \x0d\x0a \x0d\x0aPins列给出SQL语句,PL/SQL块及被访问对象定义的总次数;Reloads列给出SQL 和PL/SQL块的隐式分析或对象定义重装载时在库程序缓冲区中发生的错误。如果sum(pins)/sum(reloads) ≈0,则库缓冲区的命中率合适;若sum(pins)/sum(reloads)1, 则需调整初始化参数 shared_pool_size来重新调整分配给共享池的内存量。 \x0d\x0a1.2.2、数据字典缓冲区的调整 \x0d\x0a数据字典缓冲区包含了有关数据库的结构、用户、实体信息。数据字典的命中率,对系统性能影响极大。数据字典缓冲区的使用情况记录在动态性能表v$librarycache中,可通过查询该表来了解其活动情况,以决定如何调整。 \x0d\x0a \x0d\x0aSelect sum(gets),sum(getmisses) from v$rowcache; \x0d\x0a \x0d\x0aGets列是对相应项请求次数的统计;Getmisses 列是引起缓冲区出错的数据的请求次数。对于频繁访问的数据字典缓冲区,sum(getmisses)/sum(gets)10%~15%。若大于此百分数,则应考虑增加数据字典缓冲区的容量,即需调整初始化参数shared_pool_size来重新调整分配给共享池的内存量。 \x0d\x0a1.2.3、缓冲区高速缓存的调整 \x0d\x0a用户进程所存取的所有数据都是经过缓冲区高速缓存来存取,所以该部分的命中率,对性能至关重要。缓冲区高速缓存的使用情况记录在动态性能表v$sysstat中,可通过查询该表来了解其活动情况,以决定如何调整。 \x0d\x0a \x0d\x0aSelect name,value from v$sysstat where name in ('dbblock gets','consistent gets','physical reads'); \x0d\x0a \x0d\x0adbblock gets和consistent gets的值是请求数据缓冲区中读的总次数。physical reads的值是请求数据时引起从盘中读文件的次数。从缓冲区高速缓存中读的可能性的高低称为缓冲区的命中率,计算公式: \x0d\x0a \x0d\x0aHit Ratio=1-(physical reds/(dbblock gets+consistent gets)) \x0d\x0a \x0d\x0a如果Hit Ratio60%~70%,则应增大db_block_buffers的参数值。db_block_buffers可以调整分配给缓冲区高速缓存的内存量,即db_block_buffers可设置分配缓冲区高速缓存的数据块的个数。缓冲区高速缓存的总字节数=db_block_buffers的值*db_block_size的值。db_block_size 的值表示数据块大小的字节数,可查询 v$parameter 表: \x0d\x0a \x0d\x0aselect name,value from v$parameter where name='db_block_size'; \x0d\x0a \x0d\x0a在修改了上述数据库的初始化参数以后,必须先关闭数据库,在重新启动数据库后才能使新的设置起作用。

怎么修改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://cdxtjz.cn/article/hhpdgi.html

其他资讯