Oracle10g数据库性能调优方法研究xqw.docx
《Oracle10g数据库性能调优方法研究xqw.docx》由会员分享,可在线阅读,更多相关《Oracle10g数据库性能调优方法研究xqw.docx(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内容摘要:数据库系统的性能最终了决定数据库的可用性和生命力。大多数数据库系统在运行一段时间后都会存在一定的性能问题,主要涉及数据库硬件、数据库服务器、数据库内存、应用程序、操作系统、数据库参数等方面。因此,基于数据库系统的性能调整与优化对于整个系统的正常运行起着至关重要的作用。数据库性能调整与优化涉及到多个层面,通过统一规划、系统分析做出相应的调整,可以提高数据库的稳定性和可用性,保障系统高效地运行,解决系统瓶颈,节约系统开销,具有良好的应用价值,同时也对理论研究提供了一定的方法指导。基于此,论文将Oracle 10g数据库的内存分配、磁盘I/O以及SQL语句等方面的性能调整与优化问题作为主要
2、研究内容,对其进行了深入地分析和讨论,给出了一般情况下Oracle数据库应用系统的性能调整策略及优化方法。关键词:Oracle 10g 数据库;体系结构;系统全局区;性能调整与优化 AbstractAbstract: The performance of database systems eventually determines their availability and survivability. Most of them will bring about some performance problems more or less after running for a period
3、 of time, which mainly involve database hardware, database server, database memory, applications, operating systems and database parameters, etc. Therefore,performance tuning and optimization of database systems,which concern multiple aspects, are very vital to the normal running of the whole system
4、. We can improve the stability and availability of database, guarantee its high running efficiency, solve system bottleneck, reduce system overhead, obtain considerable applicability and in them meanwhile, provide some guidelines for theoretical research through a unified plan and systematical analy
5、sis to make appropriate adjustment.Based on the above-mentioned idea, the paper principally pays attention to the research on the performance tuning and optimization problems of memory allocation of Oracle 10g, disc I/O, SQL statements, etc, and makes a further analysis and discuss. Besides, it prov
6、ides some performance tuning strategies and optimization approaches of Oracle application system in general condition. Key Words: Oracle 10g Database不Architecture不System Global Area不 Adjustment and Optimization of Performance1 导言网格技术是本世纪初最新和最有吸引力的技术之一,数据库管理系统作为信息系统的基本支撑在信息化建设中扮演着重要的要色。目前的Oracle 10g数
7、据库是业界首个为网格计算而设计的数据库,是一种高效率、可靠性好的适应高吞吐量的数据库解决方案,该方案可让客户将多台标准服务器系统整合成一套可扩充的容错运算平台。然而,随着数据库规模的扩大及用户数量的增加,数据库应用系统的响应速度下降,性能问题越来越突出。Oracle 10g数据库系统体系结构庞大、技术细节繁杂,如何合理有效地建立基于Oracle的数据库系统及如何调整使系统性能达到最优,成为Oracle数据库应用领域的热点问题。本课题通过对Oracle 10g数据库系统的深入分析,设计一套完整的Oracle数据性能评测指标和方法,并针对发现的性能问题制定相应的性能优化策略。 2 Oracle 1
8、0g体系结构Oracle数据管理系统是Oracle实例(Instance)和Oracle数据库构成的。下面是Oracle 10g数据库的体系结构图:图1 Oracle 10g数据库体系结构2.1 ORACLE实例Oracle 实例包括系统全局共享区System Global Are 和后台进程Background Process。2.1.1 系统全局共享区System Global Area(SGA)System Global Area 是一块巨大的共享内存区域,他被看做是Oracle 数据库的一个大缓冲池,这里的数据可以被ORACLE的各个进程共用1。其大小可以通过如下语句查看:SQL se
9、lect * from v$sga;NAME VALUE- -Fixed Size 39816Variable Size 259812784Database Buffers 1.049E+09Redo Buffers 327680主要包括以下几个部分:2.1.1.1 共享池(Shared pool)共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:(1)SQL语句缓冲(Library Cache)当一个用户提交一
10、个SQL语句,Oracle会将这句SQL进行分析(parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL,Oracle会把他的分析结果给保存在Shared pool的Library Cache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL 比第二次运行的SQL要慢一点的原因。下面举例说明parse的时间SQL select count(*) fromscpass ;COUNT(*)-243Elapsed: 00:00:00.08这是在Share_pool 和Data buffer 都没有数据缓冲区
11、的情况下所用的时间SQL alter system flush SHARED_POOL;System altered.清空Share_pool,保留Data bufferSQL select count(*) from scpass ;COUNT(*)-243Elapsed: 00:00:00.02SQL select count(*) from scpass ;COUNT(*)-243Elapsed: 00:00:00.00从两句SQL 的时间差上可以看出该SQL 的Parse 时间约为00:00:00.02。对于保存在共享池中的SQL语句,可以从V$Sqltext、v$Sqlarea中查询
12、到,对于编程者来说,要尽量提高语句的重用率,减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Share pool,提高SQL语句的重用率必须先养成良好的变成习惯,尽量使用Bind变量。(2)数据字典缓冲区(Data Dictionary Cache)显而易见,数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池,供ORACLE内部使用。 2.1.1.2 块缓冲区高速缓存(Database Buffer Cache)这些缓冲是对应所有数据文件中的一些被使用到的数据块。让他们能够在内存中进行操作。在这个级别里没有系统文件,户数据文件,临时数据文件,回滚段文件之分。也就是任何文件
13、的数据块都有可能被缓冲。数据库的任何修改都在该缓冲里完成,并由DBWR进程将修改后的数据写入磁盘2。这个缓冲区的块基本上在两个不同的列表中管理。一个是块的“脏”表(Dirty List),需要用数据库块的书写器(DBWR)来写入,另外一个是不脏的块的列表(Free List),一般的情况下,是使用最近最少使用 (Least Recently Used,LRU)算法来管理。块缓冲区高速缓存又可以细分为以下三个部分(Default pool,Keep pool,Recycle pool)。如果不是人为设置初始化参数(Init.ora),ORACLE将默认为Default pool。由于操作系统寻址
14、能力的限制,不通过特殊设置,在32位的系统上,块缓冲区高速缓存最大可以达到1.7G,在64位系统上,块缓冲区高速缓存最大可以达到10G。2.1.1.3 重做日志缓冲区(Redo log buffer)重做日志文件的缓冲区,对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将它写入磁盘。这些修改信息可能是DML语句,如(Insert,Update,Delete),或DDL语句,如(Create,Alter,Drop等)。 重做日志缓冲区的存在是因为内存到内存的操作比较内存到硬盘的速度快很多,所以重作日志缓冲区可以加快数据库的操作速度,但是考虑的数据库的一致性与可恢复性,数据在重做日志缓
15、冲区中的滞留时间不会很长。所以重作日志缓冲区一般都很小,大于3M之后的重作日志缓冲区已经没有太大的实际意义。2.1.1.4 Java程序缓冲区(Java Pool)Java 的程序区,Oracle 8I 以后,Oracle 在内核中加入了对Java的支持。该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小。2.1.1.5 大池(Large Pool)大池的得名不是因为大,而是因为它用来分配大块的内存,处理比共享池更大的内存,下面对象使用大池:l MTS在SGA的Large Pool中分配UGA。l 语句的并行查询(Parallel Execution o
16、f Statements)允许进程间消息缓冲区的分配,用来协调并行查询服务器。l 备份(Backup)用于RMAN磁盘I/O缓存。2.1.2 后台进程(Background process)后台进程是Oracle的程序,用来管理数据库的读写,恢复和监视等工作。Server Process主要是通过他和user process进行联系和沟通,并由他和user process进行数据的交换。在Unix机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进程;在Windows机器上, Oracle后台进程相对于操作系统线程,打开任务管理器,我们只能看到
17、一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程中的线程。在Unix上可以通过如下方法查看后台进程:ps ef | grep ora_# ps -ef | grep ora_ | grep XCLUATOracle 29431 1 0 Sep 022:02 ora_dbwr_SIDOracle 29444 1 0 Sep 020:03 ora_ckpt_SIDOracle 29448 1 0 Sep 022:42 ora_smon_SIDOracle 29442 1 0 Sep 023:25 ora_lgwr_SIDOracle 29427 1 0 Sep 020:
18、01 ora_pmon_SID2.1.2.1 Oracle系统有5个基本进程他们是:DBWR(数据文件写入进程)LGWR(日志文件写入进程)SMON(系统监护进程)PMON(用户进程监护进程)CKPT(检查点进程,同步数据文件,日志文件,控制文件)(1)DBWR(Database Writer 数据写入进程)将数据缓冲区的数据写入数据文件,是负责数据缓冲区管理的一个后台进程。当数据缓冲区中的一数据被修改后,就标记为dirty,DBWR进程将数据缓冲区中“脏”数据写入数据文件,保持数据缓冲区的“干净”。由于数据缓冲区的数据被用户修改并占用,空闲数据缓冲区会不断减少,当用户进程要从磁盘读取数据块到
19、数据缓冲区却无法找到足够的空闲数据缓冲区时,DBWR将数据缓冲区内容写入磁盘,使用户进程总可以得到足够的空闲数据缓冲区。DBWR的作用:管理数据缓冲区,以便用户进程总能够找到足够的空闲缓冲区。将所有修改后的缓冲区数据写入数据文件。使用LRU(最近最少使用)算法保持缓冲区数据是最近经常使用的。通过延迟写来优化磁盘I/O读写。(2)LGWR(Log Writer 日志写入进程)将日志数据从日志缓冲区写入磁盘日志文件组。数据库在运行时,如果对数据库进行修改则产生日志信息,日志信息首先产生于日志缓冲区。当日志达到一定数量时,由LGWR将日志数据写入到日志文件组,再经过日志切换, 由归档进程(ARCH)
20、将日志数据写入归档进程(前提是数据库运行在归档模式下)。数据库遵循写日志优先原则,即在写数据之前先写日志。(3)SMON工作主要包含:l 清除临时空间l 在系统启动时,完成系统实例恢复l 聚结空闲空间l 从不可用的文件中恢复事务的活动l OPS中失败节点的实例恢复l 清除OBJ$表l 缩减回滚段l 使回滚段脱机(4)PMON主要用于清除失效的用户进程,释放用户进程所用的资源。如PMON将回滚未提交的工作,释放锁,释放分配给失败进程的SGA资源。(5)CKPT同步数据文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一至,这就需要CKPT进程来同步
21、。CKPT会更新数据文件/控制文件的头信息。CKPT工作的主要条件如下:a.在日志切换的时候。b.数据库用Immediate ,Transaction , Normal 选项Shutdown 数据库的时候。c.根据初始化文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET、的设置数值来确定。d.用户触发。2.1.2.2 以下进程的启动需要手工配置(1)ARCH当数据库以归档方式运行的时候,Oracle会启动ARCH进程,当重做日志文件被写满时,日志文件进行切换,旧的重做日志文件就被ARCH进程复制到一个/多个
22、特定的目录/远程机器。这些被复制的重做日志文件被叫做归档日志文件。(2)RECO负责解决分布事物中的故障。Oracle可以连接远程的多个数据库,当由于网络问题,有些事物处于悬而未决的状态。RECO进程试图建立与远程服务器的通信,当故障消除后,RECO进程自动解决所有悬而未决的会话。(3)服务进程Server Process服务进程的分类:a) 专用服务进程(Dedicated Server Process)b) 一个服务进程对应一个用户进程c) 共享服务进程(MultiTreaded Server Process)d) 一个服务进程对应多个用户进程,轮流为用户进程服务。PGA & UGAPGA
23、 = Process Global AreaUGA = User Global Area他保存了用户的变量、权限、堆栈、排序空间等用户信息,对于专用服务器进程,UGA在PGA中分配。对于多线程进程,UGA在Large pool中分配。(4)用户进程User Process在客户端,将用户的SQL 语句传递给服务进程2.2 ORACLE 数据库ORACLE数据库的组成物理操作系统文件的集合。主要包括以下几种。2.2.1 控制文件(参数文件init.ora记录了控制文件的位置)控制文件包括如下主要信息:数据库的名字,检查点信息,数据库创建的时间戳,所有的数据文件,联机日志文件,归档日志文件信息,备
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle10g 数据库 性能 方法 研究 xqw
限制150内