精华内容
下载资源
问答
  • ORACLE参数调优方案

    2011-06-30 00:00:35
    ORACLE参数调优方案ORACLE参数调优方案ORACLE参数调优方案
  • Oracle参数调优

    2010-05-25 13:23:00
    这样的话到oracle后台跟踪出来的都是写参数变量名称,但执行效率提高不少.  2)另外还有种办法就是修改oracle的session表中的cursor_sharing参数,默认为 EXACT,改为FORCE,这样以后所有where后面带条件的参数都被...

    1)在delphi中,经常有人写SQL并传入到数据库中执行,一般都是把sql拼出来,如下:

    但是从oracle数据库角度考虑,这样会影响执行效率.应该把sql的参数通过绑定方式实现,如下:

    这样的话到oracle后台跟踪出来的都是写参数变量名称,但执行效率提高不少. 

    2)另外还有种办法就是修改oracle的session表中的cursor_sharing参数,默认为EXACT,改为FORCE,这样以后所有where后面带条件的参数都被转化为参数变量,提高数据库执行效率.但是改完之后应用程序中的select max(beginday) from *** 后面不带group by语句就会出现异常

    alter session set cursor_sharing=FORCE

    展开全文
  • aix,oracle参数调优

    2015-10-19 18:55:42
    aix操作系统下oracle数据库的性能参数调优
  • 升级到11gR2之后oracle数据库升级助手(DBUA)配置工具包括一个自动扩展系统文件的命令选项,能够从oracle express(XE或免费版)升级到其他版本。升级前脚本检查以下各项:1.无效用户或角色2.无效数据类型或对象3.不...

    一.升级到11gR2之后

    oracle数据库升级助手(DBUA)配置工具包括一个自动扩展系统文件的命令选项,能够从oracle express(XE或免费版)升级到其他版本。

    升级前脚本检查以下各项:

    1.无效用户或角色

    2.无效数据类型或对象

    3.不支持的字符集

    4.统计信息的收集

    5.足够的资源(undo/rollback段,表空间和空闲磁盘空间)

    6.缺失的升级需要的脚本

    7.运行的监听器

    8.oracle数据库软件已连接到database vault选件

    如果在安装过程中指定ORACLE_BASE环境变量,oracle将使用此值设置DIAGNOSTIC_DEST参数,其中包括所有的ADR目录。

    1.11g新特性

    默认安装完,密码是区分大小写的

    SEC_CASE_SENSITIVE_LOGON  默认是true 大小写敏感

    SEC_MAX_FAILED_LOGIN_ATTEMPTS 默认值是10 设定尝试次数。

    alter user username account unlock;

    2.oracle的重要参数

    MEMORY_TARGET

    MEMORY_MAX_TARGET

    SGA_TARGET

    SGA_MAX_SIZE

    PAG_AGGREGATE_TARGET

    DB_CACHE_SIZE

    SHARED_POOL_SIZE

    默认读取参数文件的顺序

    1.spfile.ora

    2.spfile.ora

    3.init.ora

    如果使用alter system命令只修改spfile,而且在启动的时候发现设置错误,数据库将不会启动。这时,不能使用alter system命令去解决这个问题,需要根据spfile创建一个pfile,修改这个pfile,然后使用这个pfile来启动数据库。之后需要再创建spfile然后使用spfile重启数据库。

    在V$PARAMETER视图里有两个关键的字段(V$PARAMETER显示会话级别有效的参数,V$SYSTEM_PARAMETER显示在整个实例级别有效的参数):

    ISSES_MODIFIABLE:表明拥有alter session权限的用户是否可以在他们的会话级别修改这个初始化参数

    ISSYS_MODIFIABLE:表明拥有ALTER SYSTEM权限的用户是否可以修改这个参数。

    select name,value,isdefault,isses_modifiable,issys_modifiable from V$PARAMETER where issys_modifiable <> 'FALSE' or  isses_modifiable <> 'FALSE' order by name;

    alter session set sort_area_size=10000000;

    动态地修改初始化参数对开发人员和DBA来说是非常强大的特性。因此,如果不做限制的话,拥有alter session 特权的用户就可以随意地为某个会话的sort_area_size 分配大于100M的内存。

    3.优化DB_CACHE_SIZE来提高性能

    oracle 10g DB_BLOCK_BUFFERS变为隐含参数,在11g又被启用,默认为0,意思是除非设置它,否则它不会被使用(用DB_CACHE_SIZE取而代之)。

    DB_CACHE_SIZE是为主数据库缓存或存放数据而初始分配的内存量。如果设置了MEMORY_TARGET或SGA_TARGET,那么该参数就无须设置。我们的目标应该是实现一个驻留在内存的数据库,至少要把所有将被查询的数据都放进内存里。

    如果DB_CACHE_SIZE设置太低,不论怎样优化这个系统,oracle也没有足够的内存来有效的执行操作,系统运行状态也会很糟糕。如果设置过高,您的系统可能会使用交换空间,甚至停机。DB_CACHE_SIZE是SGA的一部分,用于存储和处理数据以及查询访问。设置过低,那么最近使用的数据会从内存中清除出去,如果有另外一个查询重新调用这些被清除的数据,就必须重新从磁盘中读取(将会使用到I/O和CPU资源).

    MEMORY_TARGET,SGA_TARGET(如果使用的话)和DB_CACHE_SIZE(如果设置了最小值) 是用来优化数据缓存命中率的关键参数:命中率就是指那些不用从磁盘上执行物理读操作就可以访问到的数据块的比例。

    如果系统负载情况不变,而缓存命中率剧烈变化,就应该立刻调查发生的原因。糟糕的连接和索引也会由于读取许多索引块而产生非常高的命中率,因此一定要保证命中率不是因为这些因素而提高的,而是因为系统经过良好调优而得到的。异常高的命中率通常也暗示有代码用到了糟糕的索引或连接。

    通过比较随时间变化的命中率,可以帮助您注意系统某天发生的重大改变。

    4.使用V$DB_CACHE_ADVICE优化DB_CACHE_SIZE

    可以利用如下清单查看修改DB_CACHE_SIZE后对数据缓存命中率的影响

    select name,size_for_estimate,size_factor,estd_pyhsical_read_factor from v$db_cache_advice;

    NAME            size_for_estimate           size_factor          estd_pyhsical_read_factor

    DEFAULT4.16671.8322

    DEFAULT8.33331.0169

    DEFAULT12.51.0085

    DEFAULT16.66671

    DEFAULT20.83331

    DEFAULT2411

    当前的缓存大小为24M size_factor=1

    我们可以吧缓存大小减小为16M 并维持当前的缓存命中率,因为SGA减小到16M时,PHYSICAL_READ_FACTOR仍为1

    保持数据缓存命中率超过95%

    有些例子中,将命中率从95%增大到98%,就可以显著得提高性能--特别是最后命中在磁盘的那5%是系统的主要延迟,或者说磁盘的缓存已经不够用了。

    5.监控V$SQLAREA视图以查找较慢的查询

    尽管低于95%的命中率通常都表明DB_CACHE_SIZE被设置得过低。命中率失真和那些非DB_CACHE_SIZE问题包括:

    1.递归调用

    2.缺少索引或抑制索引

    3.内存中驻留的数据

    4.UNDO/回滚段

    5.数倍的逻辑读

    6.导致系统使用CPU的物理读

    通过监控V$SQLAREA视图或企业管理器可以找到较慢的查询。

    6.设定DB_BLOCK_SIZE来反映数据读的大小

    如果系统中事务处理的吞吐量非常高或者系统内存有限,或许可以考虑把块大小设置为小于8K

    可以把DB_BLOCK_SIZE增大到8K或者16K  或者把DB_FILE_MULTIBLOCK_READ_COUNT的值设定为(最大IO大小)DB_BLOCK_SIZE.这样可以增大每次IO读到内存中的数据量。

    如果由于DB_FILE_MULTIBLOCK_READ_COUNT造成很多全表扫描(因为优化器确定执行全表扫描更快,所以决定更多地使用),那么把OPTIMIZER_INDEX_COST_ADJ设定于在1~10之间,这样可以强制索引使用的更频繁。

    如果增大DB_BLOCK_SIZE,就必须重新创建数据库,增大DB_FILE_MULTIBLOCK_READ_COUNT可以允许在一次IO里读取更多块,这样可以带来和增大块大小一样的好处。

    7.把SGA_MAX_SIZE设置为主内存大小的25%到50%

    如果使用SGA_MAX_SIZE参数,一般经验是一开始将主内存的20%至25%分配给它。

    如果SGA_MAX_SIZE<1G  那么_KSM_GRANULE_SIZE的值是4M

    如果1

    如果SGA_MAX_SIZE设置为2000M 将DB_CACHE_SIZE设置为9M,那么DB_CACHE_SIZE被四舍五入至16M(因为粒度是16M)

    8.优化Shared_pool_size以获取最佳性能

    oracle使用最近最少使用算法(LRU)

    使用结果集缓存,需要设置RESULT_CACHE_SIZE= 和 RESULT_CACHE_MODE=FORCE参数(设置为FORCE以自动使用这个特性)。

    为了确保最佳的利用共享SQL区域,请尽量使用存储过程,因为被解析的SQL每次都完全相同,因此可以将其共享。

    SQL的编写必须完全一样,这样才能被重用。

    PL/SQL把每条语句都转换成大写,然后整理了空格或换行符。

    如果设定CURSOR_SHARING=FORCE 针对V$SQLAREA的查询结果将会改变,这是因为oracle可以在内部构建前面所有语句共享的语句。现在共享语句只包含一条所有用户共享的简单语句。

    设置足够大的shared_pool_size以保证充分利用db_cache_size

    保证数据字典命中率高于95%

    select ((1-(sum(getmisses))/ (sum(gets) + sum(getmisses))))*100) "hit rats" from v$rowcache where gets+ getmisses <> 0;

    可以对V$ROWCACHE视图使用修改后的查询,以查看这些参数如何组成数据字典缓存,也称为行缓存

    select parameter,gets,getmisses,modifications,flushes,(getmisses/decode(gets,0,1,gets)) getmiss_ratio,(case when (getmisses/decode(gets,0,1,gets)) > .1 then '*' else ' ' end) " " from v$rowcache where gets + getmisses <> 0;

    保证库缓存的重载率为0,并使命中率在95%以上,如果重载率超过1%,可能就应该增大参数shared_pool_size;

    有两种方法可以监控库缓存:

    1.生成STATSPACK报告

    2.使用V$LIBRARYCACHE

    使库缓存的PIN命中率接近100%

    数据字典缓存的丢失率应该少于10%~15%

    oracle通过SHARED_POOL_RESERVED_SIZE参数为紧急操作保留了空间,V$SGASTAT视图显示了共享池内存的消耗速度。

    使用X$KSMSP表来查看共享池里的详细情况。

    展开全文
  • 最近,Hp平台oracle9208跑大量数据转换业务时大量出现buffer busy global CR,latch free(132),enqueue,log buffer space等待事件,针对上面的几类分别,我们分别进行...

    最近,Hp平台oracle9208跑大量数据转换业务时大量出现buffer busy global CR,latch free(132),enqueue,log buffer space等待事件,针对上面的几类分别,我们分别进行了跟踪及优化:

    1:针对buffer busy global CR,经观察是大量的select * obj$等系统表造成的,结合业务类型,初步判断是由于insert过程中申请extend 造成的,根本原因是因为我们目前的tablespace采用的是local方式管理,且uniform. size 为4M,这样dba_extends 会很大。

    2:针对latch free (dml lock allocation),我们分别关闭了parallel,上调了dml_lock,打开了hpux_sched_noage;

    3:针对enqueue,调整了enque_resources(9245->80000);

    4:针对log buffer space,调整了log_buffer(30M--&gt50M);

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13132547/viewspace-269153/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/13132547/viewspace-269153/

    展开全文
  • Oracle 性能 调优

    2013-09-24 15:57:36
    Oracle性能调优,内存参数调优技术详解。值得一看哦。
  • Oracle内存参数调优技术详解 oracle实例=内存结构+进程结构
  • Oracle性能调优

    2013-09-24 15:56:15
    Oracle 性能 调优,值得一看哦 sql 调优等常用参数
  • Oracle12C调优

    2019-04-23 11:56:24
    Oracle12c性能调优调优前后速度,以及一些问题解决。
  • Oracle数据库内存参数调优.pdf
  • Oracle性能调优原则 任何事情都有它的源头,要解决问题,也得从源头开始,影响ORACLE性能的源头非常多,主要包括如下方面:数据库的硬件配置:CPU、内存、网络条件。  1. CPU:在任何机器中CPU的数据处理能力往往是...
    Oracle性能调优原则 
    
    任何事情都有它的源头,要解决问题,也得从源头开始,影响ORACLE性能的源头非常多,主要包括如下方面:数据库的硬件配置:CPU、内存、网络条件。

      1. CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,并且ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求就更高了,如果运行队列数目超过了CPU处理的数目,性能就会下降,我们要解决的问题就是要适当增加CPU的数量了,当然我们还可以将需要许多资源的进程KILL掉;

      2. 内存:衡量机器性能的另外一个指标就是内存的多少了,在ORACLE中内存和我们在建数据库中的交换区进行数据的交换,读数据时,磁盘I/O必须等待物理I/O操作完成,在出现ORACLE的内存瓶颈时,我们第一个要考虑的是增加内存,由于I/O的响应时间是影响ORACLE性能的主要参数,我将在这方面进行详细的讲解

      3. 网络条件:NET*SQL负责数据在网络上的来往,大量的SQL会令网络速度变慢。比如10M的网卡和100的网卡就对NET*SQL有非常明显的影响,还有交换机、集线器等等网络设备的性能对网络的影响很明显,建议在任何网络中不要试图用3个集线器来将网段互联。

      OS参数的设置

      下表给出了OS的参数设置及说明,DBA可以根据实际需要对这些参数进行设置

      内核参数名

      说明

      bufpages

      对buffer空间不按静态分配,采用动态分配,使bufpages值随nbuf一起对buffer空间进行动态分配。

      create_fastlinks

      对HFS文件系统允许快速符号链接

      dbc_max_pct

      加大最大动态buffer空间所占物理内存的百分比,以满足应用系统的读写命中率的需要。

      dbc_min_pct

      设置最小动态buffer空间所占物理内存的百分比

      desfree

      提高开始交换操作的最低空闲内存下限,保障系统的稳定性,防止出现不可预见的系统崩溃(Crash)。

      fs_async

      允许进行磁盘异步操作,提高CPU和磁盘的利用率

      lotsfree

      提高系统解除换页操作的空闲内存的上限值,保证应用程序有足够的可用内存空间。

      maxdsiz

      针对系统数据量大的特点,加大最大数据段的大小,保证应用的需要。(32位)

      maxdsiz_64bit

      maximum process data segment size for 64_bit

      Maxssiz

      加大最大堆栈段的大小。(32_bit)

      maxssiz_64bit

      加大最大堆栈段的大小。(64_bit)

      Maxtsiz

      提高最大代码段大小,满足应用要求

      maxtsiz_64bit

      原值过大,应调小

      Minfree

      提高停止交换操作的自由内存的上限

      Shmem

      允许进行内存共享,以提高内存的利用率

      Shmmax

      设置最大共享内存段的大小,完全满足目前的需要

      Timeslice

      由于系统的瓶颈主要反映在磁盘I/O上,因此 降低时间片的大小,一方面可避免因磁盘I/O不畅造成CPU的等待,从而提高了CPU的综合利用率。另一方面减少了进程的阻塞量。

      unlockable_mem

      提高了不可锁内存的大小,使可用于换页和交换的内存空间扩大,用以满足系统对内存管理的要求。
    用户SQL质量
    以上讲的都是硬件方面的东西,在条件有限的条件下,我们可以调整应用程序的SQL质量:

      1. 不要进行全表扫描(Full Table Scan):全表扫描导致大量的I/O

      2. 尽量建好和使用好索引:建索引也是有讲究的,在建索引时,也不是索引越多越好,当一个表的索引达到4个以上时,ORACLE的性能可能还是改善不了,因为OLTP系统每表超过5个索引即会降低性能,而且在一个sql 中, Oracle 从不能使用超过 5个索引;当我们用到GROUP BY和ORDER BY时,ORACLE就会自动对数据进行排序,而ORACLE在INIT.ORA中决定了sort_area_size区的大小,当排序不能在我们给定的排序区完成时,ORACLE就会在磁盘中进行排序,也就是我们讲的临时表空间中排序, 过多的磁盘排序将会令 free buffer waits 的值变高,而这个区间并不只是用于排序的,对于开发人员我提出如下忠告:

      1)、select,update,delete 语句中的子查询应当有规律地查找少于20%的表行.如果一个语句查找的行数超过总行数的20%,它将不能通过使用索引获得性能上的提高.

      2)、索引可能产生碎片,因为记录从表中删除时,相应也从表的索引中删除.表释放的空间可以再用,而索引释放的空间却不能再用.频繁进行删除操作的被索引的表,应当阶段性地重建索引,以避免在索引中造成空间碎片,影响性能.在许可的条件下,也可以阶段性地truncate表,truncate命令删除表中所有记录,也删除索引碎片.

      3)、在使用索引时一定要按索引对应字段的顺序进行引用。

      4)、用(+)比用NOT IN更有效率。

      降低ORACLE的竞争:

      先讲几个ORACLE的几个参数,这几个参数关系到ORACLE的竞争:

      1)、freelists 和 freelist 组:他们负责ORACLE的处理表和索引的空间管理;

      2)、pctfree 及 pctused:该参数决定了freelists 和 freelist 组的行为,pctfree 和pctused 参数的唯一目的就是为了控制块如何在 freelists 中进出

      设置好pctfree 及 pctused对块在freelists的移走和读取很重要。

      其他参数的设置

      1)、包括SGA区(系统全局区):系统全局区(SGA)是一个分配给Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段。

      主要包括数据库高速缓存(the database buffer cache),

      重演日志缓存(the redo log buffer),

      共享池(the shared pool),

      数据字典缓存(the data dictionary cache)以及其它各方面的信息

      2)、db_block_buffers(数据高速缓冲区)访问过的数据都放在这一片内存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。

      3)、share_pool_size (SQL共享缓冲池):该参数是库高速缓存和数据字典的高速缓存。

      4)、Log_buffer (重演日志缓冲区)

      5)、sort_area_size(排序区)

      6)、processes (同时连接的进程数)

      7)、db_block_size (数据库块大小):Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。

      8)、open_links (同时打开的链接数)

      9)、dml_locks

      10)、open_cursors (打开光标数)

      11)、dbwr_io_slaves (后台写进程数)
    展开全文
  • Oracle 数据库系统中起到调节... 1 主要系统参数调优介绍    2 系统内存参数的分配  2.1 Oracle 实例= 内存结构 + 进程结构  内存结构 = SGA + PGA  SGA(系统全局区): 用户存储数据库信息的内存区...
  • 初级oracle数据库调优

    2012-11-01 14:51:53
    很适合初级oracle数据库调优的一些参数
  • oracle系统参数调优.doc

    2013-08-06 10:36:08
    oracle系统参数的理解,由个人工作及网上资料总结,并未全部验证,仅供参考.欢迎交流讨论。
  • 文档涉及到Oracle数据库内存参数调优
  • Oracle 系统 调优

    2013-05-09 02:53:27
    Oracle 10G RAC 系统 调优和操作系统内核调整
  • Oracle内存参数调优技术详解 前言 近来公司技术,研发都在问我关于内存参数如何设置可以优化oracle的性能,所以抽时间整理了这篇文档,以做参考. 目的 希望通过整理此文档,使公司同事对oracle内存结构有一个全面的...
  • oracle IO调优

    2014-12-30 09:17:30
    oracle 磁盘性能问题定位,磁盘瓶颈原因及如何调优
  • Oracle性能调优概述

    千次阅读 2019-03-10 19:52:51
    Oracle 性能调优 概述https://blog.csdn.net/tianlesoftware/article/details/5431982在过去的十年中, Oracle 已经成为世界上最专业的数据库之一。...它有大量的调整参数和技术来改进你的 Oracle 数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,568
精华内容 9,827
关键字:

oracle参数调优