根据自己项目在使用Oracle中的经验,及Oracle参考手册,对于oracle的调优方法一点点的总结.

以后的篇幅会讨论表空间和数据文件的建立对Oracle并发的影响.本文只是讨论SGA和PGA和Spfile中参数的设置.

oracle 的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是SGA(system global area)系统全局区和PGA(process/program global area)程序全局区。对于SGA区域内的内存来说,是共享的全局的,在UNIX 上,必须为oracle 设置共享内存段(可以是一个或者多个),因为oracle 在UNIX上是多进程;而在WINDOWS上oracle是单进程(多个线程),所以不用设置共享内存段。PGA是属于进程(线程)私有的区域。在oracle 使用共享服务器模式下(MTS),PGA中的一部分,也就是UGA会被放入共享内存large_pool_size 中。最好实例在创建时采用专用数据库,而不采用共享数据库,因为给固定的内存Oracle用,也就是说锁存.

查看sga,可以通过oracle的OEM工具(我一般采用这个),或在sqlplus中要以dba 的用户:

select * from v$sga;

中的

Database Buffers 就是指SGA size

SGA的大小

在任何一个生产系统正式投入使用之前,我们不拥有任何系统运行信息让我们去调整,这样就只有两种可能,一是根据文档推荐设置,另外一种就是根据经验设置。相对来说,根据经验的设置比根据文档的设置要可靠一些。

在设置参数之前呢,我们首先要问自己几个问题

一:物理内存多大

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

三:有多少并发连接

四:应用是OLTP(TP查询) 类型还是OLAP(数据仓库) 类型

根据这几个问题的答案,我们可以粗略地为系统估计一下内存设置。

有一个公式是必须是死的: SGA+PGA+系统使用内存+其它应用程序内存<=物理内存

一般作法,SGA是剩余可能内存的0.7倍,要SGA中的高速缓存是SGA中的0.7以上,共享池是一个SQL的解析池,一般不需要太大,再复杂的SQL也不会很大的.3G的SGA的话,500MB以下.其它那些都是20MB以下就行了.实际上如果就算SGA 设置的比较大也不会导致错误,而是可能出现频繁的内存页的换入与换出(page in/out)。在操作系统一级如果观察到这个现象,那么我们就需要调整内存的设置(原来我也遇到这种情况)。

PGA的查看:

show parameters sga_max_size

这个是程序全局区,是每个进程所占的最大内存,在专用数据库才有用.

对于OLTP系统

PGA_AGGREGATE_TARGET  = (* 80%) * 20%

对于(OLAP)DSS系统

PGA_AGGREGATE_TARGET  = (* 80%) * 50%

总之合理调好PGA和SGA是调优的关键.

Spfile的参数:

在对Oracle数据库进行优化时,需要用到许多的参数,其中有一部分参数对系统性能影响较大,这部分参数叫可变参数。可变参数按其作用可以分为两大类,一大类是起限制作用的,如OPEN_LINKS;另一大类是影响系统性能的,如DB_BLOCK_BUFFERS。

在进行数据库系统性能优化时,需要熟练掌握和了解一些可变参数。本文讨论了一些对系统性能有较大影响的参数。

(1)DML_LOCKS

该参数表明多少个用户,可同时能修改多少张表。例如:有三个用户同时修改二张表,则要求表上的总数为6。若置为0,则组织队列不起作用,其性能会稍有提高。使用该参数时不能用DROP TABLE、CREATEINDEX显式封锁。

(2)LICENSE_MAX_SESSION

该参数指出允许并发用户会话的最大数。若此参数为0,则不能实施并发。若并发的用户会话数已达到此极限,则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。

(3)LICENSE_MAX_USERS

该参数指出在一个数据库上可建立的最大用户数。当达到最大值时,便不能再建新用户,可改变此值以放松限制。在LICENSE_MAX_SESSION或LICENSE_MAX_USER为0时,则并发会话或任何用户都不能用。若对不同的实例,此参数不同时,则以第一个登录的数据库实例的参数为准。

(4)OPEN_CURSORS

