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参数
Oracle参数是指Oracle数据库中的各种配置设置,可以通过修改这些参数来优化数据库的性能和功能。
Oracle数据库中有大量的参数,可以用来调整数据库的各种方面,例如内存、网络、并发、日志等等。
以下是一些常见的Oracle参数:
1. DB_CACHE_SIZE:指定SGA中用于数据块缓存的大小。
适当地设置该参数可以提高查询性能。
2. SHARED_POOL_SIZE:指定SGA中用于共享SQL和PL/SQL语句的内存大小。
适当地设置该参数可以减少SQL执行时间。
3. PROCEDURE_CACHE_SIZE:指定SGA中用于存储存储过程或函数的内存大小。
适当地设置该参数可以加快存储过程或函数的执行速度。
4. PGA_AGGREGATE_TARGET:指定PGA的内存大小。
PGA用于存储每个用户会话的私有信息,例如排序缓存、哈希表、连接信息等等。
5. LOG_BUFFER:指定重做日志缓冲区的大小。
适当地设置该参数可以提高重做日志的写入速度。
6. MAX_CONNECTIONS:指定最大并发连接数。
适当地设置该参数可以保证系统的稳定性和可扩展性。
7. SESSIONS_PER_USER:指定每个用户可以打开的最大会话数。
适当地设置该参数可以控制用户的资源使用,并防止资源竞争。
以上是一些常见的Oracle参数,但实际上还有很多其他参数可以用于优化数据库性能和功能。
在设置Oracle参数时,需要考虑到系统资源、工作负载、用户需求等方面的因素,并进行适当的测试和调整。
Oracle是一个高性能数据库软件。
用户可以通过参数的调整,达到性能的优化。
性能优化主要分为两部分:一是数据库管理员通过对系统参数的调整达到优化的目的;二是开发人员通过对应用程序的优化达到调整的目的。
在此,仅就系统参数的调整进行探讨,而不涉及应用程序的优化。
对系统参数的调整,可以分为以下几个部分:调整内存分配系统全局区(SGA)是一个分配给Oracle 包含Oracle 数据库实例控制信息的内存段。
SGA的大小对系统性能的影响极大,其缺省参数设置只适用于配置很低的计算机,不适应收入系统现有设备的需要。
这些参数若不作调整,会对系统资源造成巨大浪费。
就收入系统的Alpha 1200而言,SGA的大小以160兆左右为宜。
初始化参数文件中的一些参数对SGA的大小有决定性的影响。
参数DB-BLOCK-BUFFERS(SGA中存储区高速缓存的缓冲区数目),参数SHARED-POOL-SIZE(分配给共享SQL区的字节数),是SGA大小的主要影响者。
DB-BLOCK-BUFFERS参数是SGA大小和数据库性能的最重要的决定因素。
该值较高,可以提高系统的命中率,减少I/O。
每个缓冲区的大小等于参数DB-BLOCK-SIZE的大小。
Oracle 数据库块以字节表示大小。
Oracle SGA区共享池部分由库高速缓存、字典高速缓存及其他一些用户和服务器会话信息组成,共享池是最大的消耗成分。
调整SGA区各个结构的大小,可以极大地提高系统的性能。
调整Library Cache库高速缓存(Library Cache)中包含私用和共享SQL区和PL/SQL区。
调整SGA的重要问题是确保库高速缓存足够大,以使Oracle能在共享池中保持分析和执行语句,提高语查询V$LIBRARYCACHE 数据字典视图句分析和执行效率,降低资源消耗。
通过比较Library Cache的命中率来决定它的大小。
(其中,pins表示高速缓存命中率,reloads表示高速缓存失败)SQL〉SELECT SUM(pins),SUM(reloads) FROM v$librarycache;如果sum(reload)/sum(pins)≈0,说明Library Cache的命中率比较合适,若大于1,则需要增加共享池(SHARED-POOL-SIZE)的大小(在初始化参数文件中)。
ORACLE数据库性能调整与优化分析摘要Oracle数据库的主要作用是对多种业务形式进行处理,保障各项业务的稳定运行,因此,Oracle数据库应用系统性能优化至关重要。
对此,本文首先对Oracle数据库进行了介绍,然后对ORACLE数据库性能调整与优化的必要性进行了分析,并对具体的性能调整优化策略进行了详细探究。
关键词Oracle数据库;性能;优化前言现如今,oracle数据库技术日漸完善,其应用范围也越来越广泛,但是,随着数据信息的不断增加,oracle数据库的应用安全性也受到了较大威胁,在数据库信息的实际应用中,偷取、破坏等问题较为常见,这样就会影响oracle数据库的正常运行,甚至会造成信息丢失的问题。
因此,亟须对oracle数据库使用性能进行调整和优化。
1 Oracle数据库随着oracle数据库的快速发展,其规范性逐渐加强,使用性能也日渐完善,oracle数据库是一种通用型数据库,具有完善的数据管理功能,其害是一项关系型数据,在实际应用中,可以对中业务的数据关系进行仔细清理,从而构建出针对性较强的数据库结构形式,然后将所有信息数据传递至计算机终端,通过应用计算机终端相关软件,为oracle数据库运行提供良好的操作环境。
在oracle数据库的分布式操作环境中,可以对数据库中的各类信息进行及时更新,从而满足不同数据使用者的查询需要。
现如今,oracle数据库注意被应用于公共部门中,比如医院、银行等等,oracle数据库的内存结构形式如图1所示。
2 ORACLE数据库性能调整与优化的必要性数据库是一种数据集合,其具有组织性、共享性特征,并被长期存放于计算机中。
数据库系统是由很多部分所组成的,包括计算机硬件设备、计算机软件、数据库管理人员等等,在各项信息系统操作过程中,都需要依赖后台数据库的辅助。
在大数据时代,数据资源量逐渐增多,网络用户对于数据库的访问量逐渐增大,同时,对于数据库的访问要求也越来越高,很多数据信息被长期读取,并被修改和存储,这样很容易增加数据库负荷,导致数据库负载增加,很难对系统内部资源进行科学合理的分配,同时还会影响数据库的响应效率,无法更好地服务于数据库访问用户。
oracle性能调整的九⼤要点:三优化排序操作1、概念服务器⾸先在sort_area_size指定⼤⼩的内存区域⾥排序,如果所需的空间超过sort_area_size,排序会在临时表空间⾥进⾏。
在专⽤服务器模式下,排序空间在PGA中,在共享服务器模式下,排序空间在UGA中。
如果没有建⽴large pool,UGA处于shared pool中,如果建⽴了large pool,UGA就处于large pool中,⽽PGA不在sga中,它是与每个进程对应单独存在的。
PGA:program global area,为单个进程(服务器进程或后台进程)保存数据和控制信息的内存区域。
PGA与进程⼀⼀对应,且只能被起对应的进程读写,PGA在⽤户登录数据库创建会话的时候建⽴。
有关排序空间⾃动管理的两个参数:Pga_aggregate_target: 10M-4000G,等于分配给oracle instance的所有内存减去SGA后的⼤⼩。
Workarea_size_policy: auto/manual,只有Pga_aggregate_target已定义时才能设置为auto。
这两个参数会取代所有的*_area_size参数。
措施:尽可能避免排序;尽可能在内存中排序;分配合适的临时空间以减少空间分配调⽤。
2、需要进⾏排序的操作:A、创建索引;B、涉及到索引维护的并⾏插⼊C、order by或者group by(尽可能对索引字段排序)D、DistinctE、union/intersect/minusF、sort-merge joinG、analyze命令(仅可能使⽤estamate⽽不是compute)3、诊断和措施Select * from v$sysstat where name like ‘%sort%’;Sort(disk):要求Io去临时表空间的排序数⽬Sort(memory):完全在memory中完成的排序数⽬Sort(rows):被排序的⾏数合计Sort(disk)/ Sort(memory)<5%,如果超过5%,增加sort_area_size的值。
oracle参数配置Oracle参数配置是DBA(数据库管理员)在安装、配置和维护Oracle数据库时必须要进行的重要工作之一、合理的参数配置可以改善数据库的性能和稳定性,提高系统响应速度。
在Oracle中,参数配置分为全局参数和会话参数两个层面。
全局参数是对整个数据库实例有效的,而会话参数是对特定会话(用户)有效的。
下面是一些常见的Oracle参数配置及其作用:1. SGA_TARGET和PGA_AGGREGATE_TARGET:这两个参数用于配置SGA (System Global Area)和PGA(Program Global Area)的大小。
SGA用于缓存数据块、控制结构和共享池等,PGA用于存储处理用户请求时需要的数据。
合理的配置可以减少磁盘I/O操作,提高性能。
2.DB_CACHE_SIZE:用于配置数据库缓存的大小。
数据库缓存用于缓存数据块,减少磁盘读取的次数。
合理的配置可以提高数据库的数据访问速度。
3.SHARED_POOL_SIZE:用于配置共享池的大小。
共享池用于缓存SQL语句、存储过程和游标等共享的数据结构。
合理的配置可以提高SQL查询的执行效率。
4.LOG_BUFFER:用于配置日志缓冲区的大小。
日志缓冲区用于存储事务日志,保证数据库的数据一致性和可恢复性。
合理的配置可以提高事务的提交速度。
5.PROCESSES:用于配置数据库可以同时处理的会话数。
合理的配置可以避免系统资源过度占用和会话阻塞的问题。
6.UNDO_RETENTION:用于配置事务回滚段的保留时间。
事务回滚段用于存储已提交但尚未释放的事务数据,以支持数据库的读一致性。
合理的配置可以减少回滚段的空间使用和事务回滚的时间。
7.OPTIMIZER_MODE:用于配置优化器的工作模式。
优化器根据SQL查询的特性和数据库的统计信息,选择最优的执行计划。
合理的配置可以提高SQL查询的执行效率。
除了以上参数,还有许多其他的参数可供配置,如DB_BLOCK_SIZE、SORT_AREA_SIZE、JOB_QUEUE_PROCESSES等。
Oracle 学习笔记数据库命令 (2)Oracle的分区 (3)Oracle性能调优 (6)数据库命令查看用户表大小Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name查看表空间大小Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name创建表空间create tablespace tablespacename datafile ‘full path’ size numM online删除默认表空间USERS,由于USERS表空间在安装的时候默认为文件系统,有些时候处于数据库设备建立的需要,比如说建立成裸设备,我们需要将USERS表空间改成我们自己建立的裸设备,而USERS为数据库的默认表空间,直接删除是不可以的,那么就要使用命令将数据库默认表空间改成我们新建立的表空间,例如,新的表空间为USERS01,则使用alter database default tablespace USERS01然后drop tablespace USERS including contents查看表空间的物理路径以及大小select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name查看表空间Select Tablespace_Name,Sum(bytes)/1024/1024From Dba_SegmentsGroup By Tablespace_Name关于WEB控制台创建一个EM资料库emca -repos create重建一个EM资料库emca -repos recreate删除一个EM资料库emca -repos drop配置数据库的 Database Controlemca -config dbcontrol db删除数据库的 Database Control配置emca -deconfig dbcontrol db重新配置db control的端口,默认端口在1158emca -reconfig portsemca -reconfig ports -dbcontrol_http_port 1160emca -reconfig ports -agent_port 3940先设置ORACLE_SID环境变量后,启动EM console服务emctl start dbconsole先设置ORACLE_SID环境变量后,停止EM console服务emctl stop dbconsole先设置ORACLE_SID环境变量后,查看EM console服务的状态emctl status dbconsole配置dbconsole的步骤emca -repos createemca -config dbcontrol dbemctl start dbconsole重新配置dbconsole的步骤emca -repos dropemca -repos createemca -config dbcontrol dbemctl start dbconsole查看目前数据库字符集select * from v$nls_parameters查看表大小select segment_name,(bytes/1024)/1024||'M',((BLOCKS*8196)/1024)/1024||'M'from USER_segments where segment_name='tablename'Oracle的分区全局索引适用于在全部记录中查询,比如要查询一个手机号之类的global index就是为整个分区表建立了一个大的索引。
oracle优化1. 选用适合的ORACLE优化器ORACLE的优化器共有3种:a. RULE (基于规则)b. COST (基于成本)c. 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 采用两种访问表中记录的方式:a. 全表扫描全表扫描就是顺序地访问表中每条记录。
ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。
b. 通过ROWID访问表你可以采用基于ROWID的访问方式情况,提高访问表的效率,ROWID包含了表中记录的物理位置信息……ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。
通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。
3. 共享SQL语句为了不重复解析相同的SQL语句,在第一次解析之后,ORACLE将SQL语句存放在内存中。
这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。
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要花费它完成所需要的时间,但是作一些事情可以缩短他们所花的时间。方法很简单,并
行操作