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 内存参数调优设置相关推荐
- oracle内存参数越大越好吗,什么是Oracle内存参数调优技术?
在实际的工作中灵活应用 , 使 oracle 的内存性能达到最优配置,提升应用程序反应速度,并进行合理的内存使用 . 实例结构 oracle 实例 = 内存结构 + 进程结构 oracle 实例启动的 ...
- jvm详解、GC、堆内存参数调优
一些常见面试题: JVM的位置(运行在操作系统上,与硬件没有直接的交互) 一.jvm体系结构(记住背下来) 运行时数据区:有亮色的有灰色的,灰色的就是占得内存非常小,几乎不存在GC垃圾回收,并且线程独 ...
- PostgreSQL 内存参数调优
本文讨论PostgreSQL中一些管理内存参数,并对每个参数提供参考值建议. 1. 概述 GUC: Grand Unified Configuration 是postgreSQL对数据库参数进行管理的 ...
- JVM参数调优-设置堆、新生代、老年代、持久代大小
一.根据程序的运行状况查看其活跃的数据量 ①.活跃的数据: 1.应用程序运行于稳定状态时,老年代占用的java堆大小 2.应用程序运行于稳定状态时,永久代占用的java堆大小 其实就是FullGc后这 ...
- spark重要参数调优建议:spark.default.parallelism设置每个stage默认的task数量
spark.default.parallelism 参数说明:该参数用于设置每个stage的默认task数量.这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能. 参数调优建议:Spar ...
- Spark调优:提交job资源参数调优及内存模型调优
[场景] Spark提交作业job的时候要指定该job可以使用的CPU.内存等资源参数,生产环境中,任务资源分配不足会导致该job执行中断.失败等问题,所以对Spark的job资源参数分配调优非常重要 ...
- Java架构学习(十二)java内存结构新生代老年代JVM参数调优堆内存参数配置解决堆栈溢出
JVM参数调优与垃圾回收机制 一.java内存结构 Java内存模型:是多线程里面的,jmm与线程可见性有关 Java内存结构:是JVM虚拟机存储空间. Java内存结构图 Java内存机构分为:方法 ...
- python代码设置超参数_超参数调优总结,贝叶斯优化Python代码示例
本文介绍超参数(hyperparameter)的调优方法. 神经网络模型的参数可以分为两类,模型参数,在训练中通过梯度下降算法更新: 超参数,在训练中一般是固定数值或者以预设规则变化,比如批大小(ba ...
- Java面试之JVM参数调优
JVM参数调优 前言 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值 使用jps和jinfo进行查看 -Xms:初始堆空间 -Xmx:堆最大值 -Xss:栈空间 -Xms 和 -Xm ...
最新文章
- 网络推广外包没有效果?很可能是在网络推广外包基础上出现问题!
- 如何在Eclipse和Android Studio中导入library project
- boost::geometry::index::detail::segment_intersection用法的测试程序
- python 语音识别机器人控制系统_python人脸识别+语音识别 的监控系统
- Bullmind-在线UML软件工具箱
- Linux文件系统之df
- [Codeforces673A]Bear and Game(水题,思路)
- 秘籍分享:如何将负载均衡按量付费实例转换为包年包月实例
- 信恒支付源码-第四方支付源码
- 朴素贝叶斯分类器(Naive Bayes Classifiers)
- Mac上搭建Go语言环境及第一个hello.go程序
- WCF-006:服务端类的封装问题
- [实践项目]Udacity self-driving-car-sim
- 浙江大学公开课《王阳明心学》
- 03筑基期——循环、嵌套循环、循环跳转、随机数(算法基础又篇)
- 最新鸽哒IM即时通讯系统源码+带安装教程
- 生成的包含卫兵:一次替代实用主义
- 【pytorch】BN层计算
- ccs C语言编译器,CCS C 编译器手册2010.pdf
- Linux概述及软件安装与使用
热门文章
- 【深度解析→博文总结】李宏毅机器学习2023作业02Classification(Framewise Phoneme Prediction)
- 巴基斯坦签证办理攻略及流程 材料分析 巴基斯坦签证如何办理
- 032、ST硬盘 各型号数字代表的意思
- 小白入门微服务(4) - 服务注册与服务发现
- MGSSLMotif-based Graph Self-Supervised Learning for Molecular Property Prediction|分子性质预测|GNN|自监督|预训练
- linux下的几个开源软件
- 研发为剑,优声云立志做更好用的外卖打印机
- 【万圣狂欢夜】“状”神弄鬼,一起“妖”约
- java集成腾讯云COS
- “Z世代”成网恋一代?探探数据:四成受访者用社交软件谈过恋爱