Oracle性能优化学习心得byLYH

合集下载

oracle学习体会

oracle学习体会

Oracle学习体会王岩2015年,为落实重点开展“完善业务系统,加强统计数据汇总分析”的工作要求,根据协会安排,我由政策信息部调整到统计部,在稳步推进业务系统数据库工作的基础上,努力配合做好网络及其他软硬件管理等工作。

对于曾经负责信息宣传工作的我来说,计算机技术还是一个全新的领域。

根据协会安排,我从今年的4月到11月利用周末时间学习专业知识,旨在通过参加学习中心的linux系统和oracle数据库等培训课程,承担协会业务系统数据库的开发和管理工作。

在参加专业培训机构课程的同时,臧立副主任也会不定期针对协会的业务系统数据库为我们做一些内训。

通过这一年来的学习、回顾和梳理,让我对oracle数据库知识以及协会的业务系统数据库框架有了一定的了解,也对协会的数据库管理工作方面有了一些建议。

一份总结和体会Oracle数据库分两个方面,一块是开发,一块是管理。

开发主要是写存储过程、触发器之类的编程工作,类似于程序员,需要有较强的逻辑思维能力和创造能力。

数据库管理则是需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,而协会的业务系统数据库工作则是同时包含了开发和管理的内容。

在有一定的oracle专业知识之后,我开始接手了辽宁省协会和广东省协会的业务数据分入处理工作。

其中,根据每期不同的业务数据,需要对数据导入的操作脚本进行修改,遇到有问题的数据,需要根据错误进行逻辑分析,创建新的脚本来筛选出错误数据,并进行修改整理,最终将正确、完整的业务数据导入到协会业务系统数据库中,为保费结算工作提供了及时可靠的数据支持。

做计算机技术工作的人都知道,专业的知识只能称得上打开这项工作大门的一把钥匙,要想真正迈进协会数据库管理工作这项领域,我们还需要学习掌握协会的业务系统数据库框架。

协会的数据库里面承载着一百多类表,包含着一千余个列,我们不仅要知道这些表的逻辑结构和数据类型,还要知道各个表之间的关联,从而在数据库中顺利的实现增、删、改、查我们所需要的数据。

oracle学习心得

oracle学习心得
四、深入学习管理:可以考OCP证书,对oracle先有一个系统的学习,然后看OracleConcepts、oracleonlinedocument,对 oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、RAS、T、DATAGUARD、 TUNING、BACKUP&RECOVER等等。
系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复进程监控:负责在一个Oracle进程失败时 清理资源
检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信 息。
归档进程:在每次日志切换时把已满的日志组进行备份或归档服务进程:用户进程服务。
三、oracle的体系
oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个 整体的认识。
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)
控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至 少需要一个控制文件
PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及 控制信息。
(3)ORACLE的进程结构ORACLE包括三类进程:
①用户进程 用来执行用户应用程序的。
②服务进程 处理与之相连的一组用户进程的请求。
③后台进程 ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括:
ARCH(ARCHIVER)进程。每当联机日志文件写满时,该进程将其拷贝到归档存储设备上。另外还包括分布式DB中事 务恢复进程RECO和对服务进程与用户进程进行匹配的Dnnn进程等。

Oracle学习总结-表和索引的性能优化

Oracle学习总结-表和索引的性能优化

Oracle学习总结-表和索引的性能优化表的性能表的性能取决于创建表之前所应⽤的数据库特性,数据库->表空间->表,创建数据库时确保为每个⽤户创建⼀个默认的永久表空间和临时表空间并使⽤本地管理,创建表空间设为本地管理并且⾃动段空间管理本地管理表空间在每个数据⽂件中使⽤⼀个位图来管理对象扩展和空闲空间查看数据库相关配置SELECT*FROM DATABASE_PROPERTIESSELECT*FROM V$PARAMETER查看表空间相关配置select*from DBA_TABLESPACES主要表类型描述及⽤法堆组织表⼀般默认类型临时表基于会话或事物期间的临时表,结束后销毁索引组织表按照主键排序的B+树索引结构中,提供快速读取分区表由多个相互分隔开的物理段组成的逻辑表物化视图包含sql查询结果的表,聚集数据以快速提供报表或复制数据聚簇共享相同存储的⼀组表,减少io提升表性能的建议,使⽤正确的数据类型,是数字就⽤数据,精度可以确定就指定精度,是⽇期就是使⽤⽇期类型,变长使⽤varchar2,当需要从Null更新到⼤值时适当调⼤pctfree防⽌过多的⾏链接影响数据块读取性能,主键索引等的合理设计,尽量减少lob的使⽤,如果都⾮空就设置not nulloracle 11gr2之后,将表及索引的物理空间分配延迟到第⼀条记录插⼊到表时,通过查询'user_segments'和'user_extents'验证如果需要将⼤量数据加载到表中,如果数据⾮关键可轻易重建或者导⼊后⽴马备份,可以设置nologging使直接路径操作产⽣的重做⽇志最⼩化并使⽤直接路径加载alter table*** nologging;insert/*+append*/into***select*from xxx;⾼效移除表中数据,truncate会将⾼⽔位线归零(全表扫描仅搜索⾼⽔位线之下的存储块中的数据⾏),释放空间(reuse storage),受外键约束/delete产⽣⼤量的撤销和重做⽇志,可回退,如果⽤drop重建,必须同时重建所有索引约束授权触发器等,并且在重建完成之前不可⽤通过v$transaction查询事物细节查看顾问运⾏的时间select*from dba_auto_segadv_summary⽣成的相关结果表dba_advisor_findingsdba_advisor_objectsdba_advisor_executions查看顾问段的建议的⼯具,是否有建议需要收缩,移动或压缩的表select*from table(dbms_space.asa_recommendations('false','false','false'))更新⼀⾏数据,当空余空间⽆法容纳数据,则当前数据块中存储指针,指向新的数据块,成为⾏链接,查询时需要访问多个数据块影响性能,需要Move,移动过程中会上锁。