该参数指明一个用户进程能同时打开光标的最大数,它能限制每个用户进程占用的内存空间量。

(5)OPEN_LINKS

该参数指定并发连接到远程数据库的最大用户进程数。若同时引用多个数据库,则应该增大该值。例如:同时交替访问A、B和C三个数据库时,若OPEN_LINKS设置为2,则需花费等待连接时间。此参数只用于分布事务。若该参数设置为0,则不允许进行分布事务处理。

(6)PROCESS

该参数指定同时连接到Oracle服务器上的最大用户进程数。该参数值包括6个后台进程和一个登录,因此,该参数值为20,则只能有13或14个并发用户连接到服务器。

(7)ROW_LOCKING

该参数指定行封锁方式。若设置为“ALWAYS”,则在修改表时只实施行封锁。若设置为“INTENT”时,则行封锁只适用于SELECT FOR UPDATE,而在修改时实施表封锁。

影响系统性能类可变参数

(1)CHECKPOINT_PROCESS

该参数根据是否要求检查点而设置成TRUE或者FALSE。当所有缓冲区的信息写到磁盘时,检查点进程(CHPT)建立一个静态的点。在归档日志文件中做一个记号表示有一个检查点发生。检查点发生在归档日志转换的时候或当达到log_checkpoint_interval定义的块数的时候。当设置此参数为TRUE时,后台进程CHPT便可工作。在检查点期间内,若日志写进程(LGWR)的性能减低,则可用CHPT进程加以改善。

(2)DB_BLOCK_CHECKPOINT_BATCH

该参数的值设置得较大时,可加速检查点的完成。当指定的值比参数DB_BLOCK_CHECKPOINT_BATCH大时,其效果和指定最大值相同。

(3)DB_BLOCK_BUFFERS

该参数是在SGA中可作缓冲用的数据库块数。该参数决定SGA的大小,对数据库性能具有决定性因素。若取较大的值,则可减少I/O次数,但要求内存空间较大。每个缓冲区的大小由参数DB_BLOCK_SIZE决定。

(4)DB_BLOCK_SIZE

该参数表示Oracle数据库块的大小,以字节为单位,典型值为2048或4096。该值一旦设定则不能改变。它影响表及索引的FREELISTS参数的最大值。

(5)DB_FILES

该参数为数据库运行时可打开的数据文件最大数目。

(6)DB_FILE_MULTIBLOCK_READ_COUNT

该参数表示在顺序扫描时一次I/O操作可读的最大块数,该最大块数取决于操作系统,其值在4至16或者32是比较好。

(7)D1SCRETE_TRANSACTION_ENABLED

该参数实现一个更简单、更快的回滚机制,以改进某些事务类型的性能。当设置为TRUE时,可改善某些类型的事务性能。

(8)LOG_ARCHIVE_BUFFER_SIZE

此参数的值依赖于操作系统,它与LOG_ARCHIVE_BUFFER 参数一起用于调整有归档日志的运行,使其运行速度尽量加快,但不能快到降低性能。仅当直接归档到磁带设备时才需要增加这些参数的值,重做日志缓冲区要等待归档日志缓冲区变得可用。

Spfile的其它各参数的意义,在这里就不再具体讲述,可以通过OEM软件下面每个参数的说明.以上的参数说明,我也是参照它的说明改进.

2006-04-25 00:47 于北京通州

