Oracle系统参数调整和优化原则(精)
- 格式:doc
- 大小:38.50 KB
- 文档页数:3
ORACLE优化总结和注意事项本文档中对优化方法进行详述,并对在优化过程中发现的一些问题进行总结。
列出ORACLE的一些注意事项注意事项:1.安装的过程中,请务必进行正确安装。
2.当安装过程中出现错误的时候,最好清除原有遗留信息,进行重装,否则在数据库运行的过程中可能会出现各种诡异的问题。
3.当数据库安装的过程中如果有警告信息,请记录下来,存档,方便排查数据库问题4.安装的过程中请选择OLTP的数据模板Transaction Processing5.安装过程中文件的创建Controlfile、Datafiles、Redo Log Groups如果条件允许,最好分别放于不同的磁盘上。
其中Controlfile和Redo Log Groups要尽量保证放在不同的磁盘上6.其中Redo Log Groups重做日志组最好建5组以上,每个文件大小在1G以上,最大不超过3G,避免出现进行check_point的时候造成buffer wait 导致数据库宕机7.检查/etc/hosts文件配置最后一行信息,将当前的主机名和ip配对起来,避免应用服务连接数据库导致的性能损耗8.安装完成后,请启动数据库确保数据库基本安装成功步骤:sqlplus /nologconnect /as sysdbastartup//启动数据库实例exit//退出sqlpluslsnrctl start//启动监听emctl start dbconsole上述步骤如果执行完,没有报错,则说明数据库基本安装正确,并可正常运行。
如果执行上述操作的时候出现了问题,则说明数据库安装的过程中出现了某些问题,即使数据库实例当前可以启动连接,但是在以后稳定服务的过程中也是有可能会出现一些数据库问题的。
配置OCI连接因为当前应用服务采用OCI连接的方式,因此在运行应用服务之前要配置OCI的连接条件1、需求软件:如果应用服务是跟ORACLE数据库安装在一台机器上,则不需要额外软件,直接进入第2步即可如果应用服务是跟ORACLE数据库分开部署,则需要在部署应用服务的机器上安装一个客户端(精简客户端即可大小几M)需要从官方网站下载三个文件instantclient-basic-linux-x86-64-10.2.0.3-20070103.zipinstantclient-sqlplus-linux-x86-64-10.2.0.3-20070103.zipinstantclient-jdbc-linux-x86-64-10.2.0.3-20070103.zip解压到同一个目录中,同时在该目录下新建一个文件tnsnames.ora文件,文件中添加以下内容# Generated by Oracle configuration tools.HMS =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.15.61)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hms)))注:本文件可以直接从oralce的安装目录中获取,只要修改HOST和服务名,SID号即可文件目录:/export/home/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora 2、配置操作系统变量如果应用服务是跟ORACLE数据库安装在一台机器上,只需要将oracle用户的环境变量信息拷贝到启动应用服务的用户下面即可。
ORACLE 的性能调整与优化分析作者:潘红岩来源:《科学与技术》 2019年第3期摘要:随着科学技术和计算机网络技术的快速发展,加大了信息数据的管理工作和构成的难度和复杂度,为信息的保密性带来严峻挑战,目前应用最为广泛的信息数据管理系统就是Oracle数据库,其稳定性和信息安全性优势显著。
在数据库系统运行时间不断延长的趋势下,其性能出现了各种问题,影响其运行,因此需要对其性能进行调整和优化。
本论文从不同方面阐述Oracle的性能调整与优化分析,希望为研究Oracle数据库的专家和学者提供理论参考依据。
关键词:Oracle;性能调整;优化分析Oracle数据库系统是一个复杂的大型关系型数据库系统。
其性能优化有多种方式,性能因素的影响也是多方面的。
机器性能、操作系统和网络性能这些外界因素也能直接影响到Oracle性能的发挥。
本文主要研究的方向是除了外界因素之外,Oracle本身的优化配置与性能分析。
1Oracle数据库简介1.1Oracle数据库概述Oracle数据库功能相当强大,起源较早,最开始出现的形式是关系型数据库技术,可以实现对数据之间的关系的了解,并通过信息库的构造将这些关系真实的反映出来。
1984年Oracle 数据库实现了桌面计算机与关系数据库的有效结合,随着Oracle数据库的不断发展,其各项功能也不断健全,并提供给企业类的、网络工作组、高可靠性的、产业化的应用可靠的技术支撑,实现对关系数据的高效处理。
1.2Oracle数据库主要特点Oracle数据库的主要特点有支持多用户和大数据的高性能事务处理、硬件环境独立、对完整性和安全性的良好控制,同时Oracle数据库还遵守网络通信协议、数据存取语言等相关的工业标准。
另外Oracle数据库支持分布式数据库和分布处理,拥有可连接性、可兼容性、可移植性的特征。
实现不同型号的计算机和不同操作系统下可以运行Oracle数据库的需求,其自身独有的特点满足了不同用户的不同要求,符合时代发展潮流。
Oracle数据库内存优化操作说明Oracle数据库内存优化是提高数据库性能的重要手段之一。
通过设置合理的内存参数,可以有效地削减IO操作,提高数据访问速度。
本文将介绍一些常见的Oracle数据库内存优化操作。
一、调整PGA参数PGA(Program Global Area)是每个数据库会话独有的内存区域,用于存储排序、哈希操作等临时数据。
调整PGA参数可以提高排序和连接操作的性能。
1. 设置PGA_AGGREGATE_TARGET参数该参数把握PGA内存的总量,一般建议设置为SGA的1/3到1/2。
可以通过以下命令设置:ALTER SYSTEM SET PGA_AGGREGATE_TARGET=XXXM;2. 调整SORT_AREA_SIZE参数该参数把握每个排序操作使用的PGA内存大小,一般建议设置为100MB到200MB。
可以通过以下命令设置:ALTER SESSION SET SORT_AREA_SIZE = XXXM;3. 调整HASH_AREA_SIZE参数第1页/共4页该参数把握每个哈希操作使用的PGA内存大小,一般建议设置为SORT_AREA_SIZE的1/2到1倍。
可以通过以下命令设置:ALTER SESSION SET HASH_AREA_SIZE = XXXM;二、调整SGA参数SGA(System Global Area)是Oracle数据库的全局共享内存区域,用于存储缓存数据、SQL执行方案等。
调整SGA参数可以提高数据访问的速度。
1. 调整SHARED_POOL_SIZE参数该参数把握缓存SQL语句的内存大小,一般建议设置为SGA的1/4到1/3。
可以通过以下命令设置:ALTER SYSTEM SET SHARED_POOL_SIZE=XXXM;2. 调整DB_CACHE_SIZE参数该参数把握数据库缓冲区的内存大小,一般建议设置为SGA的1/2到2/3。
可以通过以下命令设置:ALTER SYSTEM SET DB_CACHE_SIZE=XXXM;3. 调整LOG_BUFFER参数该参数把握数据库日志缓冲区的内存大小,一般建议设置为10MB到100MB。
Oracle数据库优化方案早上刚坐在办公桌前,一杯咖啡还没来得及品尝,大脑就已经开始飞速运转。
十年的方案写作经验告诉我,Oracle数据库优化方案要从哪儿开始着手。
得理清楚思路,把那些纷繁复杂的想法一股脑儿倒出来。
一、需求分析优化数据库,得明白业务需求。
这就像医生看病,不了解病情,怎能对症下药?咱们得先了解业务流程,找出瓶颈所在。
比如,有些业务操作频繁,但数据查询速度慢,这就需要优化查询语句和索引。
二、硬件检查硬件是数据库的基础,就像房子的地基。
如果地基不牢,房子怎能稳固?咱们得检查一下服务器硬件配置,看看CPU、内存、硬盘等是否满足数据库运行需求。
如果硬件不够强大,升级硬件是第一步。
三、数据库参数调整数据库参数就像一个人的基因,决定着数据库的性能。
有些参数可能默认设置并不适合实际业务需求。
这时候,咱们就得调整参数,让数据库发挥出最佳性能。
1.缓存参数缓存是数据库性能的关键。
合理设置缓存大小,可以让数据在内存中快速读取,减少磁盘I/O操作。
比如,SGA、PGA等缓存参数,要根据业务需求和硬件配置进行调整。
2.线程参数线程是数据库的并行处理能力。
合理设置线程数,可以让数据库在多核CPU上发挥出更高的性能。
但线程数也不是越多越好,过多会导致上下文切换频繁,降低性能。
四、索引优化索引是数据库的加速器。
合理的索引可以让查询速度飞快,但过多或不当的索引反而会降低性能。
咱们得对索引进行优化:1.删除无效索引有时候,一些索引长时间没有使用,或者业务逻辑发生变化,这些索引就成了负担。
删除这些无效索引,可以减少数据库维护成本。
2.重建索引随着数据量的增加,索引会逐渐碎片化,影响查询性能。
定期重建索引,可以让索引保持高效。
五、查询优化查询优化是数据库优化的重头戏。
有时候,一个简单的查询语句,就能让数据库性能翻倍。
1.重写查询语句有些查询语句可能过于复杂,导致执行计划不佳。
我们可以通过重写查询语句,简化逻辑,提高查询效率。
千里之行,始于足下。
Oracle数据库内存优化操作说明Oracle数据库的内存优化操作主要包括以下几个方面:1. 调整SGA和PGA的大小:- SGA(System Global Area)是Oracle数据库实例使用的内存区域,包括数据库缓存、共享池等。
可以通过修改SGA_TARGET和SGA_MAX_SIZE等参数来调整SGA的大小。
- PGA(Program Global Area)是每个进程独自使用的内存区域,包括排序区、hash区等。
可以通过修改PGA_AGGREGATE_TARGET参数来调整PGA的大小。
2. 合理配置各个内存区域的大小:- 根据具体的数据库负载情况,可以调整SGA组件的大小,如缓冲区大小、共享池大小等,以提高数据库的性能。
- 合理配置PGA区域的大小,可以减少排序操作的磁盘访问,提高查询效率。
3. 使用自动内存管理 AMM(Automatic Memory Management):- AMM是Oracle 11g及以上版本中提供的内存管理特性,可以自动分配SGA和PGA的大小。
可以通过设置MEMORY_TARGET参数来启用AMM。
4. 使用自动PGA管理:- Oracle 12c及以上版本中提供了自动PGA管理特性,可以根据需要自动调整PGA的大小。
可以通过设置PGA_AGGREGATE_TARGET参数来启用自动PGA管理。
5. 合理配置数据库连接池:第1页/共2页锲而不舍,金石可镂。
- 如果数据库中有大量的并发连接,可以考虑启用连接池来管理连接,减少连接的开销,提高数据库的并发性能。
6. 合理配置数据库缓存:- Oracle数据库中有多个缓存区域,如数据缓存、共享池等,可以根据具体的负载情况,调整缓存的大小,以提高查询性能。
需要注意的是,内存优化操作可能会引起数据库的性能变化,因此在进行内存优化之前,最好先进行充分的测试和评估,以确保优化操作是必要且有效的。
Oracle语句优化53个规则详解1、选用适合的ORACLE优化器ORACLE的优化器共有3种:1)RULE(基于规则)2)COST(基于成本)3)CHOOSE(选择性)设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS。
你当然也可以在SQL句级或是会话(session)级对其进行覆盖。
为了使用基于成本的优化器(CBO,Cost-Based Optimizer),你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性。
如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关。
如果table已经被analyze过,优化器模式将自动成为CBO,反之,数据库将采用RULE形式的优化器。
在缺省情况下,ORACLE采用CHOOSE优化器,为了避免那些不必要的全表扫描(full table scan),你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器。
2、访问Table的方式ORACLE 采用两种访问表中记录的方式:1)全表扫描全表扫描就是顺序地访问表中每条记录。
ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。
2)通过ROWID访问表你可以采用基于ROWID的访问方式情况,提高访问表的效率,ROWID包含了表中记录的物理位置信息,ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。
通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。
3、共享SQL语句为了不重复解析相同的SQL语句,在第一次解析之后,ORACLE将SQL语句存放在内存中。
这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。
Oracle-BCT(Block Change Tracking)参数优化配置Oracle BCT(Block Change Tracking)是一个有用的功能,可以用来优化备份和恢复的时间。
使用BCT会减少备份和恢复所需的I/O操作和时间。
正确配置参数是确保BCT有效运行的关键。
以下是一些优化 Oracle BCT参数配置的建议。
1.开启BCT要启用BCT,必须运行以下命令:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING; 如果BCT已经启用,该命令不会做任何事情。
2.配置BCT文件的位置BCT文件位于数据库的主目录中。
如果要改变BCT文件的位置,可以使用以下命令:ALTER DATABASE BACKUP CONTROLFILE TO'/new/path/to/bct_file';运行此命令将在新的目录结构中创建新的BCT文件。
3.监控BCT的大小默认情况下,BCT文件大小为10MB。
如果备份通常大于10MB,则应增加BCT文件的大小。
可以通过以下命令更改BCT文件的大小:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/path/to/new/bct/file' SIZE 50M;在此示例中,BCT文件的大小将增加到50MB。
4.启用增量备份启用增量备份可以利用BCT功能。
增量备份仅备份已更改的数据块,因此它比完全备份要快。
要启用增量备份,请运行以下命令:CONFIGURE BACKUP OPTIMIZATION ON;如果您想从增量备份中排除某些表,则可以使用以下命令:CONFIGURE BACKUP OPTIMIZATION OFF FOR TABLE schema.table1, schema.table2;5.启用快速恢复区快速恢复区是一个文件系统,可以用来存储备份。
oracle性能调优汇总性能调优---------------------⽅法:⼀、检查⽇志是否有错误⼆、检查参数是否设置正确三、检查系统IO、CPU、内存等利⽤率,查看哪些占⽤较⾼四、检查哪些SQL语句⼤量占⽤IO或CPU权衡性能与安全的⽅⾯:⼀、多个控制⽂件⼆、⼀个⽇志⽂件组中有多个⽇志⽂件三、频繁的执⾏检查点四、备份数据⽂件五、频繁的归档六、块检查七、同时执⾏操作与统计性能调优⼯具:查看ALTER.LOG中的信息:1、⽤/ORA- 能查找⽂件中的错误信息2、要想让ALTER.LOG⽂件中产⽣检查点开始与结束信息,得修改参数LOG_CHECKPOINTS_TO_ALERT,将之修改为TRUE。
默认为FALSE。
SQL>ALTER SYSTEM SET LOG_CHECKPOINTS_TO_ALERT = TRUE SCOPE=BOTH;在⽤户UDUMP⽬录下的⽂件中产⽣监控⽤户执⾏信息:⽅法1、监控⾃⼰的操作。
在⾃⼰的session中设置参数,这样就能在⽤户udump⽬录下⽣成执⾏的SQL语句信息SQL>ALTER SESSION SET SQL_TRACE=TRUE;在pl/sql或者sqlplus中,打开⼀个sql_window。
(1)先运⾏:alter session set sql_trace=true;(2)再运⾏你那个返回结果不正确的SQL(3)再运⾏:alter session set sql_trace=false;(4)马上登陆到机器上,到$ORACLE_BASE/admin/sid/udump⽬录下。
(5)找到刚⽣成的.trc⽂件(假设⽂件名是 xxx.trc),执⾏命令转储跟踪⽂件:tkprof xxx.trc aa.txt。
查看aa.txt⽂件。
这个⽂件⾥⾯有执⾏计划。
看看执⾏计划每⼀步返回的结果集记录数是不是正确。
⽅法2、SYS⽤户监控别的⽤户执⾏情况SQL>ALTER SESSION SET SQL_TRACE=TURE;安装STATSPACK⼀、创建表空间,最少100M⼆、安装在安装时默认创建了⼀个⽤户PERFSTAT,所以密码也可以输⼊这个选择要将快照存放于哪个表空间使⽤STATSPACK⼿动执⾏⽣成⼀次快照,间隔⼀般为10⼏分钟为益,中间不要有停机。
Oracle 系统参数调整和优化原则
(来自时代朝阳数据库技术中心)
粗略来讲,系统调整一般反映在下列方面:
Shared Pool and Library Cache Performance Tuning(共享池和Library Cache):Oracle将SQL语句、存储包、对象信
息和很多其他的项目保存在SGA中一个叫共享池(shared pool)的地方。这个可共享的区域由一个成熟的高速缓
存和堆管理器管理。它有3个基本的问题要克服:
o
内存分配的单元不是个常量。从池中分配的内存单元可能是从几个字节到几千个字节。
o
在用户完成工作时,不是所有的内存都能够释放出来,因为共享池的目标是使信息最大程度的共享。
o
没有一个象其他常规的高速缓存的文件做后备的存储那样磁盘空间供整页的导出。
只有可重新创建的信息可以从Cache中丢弃,在他被再次需要的时候再重新创建。
共享池调整的技巧有:
o
刷( Flush)共享池可以使小块的内存合并为大块的内存。当共享池的碎片过多时,这能够暂时恢复性能。
刷共享池可以使用语句:alter system flush shared_pool;
o
注意执行这个语句将会造成性能的暂时尖峰,因为对象都要重新加载。所以应当在数据库的负载不是很
大的情况下进行。
o
确保联机事务处理( OLTP)应用使用绑定变量 (bind variables). 这一点对于决策支持系统(DSS)并
不重要。
o
确保library cache 的命中率 > 95%
o
增大共享池并不总能解决命中率过多的问题。
Buffer Cache Performance Tuning(数据库缓存调整):数据库缓存保持了从磁盘上读去的数据块的备份。因为缓存通
常受到内存约束的限制,不是磁盘上所有的数据都可以放到缓存里。当缓存满了的时候,后来的缓存不中使得Oracle
将已经在缓存中的数据写到磁盘上。后续的对写到磁盘上的数据的访问还会造成缓存不中。
从缓存调整的角度看,应力求避免以下的问题:
o
'缓存的最近最少使用(LRN)链'('cache buffers LRU chain' )的加锁竞争
o
'平均写队列'("Average Write Queue" )长度过大
o
过多时间花在等待‘写完毕等待上’("write complete waits" )
o
过多时间花在等待‘缓冲释放等待’上 ("free buffer waits" )
Latch Contention加锁(插销)竞争:插销加锁是SGA中保护共享数据结构的低层的串行化机制。插销latch是一
类可以非常快的获得和释放的锁。插销锁的实现是依赖于操作系统的,尤其在关于一个进程是否会等待一个锁,
和等多久方面。
有如下的锁(插销)需要调整:
o
Redo Copy/Allocation Latch:重写日志的复制/分配插销
o
Shared Pool Latch:共享池的插销
o
Library Cache Latch:Library Cache插销
Redo Log Buffer Performance Tuning(重写日志缓冲的调整):LGWR 将重写日志缓冲中的重写项写到重写日志文
件中。一旦LGWR将这些项复制到重写日志文件中,用户进程就可以重写这些项。统计项目"redo log space requests"
反映了用户进程等待重写日志缓冲中空间的时间的数字。
设置重写日志大小的一些提示:
o
"redo log space requests"的值应该接近0。
o
设定合适的重写日志的大小,建议每15-30分钟进行一次重写日志的切换。
Query Performance Tuning(查询效率的调整):如果查询运行得很慢,请考虑这些方面:
o
你希望这个查询运行的有多快以及有理由这样要求吗?
o
优化模式OPTIMIZER_MODE 设为何值?
o
查询涉及的索引都是有效的吗?
o
在数据库中有没有其他的长时间运行的查询(大查询)
o
对于CBO(基于成本的优化)In case of CBO:
o
表和索引上有统计信息吗?
o
统计信息是被计算出来的还是被估计出来的?
o
对于查询的性能调整由两个主要的调试工具:
TKPROF
AUTOTRACE
Rollback Segment Performance Tuning(回滚段的调整):Oracle数据库提供了任何数据库对象上的SELECT, INSERT,
UPDATE, 和DELETE 操作的读一致性。回滚段用于保存由那些要回滚的动作或系统需要产生一个和前面某一时
间读一致的影像所产生的可取消事务。
设置回滚段大小的技巧如下:
o
建议最少每4个事务一个回滚段
o
建议为长时间运行的大查询提供一个大回滚段。
o
v$rollstat中的wrap数接近0。否则增大扩展大小(extent size)。
SELECT b.name, a.wraps FROM V$ROLLSTAT a, V$ROLLNAME b;
n Temporary Tablespace Performance Tuning(临时表空间的调整):从RDBMS release 7.3开始,Oracle引入了临
时表空间的概念。这个表空间用于保存临时对象,如排序段。排序段采用它所在的表空间的缺省存储参数
(DEFAULT STORAGE (NEXT) 子句)作为自己的存储参数。
临时表空间的调整的技巧如下:
o
如果即使在稳定的状态下也存在很多的排序扩展锁(Sort Extent Pool latch)的竞争,你应该通过修改临时
表空间的DEFAULT STORAGE 子句的NEXT值来增大扩展块的大小。
o
如果存在很多的排序扩展锁(Sort Extent Pool latch)的竞争并且这种等待是由于过多的并发的排序造成的,
你应该增大SORT_AREA_SIZE参数的大小,以使更多的排序能保存在内存中。
o
建议让扩展块的大小和SORT_AREA_SIZE参数相同。
Utlbstat/Utlestat Performance Tuning(Utlbstat/Utlestat调整):Utlbstat/Utlestatt 是一堆存放在你的
$ORACLE_HOME/rdbms/admin目录下的SQL脚本,他们对于捕获系统范围的数据库性能统计的快照非常有用。
UTLESTAT 创建这些视图的第二个快照,并将两个快照之间的差异报告到文件 'report.txt'中。 Utlbstat.sql 在你的
sys用户下创建一系列的表和视图,其中包括开始时数据库性能统计的快照。Utlesta.sql在你的sys用户下创建一系
列的表,其中包括结束时数据库性能统计的快照和一个叫 'report.txt'的文件。
使用方法:
o
确保你已经将TIMED_STATSTICS设为TRUE (这仅仅给数据库操作增加了一点非常小的开销)。
o
确保数据库在运行utlbstat前,已经启动并且运行了一段时间。
o
从svrmgrl 中而不是sql*plus中运行utbstat.sql和utlestat.sql。
o
确保在脚本utlbstat/estat运行时,数据库不被Down掉,否则产生的统计就不正确。
o
至少运行utlbstat/estat 1-3个小时,才好调试你的数据库。
Checkpoint Performance Tuning(检查点性能调整):检查点( Checkpoint)是一个数据库事件,用来同步内存和
磁盘上的数据文件中的数据块。检查点的目的有两个:
o
建立数据的一致性
o
是数据库恢复更快。
检查点调整方法如下:
o
如果LOG_CHECKPOINT_INTERVAL的值比重写日志( redo log)的大小大,那么 checkpoint只在
ORACLE进行日志从一个组到另一组切换的时候才发生。这正是我们希望的。这个行为在 Oracle 8i中有
了变化。
o
当把LOG_CHECKPOINTS_TO_ALERT设为TRUE时,将把checkpoint启动和停止的时间记录在alert log
日志里。这对于你确定checkpoint是否正以最佳的频率发生很有帮助。
o
理想的情况是,checkpoint在仅在日志切换时发生。
Import Performance Tuning(数据载入性能调整):没有什么固定的信息是关于如何加速那些慢得让人难以忍受的
import的。显然import要花费它完成所需要的时间,但是作一些事情可以缩短他们所花的时间。方法很简单,并
行操作