oracle性能优化总结

oracle性能优化总结

Oracle 性能优化50个方法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)中的内存可以被所有的数据库用户共享. 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径. ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用. 可惜的是ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询. 数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了. 当你向ORACLE 提交一个SQL语句,ORACLE会首先在这块内存中查找相同的语句. 这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等). 共享的语句必须满足三个条件:A. 字符级的比较: 当前被执行的语句和共享池中的语句必须完全相同. 例如:SELECT * FROM EMP;和下列每一个都不同SELECT * from EMP;Select * From Emp;SELECT * FROM EMP;B. 两个语句所指的对象必须完全相同: 例如:用户对象名如何访问Jack sal_limit private synonymWork_city public synonymPlant_detail public synonymJill sal_limit private synonymWork_city public synonymPlant_detail table owner考虑一下下列SQL语句能否在这两个用户之间共享.C. 两个SQL语句中必须使用相同的名字的绑定变量(bind variables) 例如:第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值)select pin , name from people where pin = :blk1.pin;select pin , name from people where pin = :blk1.pin;select pin , name from people where pin = :blk1.ot_ind;select pin , name from people where pin = :blk1.ov_ind;4. 选择基础表所谓基础表是被最先被访问的表,通常是以全表扫描的方式被访问,由于优化器不同,SQL语句的基础表的选择也不同.1.COST优化器会检查SQL中每个表的物理大小,索引状态,然后选择花费最底的执行路径.他会自己选择基础表2.RULE优化器,在所有连接条件都有索引对应的前提下,选择FROM子句中最后那个表作为基础表.ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并. 例如: 表TAB1 16,384 条记录表TAB2 1 条记录。

oracle数据库性能调整和优化涉及到那些问题

oracle数据库性能调整和优化涉及到那些问题

Oracle 数据库性能调整和优化涉及到那些问题数据库应用的类型是复杂的,有大量用户同时更新数据库的联机事务处理应用(如银行储蓄系统)、对海量数据进行查询并生成报告的数据仓库应用(如分析商场销售数据的决策支持系统)、在互联网上大量用户同时查询和更新数据的联机事务处理应用(如网上银行应用)等等。

为了满足与适应各种各样的商业应用,使各种不同的应用在不同的环境下都能达到最优的状态,Oracle 数据库系统提供了大量的非常灵活的可调节内容。

为了保证Oracle数据库运行在最佳的性能状态下,在信息系统开发之前就应该考虑数据库的优化策略。

优化策略一般包括服务器操作系统参数调整、数据库参数调整、网络性能调整、应用程序SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信息系统开发之前完成的。

分析评价Oracle数据库性能主要有数据库吞吐量、数据库用户响应时间两项指标。

数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即“数据库用户响应时间=系统服务时间+用户等待时间”。

因此,获得满意的用户响应时间有两个途径:一是减少系统服务时间,即提高数据库的吞吐量;二是减少用户等待时间,即减少用户访问同一数据库资源的冲突率。

数据库性能优化包括如下几个部分:∙调整数据结构的设计这一部分在开发信息系统之前完成,程序员需要考虑是否使用Oracle数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。

∙调整应用程序结构设计这一部分也是在开发信息系统之前完成的。

程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。

不同的应用程序体系结构要求的数据库资源是不同的。

∙调整数据库SQL语句应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL 语句的执行效率最终决定了Oracle数据库的性能。

Oracle公司推荐使用Oracle语句优化器(Oracle Optimizer)和行锁管理器(Row-Level Manager)来调整优化SQL语句。

Oracle性能优化学习心得byLYH

Oracle性能优化学习心得byLYH

Oracle性能优化学习心得一,优化总的原则1,查看系统的使用情况2,查看SGA分配情况,结合系统具体情况进行分析。

3,表的设计分析4,SQL语句分析实施要则1,查看系统的使用情况,CPU占用,内存,I/O读取等Oracle10G提供的Oracle Enterprise Manager图形化工具中的ADDM 和SQL Tuning Advisor等可以方便的查看系统状况2,OPS上负载均衡,不同查询用不同Instance3,提供脚本查看SGA使用情况4,分析SQL执行情况(trace及其他工具)实施细节1,外部调整:我们应该记住Oracle并不是单独运行的。

因此我们将查看一下通过调整Oracle服务器以得到高的性能。

2,Row re-sequencing以减少磁盘I/O:我们应该懂得Oracle调优最重要的目标是减少I/O。

3,Oracle SQL调整。

Oracle SQL调整是Oracle调整中最重要的领域之一,只要通过一些简单的SQL调优规则就可以大幅度地提升SQL语句的性能,这是一点都不奇怪的。