oracle性能调优总结,Oracle的调优方法总结相关推荐

  1. 【性能调优】Oracle AWR报告指标全解析

    [性能调优]Oracle AWR报告指标全解析 啥是AWR? ===================================================================== ...

  2. 通过案例学调优之--Oracle Cluster Table

    通过案例学调优之--Oracle Cluster Table About Clusters A cluster provides an optional method of storing table ...

  3. oracle dbfile数,通过案例学调优之--Oracle参数(db_file_multiblock_read_count)

    通过案例学调优之--Oracle参数(db_file_multiblock_read_count) 应用环境: 操作系统: RedHat EL55 Oracle:   Oracle 10gR2 Ora ...

  4. oracle 全文索引 优化,通过案例学调优之--Oracle 全文索引

    通过案例学调优之--Oracle 全文索引 全文检索(oracle text) Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text 是 Or ...

  5. oracle正确使用索引,通过案例学调优之--Oracle中null使用索引

    通过案例学调优之--Oracle中null使用索引 默认情况下,Oracle数据库,null在Index上是不被存储的,当在索引列以"is null"的方式访问时,无法使用索引:本 ...

  6. jvm原理及性能调优系列(jvm调优)

    jvm原理及性能调优系列(jvm调优) JVM设置: 1.设置合适的最大堆内存(新生代和老生代的最大和值)和最小堆内存(jvm启动时占用的操作系统内存大小),及设置好堆的比例分配. 2.设置合适的新生 ...

  7. linux磁盘io调优,Linux系统管理和调优(内存、CPU、磁盘IO、网络)

    系统管理 Author:Rich七哥 查看 CPU 负载相关工具,找出系统中使用 CPU 最多的进程 查看 Memory 运行状态相关工具,找出系统中使用内存最多的进程 查看 IO 运行状态相关工具, ...

  8. oracle下k M G,【性能调优】Oracle AWR报告指标全解析(2)

    7-1 Checkpoint Activity 检查点与 Instance Recovery Stats 实例恢复 Checkpoint Activity Snaps: 70719-70723 -&g ...

  9. oracle性能调优书,Oracle性能调优领域的百科全书

    如果你想学习一种先进的系统化的Oracle性能调优方法,想找到一本包含设计.SQL优化.争用.内存与IO的完整的性能指南,想既关注基础知识也关注高级技巧,且其内容涵盖Oracle 10g.11g以及1 ...

  10. oracle性能调优之--Oracle 10g AWR ASH 配置

    一.ASH和AWR的故事 1.1 关于ASH 我们都知道,用户在ORACLE数据库中执行操作时,必然要创建相应的连接和会话,其中,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图 ...

最新文章

  1. 第三章GIT使用入门
  2. 『Python Web框架之Django』第几节: AJAX
  3. 小冰超级自然语音技术发布!PK真人真假难辨,同时获独角兽轮融资
  4. sklearn 随机分割数据_sklearn.ensemble.RandomForestClassifier 随机深林参数详解
  5. javase基础socket编程之局域网聊天,局域网文件共享
  6. PAT甲级1120 Friend Numbers:[C++题解]set去重且有序
  7. 饿了么口碑活跃用户增长近美团3倍,2020年行业竞争局势将扭转?
  8. 最新发布丨游戏市场“超预期”增长背景下,如何加速产品精品化 运营精细化?
  9. 方欣科技算法面试:蛇形矩阵2
  10. Java关于周跨年的周数计算
  11. 如何将sql server数据库转化成sqlite数据库
  12. 还在看那些老掉牙的性能优化文章么?这些最新性能指标了解下
  13. 7.1.8860.142
  14. Golang标准库RPC实践及改进
  15. hdu---2087---剪花布条
  16. php fseek函数,在php中fseek函数起什么作用呢?
  17. android源码百度网盘下载(AOSP源码集合)
  18. greensock下载_面向初学者的GreenSock(第2部分):GSAP的时间表
  19. 解决VMware虚拟机中Ubuntu 22.04无法联网, 安装VMwareTools失败,未发现软件包open-vm-dkms,open-vm-tools问题解决
  20. 4本图神经网络中文书籍的比较

热门文章

  1. array.some()用法
  2. 成都榆熙:转化率的定义是什么?如何提升?
  3. sqlmap使用教程(sqli-labs11-20)
  4. jupyter中ipython的基本使用方法,帮助你更快速高效的学习
  5. vue如何请求后端数据
  6. 【NOIP初赛】 计算机人物总结
  7. selenium自动化测试简单准备
  8. 融资租赁资产管理系统(FLAS)项目运维经验记录总结--org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
  9. 计算机基础:公司usb被禁用了该怎么恢复使用
  10. 想要学习区块链编程,该掌握哪些计算机语言?