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的值是请求数据缓冲区中读的总次数。physical reads的值是请求数据时引起从盘中读文件的次数。从缓冲区高速缓存中读的可能性的高低称为缓冲区的命中率,计算公式:
Hit Ratio=1-(physical reds/(dbblock gets+consistent gets)) ,
select 1-(phys.value/(cur.value + con.value)) "HIT RATIO"
from v$sysstat cur, v$sysstat con, v$sysstat phys
where cur.name = 'db block gets'
and con.name = 'consistent gets'
and phys.name = 'physical reads';
如果Hit Ratio<60%~70%,则应增大db_block_buffers的参数值。db_block_buffers可以调整分配给缓冲区高速缓存的内存量,即db_block_buffers可设置分配缓冲区高速缓存的数据块的个数。缓冲区高速缓存的总字节数=db_block_buffers的值*db_block_size的值。db_block_size 的值表示数据块大小的字节数,可查询 v$parameter 表:
select name,value
from v$parameter
where name='db_block_size';
在修改了上述数据库的初始化参数以后,必须先关闭数据库,在重新启动数据库后才能使新的设置起作用。
(2)共享池(shared_pool_size)
分配原则:在shared pool中,主要包含两个cache,即Library Cache和Data Dictionary Cache,但是不能对它们进行单独调整,只能通过调整shared_pool_size来进行。
Library Cache用于存放共享SQL语句和PL/SQL语句,采用LRU(Least Recently Used)算法进行管理,Oracle可以用已经cache在其中的SQL语句,而不需要re-parsing,我们可以通过下面的SQL语句来查询Library Cache的命中率(Hit Ratio):
select GETHITRATIO
from v$librarycache
where namespace ='SQL AREA';
如果得到的结果小于90%,那么说明命中率不高,需要增大Library Cache了。
Data Dictionary Cache的调整,数据字典缓冲区包含了有关数据库的结构、用户、实体信息。数据字典的命中率,对系统性能影响极大。数据字典缓冲区的使用情况记录在动态性能表v$librarycache中,可通过查询该表来了解其活动情况,以决定如何调整。
select sum(gets),sum(getmisses)
from v$rowcache;
gets列是对相应项请求次数的统计,getmisses 列是引起缓冲区出错的数据的请求次数。对于频繁访问的数据字典缓冲区,sum(getmisses)/sum(gets)<10%。若大于此百分数,则应考虑增加数据字典缓冲区的容量,即需调整初始化参数shared_pool_size来重新调整分配给共享池的内存量。
(3) 大池(large_pool_size ): 主要用于数据库备份管理器RAM
原则: 根据实际情况
(4) Java池(java_pool_size): 主要用于Java语言开发
原则: 根据实际情况
(5) 日志缓冲区(log_buffers): 存储数据修改信息
原则:根据实际情况
2.3 PGA 程序全局区
PGA包含单个服务器进程或者单个后台进程的数据和控制信息, 与几个进程共享的SGA正好相反,是一个只被一个进程使用的区域,PGA在创建进程时分配终止进程时回收。
(1) sort_area_size 用户排序所占的内存
(2) hash_area_size 用户散列联接, 位图索引
这两个参数在非MTS模式下都是属于PGA,是为每个session单独分配的,在我们的服务器上除了OS + SGA一定要考虑这两部分大小的设置
OS + SGA + 并发执行的进程数*(sort_area_size + hash_area_size) < 0.7 * OS的总物理内存
3 实例配置
(1) 物理内存大小
(2) 操作系统及其他应用程序需要的内存
(3) 数据库系统使用的是文件设备还是裸设备
(4) 有多少并发连接
(5) 应用是OLTP还是OLAP类型
基本分配原则,db_block_buffers尽可能的大, shared_pool_size适度, log_buffer通常几百KB到1M就可以了。
1G内存,1个CPU, db_block_size 为8192B
SGA = 1024 * 0.5 =512 -- 最大一般为OS 内存的一半左右,不超过60%
(1) databse buffer cache:512 * 40% = 205M db_block_buffer应设为:52352(409*1024*1024/8192) -- 一般为sga_max_size的40%
(2) shared_pool_size: 563* 40% = 205M -- 一般为sga_max_size的40%
(3) log_buffer: 128K (128K*CPU个数)
(4) java_pool_size: 4M
(5) large_pool_size: 4M
(6) sort_area_size: 根据实际情况 65K - 2M
(7) sort_area_retained_size: 根据实际情况
Oracle 内存参数调优设置的更多相关文章
- Hbase和Hadoop的内存参数调优 + 前端控制台
1.hadoop的内存配置调优 mapred-site.xml的内存调整 <property> <name>mapreduce.map.memory.mb</name&g ...
- Tomcat项目内存参数调优
一.常见的Java内存溢出有以下三种: 1. Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出 解释说明:JVM在启动的时候会自动设置JV ...
- Tomcat6 一些调优设置内存和连接数
Tomcat6 一些调优设置内存和连接数 博客分类: java TomcatJVMLinux应用服务器网络应用 公司的一个服务器使用Tomcat6默认配置,在后台一阵全点击服务器就报废了,查了一下就 ...
- 【Spark篇】---Spark中内存管理和Shuffle参数调优
一.前述 Spark内存管理 Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等 ...
- 性能测试三十六:内存溢出和JVM常见参数及JVM参数调优
堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java h ...
- Tomcat参数调优包括日志、线程数、内存【转】
[Tomcat中日志打印对性能测试的影响] 一般都提供了这样5个日志级别: ▪ Debug ▪ Info ▪ Warn ▪ Error ▪ Fatal 由于性能测试需要并发进行压力测试,如果日志级别是 ...
- JVM内存结构、参数调优和内存泄露分析
1. JVM内存区域和参数配置 1.1 JVM内存结构 Java堆(Heap) Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都 ...
- JVM内存模型及参数调优
堆.栈.方法区概念区别 1.堆 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.根据垃圾回收机制的不同, Java堆有可能拥有不同的结构,最为常见的就是 ...
- JVM:参数调优
JVM:参数调优 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 前言 查看 JVM 系统默认值:使用 jps 和 jinfo 进行查看 -Xms:初始堆空间 - ...
随机推荐
- Maven将中央仓库修改为阿里云的仓库地址
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexu ...
- 【vue】使用localStorage解决vuex在页面刷新后数据被清除的问题
通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...
- IOS解析XML文件
这里使用NSXMLParser来解析,这个是apple自带的xml解析库,有个參考文章:http://www.raywenderlich.com/553/xml-tutorial-for-ios-ho ...
- Your kernel does not support swap limit capabilities.memory limit without swap
原因是:由于内核不支持限制内存的设置 解决办法是:vim /etc/default/grub 修改为: 或者:GRUB_CMDLINE_LINUX="cgroup_enable=memory ...
- Maven打包相关插件集合
参考:https://www.cnblogs.com/selier/p/9510326.html
- zabbix 应用监控作业笔记 ansible-playbook
目录 目录结构 zabbix-web.yaml zabbix-backup.yaml zabbix-nfs.yaml zabbix-mysql.yaml zabbix-server.yaml zabb ...
- JAVA Exception
博客背景音乐设置 晴天博客(酷)
- WC 2018 题解
WC 2018 题解 一些感受.jpg 题目难度相较前些年会相对简单一点?(FAKE.jpg 平均码量符合WC风格?(甚至更多一点 出题人良心! [WC2018] 通道 一个不知道对不对的$\log ...
- IntentService解析
IntentService中内置了一个HandlerThread,能够对数据进行处理.相比于普通的Service,IntentService有以下优点: 1. 不用在Service创建线程. 2. 不 ...
- Spring Cloud (十四):Spring Cloud 开源软件都有哪些?
学习一门新的技术如果有优秀的开源项目,对初学者的学习将会是事半功倍,通过研究和学习优秀的开源项目,可以快速的了解此技术的相关应用场景和应用示例,参考优秀开源项目会降低将此技术引入到项目中的成本.为此抽 ...