4,调整Oracle排序:排序对于Oracle性能也是有很大影响的。

5,调整Oracle的竞争:表和索引的参数设置对于UPDATE和INSERT的性能有很大的影响。

二,调优分类:对Oracle数据库进行性能调整时,应当按照一定的顺序进行,因为系统在前面步骤中进行的调整可以避免后面的一些不必要调整或者代价很大的调整。

一般来说可以从两个阶段入手:1、设计阶段:对其逻辑结构和物理结构进行优化设计,使之在满足需求条件的情况下,系统性能达到最佳,系统开销达到最小;2、数据库运行阶段:采取操作系统级、数据库级的一些优化措施来使系统性能最佳;㈠设计阶段:A,数据库设计优化较多修改较少查询的数据和较多查询较少修改的数据分别对待。

a,结构优化1,根据应用程序进行数据库设计。

即应用程序采用的是传统的C/S两层体系结构,还是B/W/D三层体系结构。

ORACLE实训心得体会

ORACLE实训心得体会

o r a c l e实训总结系别:信管院班级:姓名:浦江峰学号日期: 2012年12月21日实训总结:由于感到oracle实训担子很重,而自己的学识、能力和阅历与其任职都有一定的距离,所以总不敢掉以轻心,总在学习,向书本学习、向周围的同学学习,向老师请教,这样下来感觉自己半年来还是有了一定的进步。

颠末一个星期的oracle数据库实训,让我体会到了日常仄凡是很多课堂上所无法实践知晓的,让人收获颇丰,明白如何去应用。

而本次数据库实训的目标是让我们把握数据库系统的原理。

将理论与实践相结合,利用现有的数据库管理系统硬件、范例、科学地完成一个设计。

这个星期是我们oracle 数据库管理课的实训,经过一个星期的实训,让我领会到了许多平时课堂上所没有接受的课外知识,很让人受益匪浅,懂得如何去运用,而进行的一次分析设计综合的训练。

而本次实训的目的是让我们掌握数据库系统的原理、技术。

将理论与实际相结合,应用现有的数据库管理系统软件,规范、科学地完成一个设计与实现。

这次我们实训的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。

从实训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。

我们实训的另一个内容是数据库的约束、视图、查询。

从中我们了解到查询语句的基本结构,和简单select语句的使用,多表连接查询。

而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。

使用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以通过视图向基表中添加、修改和删除数据。

Oracle数据库应用程序性能优化探究

Oracle数据库应用程序性能优化探究

Oracle数据库应用程序性能优化探究引言我们见到过很多带有巨大性能问题的Oracle应用程序和电子商务套件安装。

我们得出的结论是:这些安装都可以在性能方面取得进一步的提升。

换句话说,性能已经很高,几乎不能得到再得到改善的安装是很少见的。

有争议的问题针对产品系统堆栈而言,我们的底部端对端性能调优方法总是很快产生成果,比我们认为的遵循广泛的备忘列表要快。

我提出以下一些问题共讨论:大部分性能改善的可能性都是在应用程序级上:这条结论来自Metalink上关于性能调优的一个显著的注释。

这条结论和我们的经验性能调优系统堆栈没有统计意义上的关系。

平均需要两天的时间:这是书上做出的结论。

但我们的经验不支持这个结论。

我认为得出一个Oracle应用程序性能改善的策略最少应该需要12天。

第一天早晨开会是很常见的事。

最后两天主要用来完成行政方面和技术级上的有关发现、胜利和紧接着的推荐的文档工作。

可以夸张地说,如果一个性能改善不被记录下来形成文档,那么以后很难再重复类似的性能改善。

如果对出现的问题不记录下来形成文档,那么很可能它会再次发生。

如果一个问题及其解决方法不被记录下来形成文档的话,对它的监测将非常困难。

扩展碎片:对于联机事务处理系统,这应该不是一个问题。

我们听过很多有关“联机事务处理系统”对碎片严重的表(这些表完全是键值惟一的)进行事务处理不会影响性能的说法。

但是,我们应该经常性地重组以消除碎片,这会带来性能上的巨大改善。

Oracle 存储管理改善正在向将碎片带来的影响最小化大踏步地迈进。

由于缓冲输入输出不是大问题,所以需要对磁盘输入输出进行性能调优:这里有两点需要说明。

磁盘输入输出的实际开销并不是内存缓冲输入输出的一万倍。

真实的比值接近70。

即使你的CPU似乎正在抵销这个代价,并且不带来任何显著的性能问题,但是这个问题显然会限制你的系统的可伸缩性。

随着时间的流逝,我们越来越重视过高的内存缓冲输入输出,同时找寻性能改善的机会。

oracle学习心得体会

oracle学习心得体会

oracle学习心得一、sqlserver的理解sqlserver服务器就像一栋大楼,大楼里的机房就像服务器的数据库,机房里的电脑如同数据库里的表1、登录用户可以登录服务器——可以进大楼2、登录用户成为数据库用户才能进指定的数据库——进入大楼的人给了某个机房的钥匙才能进入机房3、登录用户有权限使用表——进入机房的人有电脑的密码才能使用电脑二、oracle的理解oracle服务器(全局数据库)就像一个商场,商场的每一家公司是表空间,公司的业务是表1、数据库由多个表空间组成——商场里有多家公司组成2、表空间由段组成——公司要有自己的经营业务,可以只有一个业务,就是一个表空间中只有一个段,可以有多个业务,就是一个表空间有多个段3、段由区组成——单个业务的细分类别。

