一. 优化要考虑的方面
1. 程序自身设计;
2. SQL语句优化:
1) 通过 v$librarycache 了解命中率,
这和下面提到的Shared Pool有关系,避免重复解析SQL语句,有助于提高数据库性能。
2) 使用 “物化视图” 提高查询性能。
3. 数据库优化;
4. 操作系统优化;
5. 硬件优化,这里涉及到的硬件主要有:硬盘,内存。
1) 硬盘的读写速度:建议增加硬盘的数量,从而增加每秒的并发操作。 2) 内存大小。
二. 数据库优化
1. 根据数据库的使用方式得出合理的优化策略
1) OLTP:连机事务处理。
需要实时处理大量请求,而每次处请求的数据量都是很小的。
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
性能好坏的重要指标:响应时间与请求处理并发数。
2) OLAP:联机分析处理。
可以简单地理解为在海量数据中得出统计/综合信息,是数据仓库的主要应用。
做OLAP应用的数据库,数据量通常量非常大。
和OLTP不同,OLAP 应用的并发处理量是很低的,所以基本不用考虑并发问题。
而在处理数据量方面,OLAP每次操作所需要处理的数据量通常都是非常大的,这点也和OLTP相反。
性能好坏的重要指标:查询大量数据的速度。
注:由于OLTP和OLAP是两个不同应用方向,所以在优化数据库时应采取不同的优化策略。
2. 内存分配比例:2 : 1 : 1
内存分配的较佳方案:
1) SGA占50%的物理内存,
2) PGA 和 操作系统 各占25%的物理内存,
当然这也不是绝对的,
但是SGA占的物理内存不能超过75%,最多只能占70%,否则Oracle可能会出现各种的异常。
3. SGA中各个POOL的内存分配
1) Shared Pool:要分配多少内存不定,只要满足以下两个条件即可:
- Lib Cache的命中率 > 98%
- Data Dictionary Cache的命中率>85%
2) Large Pool:
- 专用服务器:100-200M
- 共享服务器:Session * (Sort_area_size + 2)
3) Java Pool:无需使用,一般不分配空间。
4) Redo Log Buffer Cache:小于5M,因为它的信息非常重要,应尽快把缓存数据写到文件中。
5) DB_Buffer_Cache:尽量大。
4. 在Oracle 10g中,
如果我们定义了SGA_MAX_SIZE后,
其实我们通过SGA_TARGET让Oracle自动调整SGA的内存分配。
5. Redo log files,Data files,Archive log files尽量放在不同的磁盘上,以均衡I/O。
特别是Redo Log files和Archive log files。
6.Undo Segment容量大小要符合实际应用,不能太小。
7.热点文件特殊处理
1) 分开存放 Index Segment 和 Data Segment。
2) 使用分区表。
8. 索引(Index)问题
1) 适当使用BTREE,BITMAP以及反向索引:不同索引适用于不同的表,设置索引之前要考虑这个问题。
2) 一个表的索引数最多不要超过5个,否则可能影响性能。
3) 定期重构索引。(单边树索引重构时可考虑使用反向索引降低索引树高度)
4) 注意索引是否失效,这一般是比较烂的SQL语句引起的问题。
9. 尽量减少 “全表扫描操作” & “排序操作”
10. 看执行计划有助于各位DBA找出性能问题。
由于oracle10g简化了配置参数,而且提供自动根据数据库访问情况对各类缓存进行分析优化的功能,因此在oracle参数这层进行优化主要有以下几点。
PRE_PAGE_SGA
oracle实例启动时,会只载入各个内存区最小的大小。而其他SGA内存只作为虚拟内存分配,只有当进程touch到相应的页时,才会置换到物理内存中。但我们也许希望实例一启动后,所有SGA都分配到物理内存。这时就可以通过设置PRE_PAGE_SGA参数来达到目的了。
这个参数的默认值为FALSE,即不将全部SGA置入物理内存中。当设置为TRUE时,实例启动会将全部SGA置入物理内存中。它可以使实例启动达到它的最大性能状态,但是,启动时间也会更长(因为为了使所有SGA都置入物理内存中,oracle进程需要touch所有的SGA页)。
LOCK_SGA
为了保证SGA都被锁定在物理内存中,而不必页入/页出,可以通过参数LOCK_SGA来控制。这个参数默认值为FALSE,当指定为TRUE时,可以将全部SGA都锁定在物理内存中。当然,有些系统不支持内存锁定,这个参数也就无效了
SGA_TARGET / SGA_MAX_SIZE
10G中不需要分别制定SGA的每个部分的大小,假设将SGA_TARGET设置为200M,表明SGA最大为200M 所有SGA组件如share pool,buffer cache,large pool,java pool都需从其中分配,oracle会自动为各组件指定初始值,并在运行过程中动态的调整各组件的大小。
当使用SGA_TARGET时,若未设置SGA_MAX_SIZE 或设置小于SGA_TARGET 则SGA_MAX_SIZE等于SGA-TARGET.SGA_TARGET 是可动态调整的,其值不能大于SGA_MAX_SIZE
目前推荐的参数配置:
LOCK_SGA = TRUE
SGA_TARGET >= 4G (在系统物理内存允许的情况下越大越好)
SGA_MAX_SIZE >= 4G (在系统物理内存允许的情况下越大越好)
但是效率并没有什么提高,通过以下两个查询看,命中率分别为99.2%和98.8%,说明在oracle程序层的优化已经达到了较高的效率:
查询高速数据缓存命中率:
select sum(pins) "data access",sum(pins)-sum(reloads) "cache hit",
(1-sum(reloads)/sum(pins)) * 100 "hit rate" from v$librarycache
查询数据字典命中率:
select sum(gets) "dictionary access",sum(gets) - sum(getmisses) "dictionary cache hit",
(1-sum(getmisses)/sum(gets)) * 100 "hit rate" from v$rowcache
分享到:
相关推荐
### Oracle 10g 优化知识点详解 #### 一、Oracle 10g 性能调整与优化概览 在企业级应用环境中,Oracle 数据库的性能直接影响到系统的响应速度和稳定性。Oracle 10g 版本作为一款成熟且广泛应用的企业级数据库管理...
Oracle 10g 优化是数据库管理中的关键环节,它涉及到多个方面,旨在提升数据库的运行效率、降低资源消耗和改善响应时间。本篇资料主要介绍了如何收集性能数据、优化SQL语句和应用程序以及调整Oracle数据库的各种组件...
《Oracle 10g性能优化》一书深入探讨了如何在Oracle 10g数据库环境中实现性能优化,针对企业级应用中的常见问题提供了一系列实用的解决方案。以下是对该主题的关键知识点进行的详细解读: ### 1. Oracle Database ...
### ORACLE10G 性能优化 #### 一、Oracle体系结构 Oracle10g数据库的性能优化首先需要理解其基本的体系结构。Oracle体系结构主要包括实例和数据库两大部分。 - **Oracle实例**:是访问数据库的一种方式,每个实例...
在Oracle 10G和11G版本中,oci.dll扮演了至关重要的角色,为应用程序提供了访问数据库的底层接口。Navicat是一款流行的数据库管理工具,它利用oci.dll来连接并操作Oracle数据库。 Oracle 10G是Oracle公司在2003年...
Oracle 10g是Oracle公司推出的数据库管理系统的一个版本,它主要针对64位操作系统环境设计。Oracle数据库系统在IT行业中有着广泛的应用,尤其在大型企业、金融机构和互联网公司的数据存储和管理方面扮演着核心角色。...
### Oracle 11g与10g软件资源百度云下载相关知识点 #### 一、Oracle数据库简介 Oracle数据库是美国甲骨文公司的一款关系型数据库管理系统,在市场上占有重要的份额。Oracle数据库以其高度的安全性、可靠性和灵活性...
Oracle 10g 是Oracle公司推出的数据库管理系统的一个版本,它在2003年发布,提供了许多增强功能和性能优化,对于数据库管理员(DBA)来说是重要的学习和认证目标。"Oracle OCP"(Oracle Certified Professional)是...
### Oracle10g数据库优化详解 #### 一、基本概念 **1. 实例与数据库** - **实例**: 当数据库启动后,多个进程被加载到内存中并进行协同工作,这些进程及其状态共同组成了一个数据库实例。实例是运行时的概念,...
Oracle 10g包含了许多关键特性,如数据仓库优化、网格计算支持、自动存储管理(ASM)以及Real Application Clusters (RAC)等。其中,ASM提供了一种统一的存储管理方式,简化了数据库的部署和管理。RAC则允许多台...
在Linux环境下安装Oracle数据库10g是一项复杂但必要的任务,对于数据库管理员(DBA)和想要学习如何在Linux平台上安装和配置Oracle数据库的IT专业人员来说,这是一项基础技能。以下是在Linux上安装Oracle 10g的详细...
同时,定期检查和优化系统参数,监控数据库性能,是保持Oracle 10g高效运行的重要环节。 总的来说,安装Oracle 10g在Linux系统上是一项细致的工作,需要对Linux系统和Oracle数据库有深入的理解。通过合理规划、精确...
### Oracle10g在Windows环境下的安装指南 #### 一、Oracle 10g简介 Oracle Application Server 10g是Oracle公司推出的一款集成化的、基于标准的软件平台。它是Oracle 9i Application Server(Oracle9iAS)Release ...
Oracle 10g ODBC驱动程序是连接到Oracle数据库的关键组件,它允许应用程序通过开放数据库连接(ODBC)标准与Oracle 10g数据库进行通信。ODBC是一种接口,使得开发者能够编写一次代码,就可以在多种数据库系统上运行...
Oracle 10g 的优化主要包括索引优化、SQL 优化和存储优化等。用户可以通过调整数据库参数、优化 SQL 语句和存储配置来提高数据库的性能。 Oracle 10g 是一个功能强大且复杂的数据库管理系统。通过了解其架构、特点...
ArcSDE 10.2 for Oracle 10g 和 11g 是Esri公司推出的用于管理和分发地理空间数据的中间件产品,它在Windows平台上提供了与Oracle数据库系统的集成。ArcSDE使得GIS(地理信息系统)软件,如ArcGIS,能够高效地访问和...