例如有家公司经营三个业务,卖书,卖家电,卖衣服,则每个业务就是一个段。

而每个业务又有细分,比如卖书的话要进行分类了。

计算机区,人文区,小说区等,每一区都要放上书架存放书籍,则书架就是oracle块,存放数据的三、数据库,表空间,用户(指定默认表空间),表统统由管理员管理四、在oem中管理数据库的步骤1、创建1)存储——表空间——创建表空间(tomspace)(类似于在sql中创建数据库,通常可以省略,使用默认表空间为users,,临时表空间为temp)2)首先展开安全性——创建新用户(tom,指定表空间)(类似于在sql中指定数据库用户)3)创建表——指定方案(用户)和表空间(列名不要带<>)4)设置约束5)输入信息:方案——用户名——表——右击——查看/编辑目录…2、修改1)方案——用户名——表2)修改表结构,添加约束3、删除:右击表——移去五、注意事项1、刚创建的用户不会出现在方案中,只有创建了一个表指定方案和表空间,该用户的方案名就会出现在方案中,此时就可以方便为该方案创建其他表1)新创建的用户能在sqlplus中登录,为什么不能在企业管理器中登录呢?解答:需要授予selectanydirectory权限才能正常登录企业管理器,但没有其他权限2)可以对创建的用户在安全性中赋予角色权限,如dba,则该用户就是数据库管理员3)sys用户主要用来维护系统信息和管理实例,只能以sysoper 或sysdba角色登录4)安装oracle的用户自动为ora-dba权限,自动是sys用户,所以在登录时不需要用户名和密码,只要选中以sysdba登录。

浅谈Oracle数据库SQL性能优化

浅谈Oracle数据库SQL性能优化

浅谈Oracle数据库SQL性能优化
Oracle数据库是一个非常强大的数据库系统,但是在使用过程中可能会出现一些性能问题。

这时候我们需要对SQL语句进行优化,以提高数据库的性能。

下面就来谈谈Oracle数据库SQL性能优化。

1. 优化SQL语句的查询条件
首先,我们需要分析查询语句,找出其中的瓶颈。

优化查询条件可以利用索引来提高查询效率。

可以为常用的查询条件创建索引,这样可以大大提高查询的效率。

2. 减少重复查询
查询结果一旦得到,可以缓存起来,避免重复查询。

Oracle数据库提供了缓存机制,在查询结果不需要实时更新情况下,可以利用缓存机制,缓存查询结果。

这样可以避免不必要的查询操作,从而提高查询效率。

3. SQL优化手段
Oracle数据库提供了许多SQL优化手段,如选择最优列表、自动调整通道大小、设置合适的排序参数等等,这些参数的正确设置,可以极大的提高查询效率。

4. 优化SQL语句的执行计划
执行计划是Oracle数据库自动生成的查询优化方案,它反映
了Oracle数据库如何执行SQL语句。

通过优化执行计划,可
以提高SQL查询效率。

可以通过分析执行计划,并对其进行
优化,以减少不必要的操作,优化SQL语句的查询效率。

综上所述,Oracle数据库SQL性能优化不是一项简单的任务,需要我们仔细分析SQL语句,了解相关优化手段,并通过不
断的优化和调试来提高数据库性能。

只有不断的学习和实践,才能掌握Oracle数据库SQL性能优化的技巧,并在实际应用
中取得良好的效果。

ORACLESQL性能优化

ORACLESQL性能优化

ORACLESQL性能优化1.使用正确的查询语句:使用正确的查询语句是提高SQL性能的关键。

确定要返回的结果集,只选择所需的列,使用合适的过滤条件和连接条件来减少需要检索的数据量。

2.创建适当的索引:索引是提高查询性能的重要因素之一、为经常使用的列创建索引可以加快查询速度。

但是,过多或不必要的索引可能会降低性能。

因此,只为那些经常用于查询和过滤的列创建索引。

3. 根据数据分布选择合适的索引类型:Oracle提供了多种类型的索引,包括B-tree索引、位图索引和哈希索引。

根据数据分布选择合适的索引类型可以提高查询性能。

4. 使用合适的查询优化技术:Oracle提供了多种查询优化技术,如联接、子查询、视图和分区等。

选择合适的查询优化技术可以提高查询性能。

5. 避免重复查询:在同一查询中避免多次访问相同的表和数据。

可以使用临时表或Oracle的WITH子句来保存查询结果,以便以后多次使用。

6.使用绑定变量:绑定变量可以减少SQL执行时间并减少资源的消耗。

使用绑定变量可以将SQL缓存起来以供以后使用,避免重复解析查询。

7.使用合适的数据库连接方式:选择合适的数据库连接方式可以提高查询性能。

使用连接池可以避免频繁的连接和断开操作,减少资源消耗。

8. 监控和调优SQL语句:使用Oracle提供的监控工具来监控和调优SQL语句的执行。

根据监控结果进行优化,从而提高SQL查询性能。

9.确保数据库统计信息的及时更新:数据库统计信息对于优化查询非常重要。

及时更新统计信息可以帮助优化器选择合适的执行计划,提高查询性能。

10.使用合适的硬件和存储配置:选择合适的硬件和存储配置可以提高查询性能。

增加内存和磁盘的速度和容量可以减少IO开销,加快查询速度。

总结起来,Oracle SQL性能优化需要综合考虑查询语句、索引、查询优化技术、数据库连接方式、绑定变量、监控和调优等因素。

通过合理地应用这些技术和方法,可以显著提高SQL查询的执行速度和效率。

Oracle数据库性能优化分析

Oracle数据库性能优化分析

Oracle数据库性能优化分析Oracle数据库性能优化是数据库管理中不可缺少的一部分。

要想让Oracle数据库运行得更快、更稳定,就需要进行性能优化。

这篇文章将从诊断问题、优化SQL查询、调整数据库参数等方面,介绍Oracle数据库性能优化的主要方法。

一、诊断问题在进行Oracle数据库性能优化之前,需要诊断问题,找出可能影响数据库性能的因素。

可以采用Oracle自带的一些工具,比如AWR(Automatic Workspace Repository)报告、ASH (Active Session History)数据等,来分析数据库的性能瓶颈。

AWR报告可以提供大量的信息,包括系统负载、等待事件、SQL执行统计等,这些信息可以帮助我们找出哪些SQL语句执行缓慢、哪些等待事件占用了过多的系统资源。

ASH数据则在AWR报告的基础上,提供了更为详细的会话信息。

我们可以通过对ASH数据的分析,了解每个会话的活动情况、等待事件及其统计信息等。

二、优化SQL查询优化SQL查询是Oracle数据库性能优化的重要步骤。

通过改写SQL查询、优化索引、统计信息等,来改善数据库的查询效率。

1. 改写SQL查询Oracle支持许多不同的SQL查询语句,而不同的查询语句的效率也是不同的。

比如,使用程序中嵌套的查询语句,可能会导致性能下降。

在这种情况下,可以使用联接查询来代替嵌套查询。

例如:SELECT *FROM departmentWHERE dept_id IN (SELECT dept_idFROM employeeWHERE emp_name = 'John');可以使用联接查询来代替上述嵌套查询:SELECT *FROM department, employeeWHERE department.dept_id = employee.dept_idAND employee.emp_name = 'John';2. 优化索引建立适当的索引是提高Oracle数据库性能的有效方法之一。

Oracle 数据库性能调优的一些经验与体会

Oracle 数据库性能调优的一些经验与体会

Oracle 数据库性能调优的一些经验与体会[摘要] 本文主要介绍在HP8500服务器上实现Oracle 9i数据库管理工作中性能调优的方法与系统参数调整的原则。

[关键字] 共享池,缓存,栓锁,重写日志,回滚段,临时表空间,检查点,I/O从事数据库系统维护工作已经有一段时间了,多少有一些工作工作经验,想与大家作个交流。

数据库性能调节与优化是DBA(数据库管理员)的一项重要工作。

DBA如何才能把这项工作做好哪?首先,购买功能和性能更强的硬件是性能问题的一种解决办法,我们把Oracle 数据库安装运行于HP8500服务器,应用服务器采用HP ML570。

但是,硬件往往非常昂贵,且随着软件的升级和复杂化,数据的增加,再好的硬件也会过时。

DBA 必须最好地利用现有的硬件资源,想其他办法提高系统的性能。

一.O racle 数据库性能调优方法Oracle 给出了DBA 应当采用的性能调节的5大步骤。

一般而言,在所有的情况下,都应从第1步开始,以避免在解决问题的过程中又产生新的问题。

在此同时,也应注意到,随着步骤的深入,调节所影响的范围和深度也在加大。

下面是调节的步骤:1. 优化设计:调节系统结构设计和应用系统的设计。

2. 优化应用程序:在很多情况下,写的很差的查询语句是性能问题的根源。

DBA 应当在鼓励开发人员调整SQL 查询语句的性能。

(前两个步骤通常是系统体系结构设计者和应用程序开发人员的责任;但是,DBA也可能参与应用程序的优化。

)3.优化内存结构。

在应用程序调节后,恰当的配置和调节内存结构会对应用和数据库有极大的性能影响。

Oracle 应当有足够的空间分配给SQL/PLSQL、数据字典缓冲区、数据缓冲区、重做日志缓冲区以获取高的性能。

这些体现在以下几个方面:A.对已存在于内存中的数据库数据更快的查询。

B.减少RDBMS 对SQL 不必要的分析。

C.消除操作系统的页面交换,特别是将SGA交换到磁盘。

4. 优化I/O:Oracle 设计成防止I/O 负面地影响应用系统的性能。

oracle性能优化建议小结

oracle性能优化建议小结

oracle性能优化建议⼩结ORACLE采⽤⾃下⽽上的顺序解析WHERE⼦句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最⼤数量记录的条件必须写在WHERE⼦句的末尾.尤其是“主键ID=?”这样的条件。

ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个⼯作是通过查询数据字典完成的, 这意味着将耗费更多的时间。

简单地讲,语句执⾏的时间越短越好(尤其对于系统的终端⽤户来说)。

⽽对于查询语句,由于全表扫描读取的数据多,尤其是对于⼤型表不仅查询速度慢,⽽且对磁盘IO造成⼤的压⼒,通常都要避免,⽽避免的⽅式通常是使⽤索引Index。

1)索引是表的⼀个概念部分,⽤来提⾼检索数据的效率,ORACLE使⽤了⼀个复杂的⾃平衡B-tree结构. 通常,通过索引查询数据⽐全表扫描要快. 当ORACLE找出执⾏查询和Update语句的最佳路径时, ORACLE优化器将使⽤索引. 同样在联结多个表时使⽤索引也可以提⾼效率.2)另⼀个使⽤索引的好处是,它提供了主键(primary key)的唯⼀性验证.。

那些LONG或LONG RAW数据类型, 你可以索引⼏乎所有的列. 通常, 在⼤型表中使⽤索引特别有效. 当然,你也会发现, 在扫描⼩表时,使⽤索引同样能提⾼效率.虽然使⽤索引能得到查询效率的提⾼,但是我们也必须注意到它的代价. 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时, 索引本⾝也会被修改. 这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O . 因为索引需要额外的存储空间和处理,那些不必要的索引反⽽会使查询反应时间变慢.。

⽽且表越⼤,影响越严重。

使⽤索引需要注意的地⽅:我们要避免在索引列上使⽤NOT, NOT会产⽣在和在索引列上使⽤函数相同的影响. 当ORACLE”遇到”NOT,他就会停⽌使⽤索引转⽽执⾏全表扫描.WHERE⼦句中,如果索引列是函数的⼀部分.优化器将不使⽤索引⽽使⽤全表扫描.举例:复制代码代码如下:低效:SELECT … FROM DEPT WHERE SAL * 12 > 25000;⾼效:SELECT … FROM DEPT WHERE SAL > 25000/12;避免在索引中使⽤任何可以为空的列,ORACLE性能上将⽆法使⽤该索引.对于单列索引,如果列包含空值,索引中将不存在此记录. 对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果⾄少有⼀个列不为空,则记录存在于索引中.举例: 如果唯⼀性索引建⽴在表的A列和B列上, 并且表中存在⼀条记录的A,B值为(123,null) , ORACLE将不接受下⼀条具有相同A,B值(123,null)的记录(插⼊). 然⽽如果所有的索引列都为空,ORACLE将认为整个键值为空⽽空不等于空. 因此你可以插⼊1000 条具有相同键值的记录,当然它们都是空! 因为空值不存在于索引列中,所以WHERE⼦句中对索引列进⾏空值⽐较将使ORACLE停⽤该索引.复制代码代码如下:低效:(索引失效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE IS NOT NULL;⾼效:(索引有效) SELECT … FROM DEPARTMENT WHERE DEPT_CODE >=0;使⽤通配符的情况下Oracle可能会停⽤该索引。

Oracle性能究极优化(Oracle性能优化)

Oracle性能究极优化(Oracle性能优化)

Oracle性能究极优化(Oracle性能优化)原作者:Bert Scalzo⽬前,HP,Compaq,Dell,IBM 以及 Oracle 都在加快速度拥抱 Linux ,这个开放源码的操作系统。

根据 eWeek 的统计,去年 Linux 服务器的销售量⼤约占据了 Compaq 的 30%,Dell 的 13.7%,IBM 的 13.5%。

⽽且 IBM 2001年度在 Linux 上的投⼊有 10 个亿。

Intel 最新的 64 位的 Itanium CPU 只⽀持四种操作系统:Windows, Linux, AIX 和 HP-UX。

我们也不要忘记Oracle 的 9i 数据库 Linux 版本要⽐ Windows 版本早⼀个⽉。

尽管 Linux 能跑在从 IBM S/390 到 Sun SPARC 结构的服务器,但是对于⼤多数⼈来说,Intel 还是 Linux 跑得最多的平台。

本⽂就是要讲述通过简单的性能调正,使 Oracle 的性能提升 1000% 的办法。

本⽂采⽤的测试环境是⼀台 Compaq 4 CPU,512 MB ,8 部 7200 rpm SCSI 磁盘的服务器,然后在⼏乎同样的单 CPU Athlon 系统上作了测试,内存⼀样,但是只有⼀部 7200 rpm 的 Ultra 100 IDE 磁盘。

尽管最后的结果和得到的百分⽐不⼀样,但是观测得到的性能提升是⼀致的。

为了简单起见,我们的测试环境采⽤ TPC 基准测试,它⼴泛地⽤于 OLTP 的负荷测试。

Quest 公司有⼀个叫做 Benchmark Factory 的⼯具,使测试⼯作变得就像发送电⼦邮件⼀样简单。

下⾯我们将分别通过 DB 的调整和 OS 的调整来看测试的结果。

DB1 的初始化参数⼀般不常见,为了说明问题,我们使⽤这些参数并作为基准。

DB1: Initial DatabaseDatabase Block Size 2KSGA Buffer Cache 64MSGA Shared Pool 64MSGA Redo Cache 4MRedo Log Files 4MTablespaces DictionaryTPC Results Load Time (Seconds) 49.41Transactions / Second 8.152显然需要加⼤ SGA ⼤⼩,我们来看 DB2 的结果:DB2: Cache & PoolDatabase Block Size 2KSGA Buffer Cache 128MSGA Shared Pool 128MSGA Redo Cache 4MRedo Log Files 4MTablespaces DictionaryTPC Results Load Time (Seconds) 48.57Transactions / Second 9.147增⼤ SGA 已经缓冲看来对于性能的提升并不显著,加载时间只提升了 1.73%。

ORACLE学习心得体会

ORACLE学习心得体会

表xyza b c1 m hj1 m hjk1 n jk2 u we2 u wert3 q s4 a ds4 a dsaa怎么删掉第1、5、8条记录?(字段a、b相同的几条记录只留一条,留下字段c较短的一条)delete from lianxiwhere length(c) not in (select min(length(c)) from lianxi group by a, b) oracle数据库常用的命令集锦今日开始研究oracle,搜索到了一个好东东,拿出来与大家一同分享。

下面是摘抄的部分:[local]2[/local] oracle相关语法及命令一、oracle入门理论知识:oracle的物理组件有三个:(1)数据文件数据文件是用于存储数据库数据的文件,如表、索引数据。

每个oracle数据库有一个或多个物理数据文件,一个数据文件只能与一个数据库关联。

(2)日志文件用于记录对数据库进行的修改信息,日志文件主要用于在数据库出现故障时实施数据库恢复。

(3)控制文件控制文件是记录数据库物理结构的二进制文件,每个oracle数据库都含有一个控制文件。

oracle的逻辑组件:表空间(tablespace) 表空间是数据库最大的逻辑单位,一个数据库至少包含一个表空间,一个表空间包含一个或多个段等等。

段(segment) 段存在于表空间中,分成4类,数据段、索引段、回退段、临时段。

区(extent) 区是磁盘空间分配最小单位,由连续的数据块组成,一个或多个区构成段,区只能存在于一个数据文件中。

数据块(data block) 数据块是数据库中最小的数据组织单位与管理单位,oracle数据库中的数据存储于数据块中,取值范围2k-64k之间。

模式(schema) 模式是对用户所创建的数据库对象的总称,又称为用户模式。

概念:内存 oracle内存结构包含以下两个内存区。

1、系统全局区(sga) 实例启动时分配该内存区,是oracle实例的一个基本组件。

Oracle SQL性能优化技巧大总结

Oracle SQL性能优化技巧大总结

OracleSQL性能优化技巧大总结(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。

如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.(2) WHERE子句中的连接顺序.:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.(3) SELECT子句中避免使用‘ * ‘:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间(4)减少访问数据库的次数:ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等;(5)在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200(6)使用DECODE函数来减少处理时间:使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.(7)整合简单,无关联的数据库访问:如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)(8)删除重复记录:最高效的删除重复记录方法 ( 因为使用了ROWID)例子:DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);(9)用TRUNCATE替代DELETE:当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)(10)尽量多使用COMMIT:只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:COMMIT所释放的资源:a. 回滚段上用于恢复数据的信息.b. 被程序语句获得的锁c. redo log buffer 中的空间d. ORACLE为管理上述3种资源中的内部花费(11)用Where子句替换HAVING子句:避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销. (非oracle中)on、where、having这三个都可以加条件的子句中,on是最先执行,where 次之,having最后,因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle性能优化学习心得一,优化总的原则1,查看系统的使用情况2,查看SGA分配情况,结合系统具体情况进行分析。

3,表的设计分析4,SQL语句分析实施要则1,查看系统的使用情况,CPU占用,内存,I/O读取等Oracle10G提供的Oracle Enterprise Manager图形化工具中的ADDM 和SQL Tuning Advisor等可以方便的查看系统状况2,OPS上负载均衡,不同查询用不同Instance3,提供脚本查看SGA使用情况4,分析SQL执行情况(trace及其他工具)实施细节1,外部调整:我们应该记住Oracle并不是单独运行的。

因此我们将查看一下通过调整Oracle服务器以得到高的性能。

2,Row re-sequencing以减少磁盘I/O:我们应该懂得Oracle调优最重要的目标是减少I/O。

3,Oracle SQL调整。

Oracle SQL调整是Oracle调整中最重要的领域之一,只要通过一些简单的SQL调优规则就可以大幅度地提升SQL语句的性能,这是一点都不奇怪的。

4,调整Oracle排序:排序对于Oracle性能也是有很大影响的。

5,调整Oracle的竞争:表和索引的参数设置对于UPDATE和INSERT的性能有很大的影响。

二,调优分类:对Oracle数据库进行性能调整时,应当按照一定的顺序进行,因为系统在前面步骤中进行的调整可以避免后面的一些不必要调整或者代价很大的调整。

一般来说可以从两个阶段入手:1、设计阶段:对其逻辑结构和物理结构进行优化设计,使之在满足需求条件的情况下,系统性能达到最佳,系统开销达到最小;2、数据库运行阶段:采取操作系统级、数据库级的一些优化措施来使系统性能最佳;㈠设计阶段:A,数据库设计优化较多修改较少查询的数据和较多查询较少修改的数据分别对待。

a,结构优化1,根据应用程序进行数据库设计。

即应用程序采用的是传统的C/S两层体系结构,还是B/W/D三层体系结构。

不同的应用程序体系结构要求的数据库资源是不同的。

2,遵循3大范式规范化数据结构,减少不必要的冗余。

3,反规范设计,增加必要冗余,提高查询速度。

4,针对变化较少的数据,合理创建临时表和视图,需注意对临时表和视图的及时同步更新5,在服务器端使用过程和函数,减少网络数据传输b,I/O优化1,使用分区,对查询条件字段(主外键)建立索引,依据Rowid物理地址查询,减少I/O 的消耗。

应避免可能参与计算的字段2,建立合适的索引。

缺省情况下建立的索引是非群集索引,但有时它并不是最佳的;合理的索引设计要建立在对各种查询的分析和预测上。

一般来说:①.有大量重复值、且经常有范围查询(between, >,< ,>=,< =)和orderby、group by发生的列,可考虑建立群集索引;②.②.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;③.③.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。

a,定期的重构索引是有必要的.ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME>b,避免在索引列上使用计算,判断或函数处理3,使用聚簇(对列的选择原则同索引)。

4,使用存档功能。

5,数据缓冲,快照,视图,远程调用等,减少I/O和网络消耗6,I/O调整这一步是在信息系统开发之前完成的。

数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。

在磁盘比较富裕的情况下还应该遵循以下原则:将表和索引分开;创造用户表空间,与系统表空间(system)分开磁盘;创建表和索引时指定不同的表空间;创建回滚段专用的表空间,防止空间竞争影响事务的完成;创建临时表空间用于排序操作,尽可能的防止数据库碎片存在于多个表空间中。

7,确定数据块大小和存储参数。

由于数据库的块大小在数据库创建以后就不能在修改(除非重建数据库),因此为了减少数据链接和行迁移,又提高磁盘空间的利用率,在设计数据库时要确定合适的数据块大小和存储参数。

通常我们是根据样例数据确定数据块大小,而根据业务现状和未来发展趋势确定存储参数。

㈡运行阶段:B,系统优化许多新手都错误的认为应该首先调整Oracle数据库,而不是先确认外部资源是否足够。

实际上,如果外部环境出现瓶颈,再多的Oracle调整都是没有帮助的。

1,多处理器系统调整优化,启用并行查询。

2,减少内存交换,减少分页,使SGA(System Globle Area)可留驻内存。

3,优化系统I/O环境。

4,优化网络环境C,数据库连接与网络优化1,使用直接OLE DB连接。

2,使用Connection Pool(数据连接池)机制3,优化程序设计,减少网络传输量D,Oracle参数配置优化Oracle参数设置,根据具体应用情况而定。

1,SGA的分配及使用效率优化分配给每个实例的内存,即SGA的使用效率如何,会大大影响数据库系统的性能。

SGA 由下列部分组成:共享池(Shared pool)、数据块缓冲区(Db block buffer)、重做日志缓冲区(Log buffer)、大池组成(Large pool)。

2,使用SQL*Loader Direct Path选项进行大量数据装载3,Database Resource Manager(DRM,数据库资源管理器)来控制用户的资源分配4,减少资源竞争在Oracle中,需要采用一些机制来保证数据库对象在使用期间的稳定性和数据的一致性,如使用锁存器(latch)、锁(lock)等。

因此争用和这些机制相关的资源会影响数据库的性能。

为了减少这种资源竞争,可以通过调整数据库的相关初始化参数(如db_block_lru_latches、dml_locks)来减少资源的争用,优化数据库性能。

在对Oracle数据库进行优化时,需要用到许多的参数,其中有一部分参数对系统性能影响较大,这部分参数叫可变参数。

可变参数按其作用可以分为两大类,一大类是起限制作用的,如OPEN_CURSORS;另一大类是影响系统性能的,如DB_BLOCK_BUFFERS。

5,可变参数优化在对Oracle数据库进行优化时,需要用到许多的参数,其中有一部分参数对系统性能影响较大,这部分参数叫可变参数。

可变参数按其作用可以分为两大类,一大类是起限制作用的,如OPEN_CURSORS;另一大类是影响系统性能的,如DB_BLOCK_BUFFERS。

在进行数据库系统性能优化时,需要熟练掌握和了解一些可变参数。

本文讨论了一些对系统性能有较大影响的参数。

限制类可变参数(1)DML_LOCKS该参数表明多少个用户,可同时能修改多少张表。

例如:有三个用户同时修改二张表,则要求表上的总数为6。

若置为0,则组织队列不起作用,其性能会稍有提高。

使用该参数时不能用DROP TABLE、CREATE INDEX或显式封锁。

(2)LICENSE_MAX_SESSION该参数指出允许并发用户会话的最大数。

若此参数为0,则不能实施并发。

若并发的用户会话数已达到此极限,则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。

(3)LICENSE_MAX_USERS该参数指出在一个数据库上可建立的最大用户数。

当达到最大值时,便不能再建新用户,可改变此值以放松限制。

在LICENSE_MAX_SESSION或LICENSE_MAX_USER为0时,则并发会话或任何用户都不能用。

若对不同的实例,此参数不同时,则以第一个登录的数据库实例的参数为准。

(4)MAX_DUMP_FILE_SIZE该参数指定操作系统中写跟踪文件的块的最大值。

可用此值来限制跟踪文件的空间。

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

(6)OPEN_LINKS该参数指定并发连接到远程数据库的最大用户进程数。

若同时引用多个数据库,则应该增大该值。

例如:同时交替访问A、B和C三个数据库时,若OPEN_LINKS设置为2,则需花费等待连接时间。

此参数只用于分布事务。

若该参数设置为0,则不允许进行分布事务处理。

(7)PROCESS该参数指定同时连接到Oracle服务器上的最大用户进程数。

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

(8)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 参数一起用于调整有归档日志的运行,使其运行速度尽量加快,但不能快到降低性能。

相关文档
最新文档