(Oracle管理)Oracle9i 应用系统优化

合集下载

oracle数据库性能调整与优化

oracle数据库性能调整与优化

Oracle9i数据库性能调整与优化V1.0在数据库成熟应用的时代,数据库的性能优化已经演变为一项相当严密的系统工程。

作为企业IT基础设施的核心部件之一,数据库并不是孤立的系统,它与网络、操作系统、存储等硬件系统紧密相连,这种与其他IT部件的多重连接特性决定了数据库性能优化是一门综合技术。

数据库性能优化的实现路径和IT系统管理架构越来越密不可分。

Oracle9i数据库在内部特性方面有着非常大增强,其中一个最令Oracle DBA兴奋莫过于可以动态设置全部Oracle SGA控制参数。

与8i不同是,原来都将初始化参数放到一个文本文件中,并且在数据库启动时候读取,Oracle9i却可以通过ALTER DATABASE 和ALTER SYSTEM命令复位全部Oracle参数。

在9i前,如果想对Oracle数据库处理模式作一些改变话,Oracle管理员必须关闭数据库并且重新设置INIT.ORA文件中参数,然后重新启动数据库。

对于白天使用OLTP 模式运作,晚上切换到数据仓库模式Oracle数据库来说,这种重新设置是经常做。

对于需要停止和重新启动Oracle数据库来修改参数来说,Oracle9i在这方面有明显加强,它令实现数据库连续可用目标变得更加简单。

定义:SGA:(System Global Area)是Oracle Instance的基本组成部分,在实例启动时分配。

是一组包含一个Oracle实例的数据和控制信息的共享内存结构。

主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。

它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

理论上SGA可占OS系统物理内存的1/2——1/3。

SGA几个很重要的特性:1、SGA的构成——数据和控制信息,我们下面会详细介绍;2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和enquence控制);3、一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区,但实例之间不能相互访问对方的SGA区。

Oracle 8,9优化

Oracle 8,9优化

库缓存区(library cache)存储SQL语句、分析代码和 执行计划 字典缓存区(data dictionary cache)存储表、列和其 他对象的定义和权限 大小由SHARED_POOL_SIZE参数确定
数据块缓存区
Data buffer cache
存储最近被使用到的数据块 每个缓存区大小由DB_BLOCK_SIZE参数确定 缓存区数量由DB_BLOCK_BUFFERS参数确定
硬件配置——内存 内存 硬件配置
内存一定大,512M是起点 增加内存性价比极高 5-15纯财务用户建议 1G 15用户以上建议2G
硬件配置
硬盘
最好用SCSI硬盘——稳定,高速(万转) IDE硬盘则选择7200转,8MCache 有条件的作Raid1,冗余镜象 选择硬件RAID超过软件RAID 带有硬件RAID控制器将极大提升速度和稳定性 日志文件不要放在RAID 5卷上,因为RAID 5读性能高而 写性能差
如果使用,要尽量减小壁纸文件大小。 如果使用,要尽量减小壁纸文件大小。
应用程序响应设置
服务器则选择: 后台服务” 服务器则选择:“后台服务” 模式 个人用则选择: 应用程序” 个人用则选择:“应用程序” 模式
虚拟内存设置
虚拟内存的值通常设定为物理内存的2~2.5倍, 最大值和最小值一样。 过犹不及——虚拟内存设置过大,降低读写效率
core_dump_dest = E:\GAAC\cdump
指定核心转储位置的目录名
initGAAC.ora示例 示例2 示例
db_name = GAAC
一个数据库标识符,任何有效名称最多可有 8 个字符,默认为 GAAC。
instance_name = GAAC
在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库 例程。INSTANCE_NAME 不应与 SID 混淆, 它实际上是对在一台主 机上共享内存的各个例程的唯一标识。

Oracle9i性能调整

Oracle9i性能调整

create or replace function GET_SQL(V_SQLADDRESS in RAW, V_SQLHASHVALUE in NUMBER) return varchar2 is Result varchar2(2000); CURSOR C1 IS SELECT A.SQL_TEXT FROM V$SQLAREA A WHERE A.ADDRESS=V_SQLADDRESS AND A.HASH_VALUE=V_SQLHASHVALUE; begin FOR REC IN C1 LOOP RESULT:=RESULT||REC.SQL_TEXT; END LOOP; return(Result); end GET_SQL;
索引与性能
基于函数的索引 Create index ind_name on animal (upper(animal_name)); CBO, query_rewrite_enable=true query_rewrite_integrity=trusted 分析相应的表,列,所有索引;
Bad sql的定位
索引与性能
Index的原理(通常指B树) 根据键值来确定rowid,根据rowid来定位记录 Index的平衡性 DML对index的影响,而键值不会被删除。 Index的效率 可选择性的问题 重组的必要性 效率以及DML的影响 索引组织表(IOT)原理 既是表又是索引。 适用场合:静态的所有列皆为pk的大表
如何跟踪一个session
10046 event(level n)+tkprof n=4:enable sqltrace+variable bind; n=8:enable sqltrace+wait event; n=12: n=4+n=8

Oracle 9i 整体性能优化概述草稿之一 调整争用

Oracle 9i 整体性能优化概述草稿之一 调整争用

2.2.2是否存在latch争用
select event,total_waits,time_waited
from v$system_event
where event = ‘latch free’;
如:
EVENT TOTAL_WAITS TIME_WAITED
---------- ----------- -----------
? library cache:需要优化library cache。
? cache buffers LRU chain:管理database cache buffers上的LRU List上的块,自由缓冲区列表。此争用有两种可能:
- 导致严重的全部扫描的SQL语句或执行计划。SQL需要优化。
- 脏缓冲区写盘database writer未能跟上I/O请求。优化磁盘I/O。
比如如果应用程序有许多频繁插入行的用户,在试图访问该表的free list就可能会经历等待。
2.3.2是否存在free list争用
select event,total_waits,time_waited from v$system_event
where event = ‘buffer busy waits’;
而lock,在遇到问题的时候,可作为维护参考,平时不进行太多的维护(或从应用上考虑优化)。(除了定期去$ORACLE_HOME/admin/$ORACLE_SID/udump查看死锁情况外)
2.2诊断latch竞争
2.2.1概念
Latch是简单的、低层次的序列化技术,用以保护SGA中的共享数据结构,比如并发用户列表和buffer cache里的blocks信息。一个服务器进程或后台进程在开始操作或寻找一个共享数据结构之前必须获得对应的latch,在完成以后释放latch。不必对latch本身进行优化,如果latch存在竞争,表明SGA的一部分正在经历不正常的资源使用。

基于Oracle9i的数据库性能优化策略研究

基于Oracle9i的数据库性能优化策略研究

al c e独有 的特性 一方 面提 高 了速 度和 性 能 , 一方 面 另
是从优 化数据 库性能的 角度 来讲 , 往往 故意增 加一些
句, 对查询层次数据十分高效 。
冗余数 据 , 以避免 多表连接 查询操作造 成的 响应时 间
缓慢的问题 。比如 : 冗余一个姓名字段 , 对在 存有大量
元, 减少冗余节约存 储 空间已不 重要。 目前 已进 入软 件主导的时代 , 因此 , 最容 易理解 , 发最快 , 开 维护最 简 单, 查询统计 性 能最快 的数据库 结构 才是 最好 的。在 保证数据完 整性 , 一致 性 不 受威 胁 , 些冗余 不足 为 有
虑。
3 Oa l i rc 9 性能优 化的主要策略 e
从几个方面分别论述 了如何对 Oa i i 系型数 据库 r e 关 c9
来 加快 日志恢复 的速度 , 过对 它们的监控 分析提高 通
进行性能优化 , 以使数据库应用系统 能高效地运 行。
数据库 系统 对 内存 的利 用率 , 同时还 应兼 顾系统 平台
资源 ( : 如 操作 系 统、 台进 程 ) 内存 的需 求。 另外 后 对 还 有其他一些参 数 ( 滚段 , 序 、 引类 型 ) 回 排 索 也需 要
的角度 去调整性 能 , 只能 对运行环境 方面进行 性能 的 优化。 比如 : 一台专用数据库服务器 比带有 We b服 务
的操作 系统 的数据库服务器 , 性能要高很 多。
于7 0年代 , 它是促使 D MS进步 的重要动 力之一。然 B
而 , 目前 国 内计 算机 市 场 价格 一个 10 以 2 G硬 盘 8 0 0
2 5 操作系统的优化 .
操 作 系统 是数 据库 管理 系统表 演运 行 的直 接 舞 台, 它能够提供给数 据库 管理 系统 多少 资源 , 或者 其 自 身减 少 资源的 占用 , 都会直接 给数 据库 的性 能带来益 处 。尤其对 于外 包开 发的软件 , 用户 无法从 应 用软 件

Linux上超大型Oracle9i数据库优化探索

Linux上超大型Oracle9i数据库优化探索

【 摘 要】 : 本文根据作者的实际工作, 从硬件 系统性能提升、 数据模型设计优化及查询库进 行优 化 , 总 结 出 Or a c l e数据 库优 化调 整 的一般 方 法。
【 关键词 】 : Or a c l e 袁分 区
1 . 1 . 2反规 范化
经 过 规 范化 处理 的数据 模 型 在 数据 仓 库 ( O L A P )
本文 中的 超 大 型 O r a e l e 9 i 数 据 库 系 统 已达 1 3 T B 型应 用 时 , 有 时并 不 理想 。规 范 化 处理 的 数据 模 型形
的可 用 容 量 , 实 际 占用 数 据 达 到 7 . 3 T B ; 除此之外, 数 成 了一系 列 的小表 , 且各 表之 间 的关系 很 复杂 。关系
1 . 1 . 1规 范化
1 . 2表 空 间设计 原 则
超 大 型 数据 库 数 据 量 巨大 , 总体 数 据 量 都 达 几 T B , 甚 至更 大 , 因而 数 据不 适 于 仅 存储 在 几个 表 空 间
数据库的设计一般都遵循规范化的标准,在关系 中 。 如 果那样 , 每 个表 空 间会 因容量 太大 、 数据 文件 太
据 还 需被实 时查询 , 并频繁 导入 新数据 。 该 数据库 服务 越 复 杂 , 表 连 接操 作越 频 繁 。数 据仓 库 中 为 了完 成大 器 采用 I B M 的 X3 6 5 0 ,硬件 主 要包 括 两路 双 核 3 G H z 量 数据 的处理 , 需 要应 用 程序 对 这些 表 进 行动 态 的互 的X e o n处 理 器 、 8 G 内存 及 1 4 6 G B的 R A I D1本 地 硬 连操作 , 这 就要在 不 同 的表 中进 行 多次 的 I / O操 作 。 所 盘 ,外 接容 量 为 3 T B的 I B M D S 4 0 0存 储 。本 系统 从 以 , 在 数据 库 的设 计过 程 中有 时 故 意保 留非规 范化 约 2 0 0 7年 开始 建设 , 服 务器 安 装 6 4位 的 l i n u x A s 4操 作 束 , 或 者 规 范化 以后 又 反 规 范 , 提 升 了数 据 库 的查 询 加 快数 据库 系 统 的响应速 度 。 系统和 O r a e l e 9 i 的9 . 2 . 0 . 6版本 软 件 。系 统使 用 初 期 , 性能,

Oracle9i的体系结构

Oracle9i的体系结构

UGA(用户全局区)
总结词
每个用户会话专用的内存区域,用于存储该 用户会话的数据和控制信息。
详细描述
UGA(User Global Area)是每个用户会话 专用的内存区域,用于存储该用户会话的数 据和控制信息。它包括多个组件,如会话缓 冲区、游标区和应用程序上下文等。这些组 件为每个用户会话提供所需的内存资源,以
归档日志文件和联机日志文件
归档日志文件
归档日志文件是将重做日志文件进行归 档的文件,通常用于备份和恢复操作。 在Oracle数据库中,当重做日志文件被 填满并切换到新的重做日志文件时,旧 的日志文件会被归档。
VS
联机日志文件
联机日志文件是重做日志文件的在线部分 ,用于记录当前正在进行的修改操作。联 机日志文件对于数据库的恢复和操作至关 重要,必须保持正常运行。
客户端软件允许用户连接到数据库服 务器,执行查询、更新和提交事务。 它还提供用户界面和应用程序开发框 架,以便开发人员构建与数据库交互 的应用程序。
网络协议
网络协议是用于在客户端和数据库服务器之间传输数据的标准和规则。Oracle9i支持多种网络协议, 如TCP/IP、Net8和名字服务等。
通过使用网络协议,客户端和数据库服务器可以在不同的操作系统和网络环境中进行通信。协议还提 供数据加密和身份验证功能,以确保数据的安全性和完整性。

是段中连续的数据块集合,一个段可以由一个或多个区组成。
管理
Oracle自动对段和区进行管理,通过自动段空间管理或手动段 空间管理方式。
数据库块
数据库块
是Oracle数据库中最小的数据存储单位,每个块的大 小是固定的。
特点
数据库块包含数据和元数据,如行标识符、列数据等。

浅议如何调整优化Oracle 9i数据库的性能

浅议如何调整优化Oracle 9i数据库的性能

浅议如何调整优化Oracle 9i数据库的性能胡铁峰【摘要】随着计算机网络技术的不断发展,其在各个领域中的应用也越来越广泛,与此同时数据库也随之获得了广泛应用。

在互联网上的诸多数据库当中,Oracle 9i数据库以其自身诸多的优点,受到业界一直的好评和认可。

然而,在实际运行过程中,经常会出现一些瓶颈问题,从而影响了Oracle 9i数据库的运行。

为此,应采取相应的策略对Oracle 9i数据库的性能进行调整优化。

首先对Oracle 9i数据库进行概述,进而分析了Oracle 9i数据库常见的资源问题,并在此基础上提出Oracle 9i数据库的优化调整策略。

【期刊名称】《黑龙江科技信息》【年(卷),期】2012(000)022【总页数】1页(P86-86)【关键词】Oracle;9i;数据库;优化调整;性能【作者】胡铁峰【作者单位】中国联合网络通信有限公司长春市分公司,吉林长春130000【正文语种】中文【中图分类】TP311.13Oracle 9i是当前业界内最为简单、完整、智能化的用于互联网上协作各种应用的软件基础架构。

其实质上就是Oracle 9i Database、Application Server以及Developer Suite的完整集成。

现如今,随着软件逐渐成为一种托管服务,Oracle9i以其在自身的高可靠性、高所伸缩性以及高智能化,将会成为互联网上高质量电子商务服务实现的关键软件。

Oracle 9i在8i的基础之上又增添了许多新的功能和特性,这些功能和特性主要体现在以下几个方面上:其一,实现连续的数据可用性。

Oracle 9i极大程度地扩展了其在互联网数据库可用性方面的地位,具体包括:全球领先的数据保护环境、联机数据演变、准确的数据库修复以及自我服务错误更正等功能;其二,可伸缩性和性能。

Oracle 9i不仅允许电子商务扩展到千万用户,而且用户每小时都能完成数百万的事物处理。

具体包括:可伸缩的绘画状态管理、电子商务优化等等;其三,提供端到端的安全体系结构。

0racle9i数据库性能调整与优化

0racle9i数据库性能调整与优化
p o e s s a d w y f e o ma c u i g o a l aa a e r c s e n a so r r n e t n n n Or c e d t b s . pf
Ke r s d tb s ; r ce DBMS a piain p r r n et nn y wo d : aa a e O a l; p l t ; e o ma c ig c o f u
DAI Xi o p n a - ig
( ho o C m u r c ne A hi n esy f eho g, a nhn 4 0 2 C i ) S ol f o pt i c, nu U i rt o Tcnl M sa 30 , h a c eS e v i o y a 2 n
o to s ue gn rl .Many it d cs hw o dutme r aa ees n O al a bs o f me d i sd eeal h y il nr u e o t js o a moy p rm t o rce dt ae t r a
a c mpih te p r r n eo t z t n o h aa ae Us sa ra nie a piain s se t l srtste c o l h ef ma c pi ai fte d tb s . e e lo l p l t y tm o iu tae h s o mi o n c o l
性能满意的数据库 。
Oa e r 数据库是非常优 秀的大型关系数据库系统 , , l c 同时 也是非常复杂和灵活的一种大型数据库 , 它提供 丰富的工具和手段对其进行监控和分析。 通常, 需要从 Oal数据库的体系结构 、 r e c 物理分布等角度 , 围绕数据

oracle优化方案

oracle优化方案

oracle优化方案Oracle优化方案1. 引言Oracle数据库是一种常用的关系型数据库管理系统,广泛应用于企业级应用程序。

随着数据规模的增长和业务需求的提升,数据库优化成为提高系统性能和响应速度的关键要素之一。

本文将介绍一些常见的Oracle优化方案,帮助您优化数据库性能。

2. 查询优化查询是数据库最常用的操作之一,因此查询优化是数据库性能优化的重要组成部分。

2.1 创建索引索引可以加快查询的速度,特别是对于经常被查询的列。

通过使用CREATE INDEX语句可以创建索引,例如:```sqlCREATE INDEX idx_name ON table_name (column_name);```2.2 使用合适的查询语句使用合适的查询语句可以减少不必要的资源消耗。

避免使用SELECT * 来获取全部列的数据,只查询需要的字段。

另外,避免使用模糊查询(如使用LIKE ‘%value%’)和通配符查询,因为它们会导致全表扫描。

2.3 分析执行计划执行计划是Oracle数据库在查询过程中生成的优化器的一个输出结果,可以帮助我们理解查询过程中的资源消耗和性能瓶颈。

可以使用以下命令获取执行计划:```sqlEXPLAIN PLAN FOR [your_query];SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);```分析执行计划后,可以根据性能瓶颈进行优化。

3. 数据库配置优化在数据库配置的过程中,有一些参数可以调整以提高数据库的性能。

3.1 SGA设置SGA(System Global Area)是Oracle数据库中的一个关键组件,用于缓存数据和SQL 查询执行计划。

通过适当调整SGA的大小,可以提高数据库的性能。

以下是一些与SGA相关的参数:- DB_CACHE_SIZE:设置数据库缓冲区的大小,最大限度地利用内存。

- SHARED_POOL_SIZE:设置的共享池的大小,用于缓存SQL查询和执行计划。

oracle性能调优篇--Oracle9i 的查询优化

oracle性能调优篇--Oracle9i 的查询优化

oracle性能调优篇----Oracle9i 的查询优化本文描述了Oracle 的查询优化程序,它是数据库的关键组件,能让Oracle 的用户获得极佳的执行性能。

Oracle 的查询优化技术在功能上无与伦比,本文详细讨论了查询优化的所有重要领域。

简介什么是查询优化程序?查询优化对于关系数据库的性能,特别是对于执行复杂SQL 语句的性能而言至关重要。

查询优化程序确定执行每一次查询的最佳策略。

例如,查询优化程序选择对于指定的查询是否使用索引,以及在联接多个表时采用哪一种联接技术。

这类决策对SQL 语句的执行性能有很大的影响,查询优化对于每一种应用程序都是关键技术,应用程序涉及的范围从操作系统到数据仓库,从分析系统到内容管理系统。

查询优化程序对于应用程序和最终用户是完全透明的。

由于应用程序可能生成非常复杂的SQL 语句, 查询优化程序必须精心构建、功能强大,以保障良好的执行性能。

例如,查询优化程序可转换SQL 语句,使复杂的语句转换成为等价的但执行性能更好的SQL 语句。

查询优化程序的典型特征是基于开销。

在基于开销的优化策略中,对于给定查询生成多个执行计划,然后对每个计划估算开销。

查询优化程序选用估算开销最低的计划。

Oracle 在查询优化方面提供了什么?Oracle 的优化程序可称是业界最成功的优化程序。

基于开销的优化程序自1992 年随Oracle7 推出后,通过10 年的丰富的实际用户经验,不断得到提高和改进。

好的查询优化程序不是基于纯粹的理论假设及谓词在实验室中开发出来的,而是通过适合实际用户需求开发和磨合出来的。

Oracle 的查询优化程序比任何其他查询优化程序在数据库应用程序的应用都要多,而且Oracle 的优化程序一直由于实际应用的反馈而得到改进。

Oracle 的优化程序包含4 大主要部分(本文将在以下章节详细讨论这些部分):SQL 语句转换:在查询优化中Oracle 使用一系列精深技术对SQL 语句进行转换。

Oracle 9i 数据库性能调优技术-les15

Oracle 9i 数据库性能调优技术-les15

Bitmap Indexes
• • • • •
Used for low-cardinality columns Good for multiple predicates Uses minimal storage space Best for read-only systems Good for very large tables
15-13
Copyright © Oracle Corporation, 2002. All rights reserved.
Reverse Key Index
KEY ----1257 2877 4567 6657 8967 9637 9947 ...
ROWID ------------------0000000F.0002.0001 0000000F.0006.0001 0000000F.0004.0001 0000000F.0003.0001 0000000F.0005.0001 0000000F.0001.0001 0000000F.0000.0001 ...
Oracle Enterprise Manager: Index Management
15-16
Copyright © Oracle Corporation, 2002. All rights reserved.
Index-Organized Tables
Regular table access
15-11
Copyright © Oracle Corporation, 2002. All rights reserved.
Creating and Maintaining Bitmap Indexes
SQL> CREATE BITMAP INDEX departments_idx 2 ON hr.departments(manager_id) 3 STORAGE (INITIAL 200K NEXT 200K 4 PCTINCREASE 0 MAXEXTENTS 50) 5* TABLESPACE indx;

Linux操作系统下Oracle9i数据库SQL语句跟踪、发现、优化方法

Linux操作系统下Oracle9i数据库SQL语句跟踪、发现、优化方法

Linux操作系统下Oracle9i数据库SQL语句跟踪、发现、优化方法1前言以前看了很多关于SQL语句的优化方法的次料,可就是没有看到过关于怎样发现程序中的问题SQL语句类的资料(可能是我没找到正地方)。

由于本人刚来到这家公司不长时间,所以对程序也不熟悉,业务也不熟悉,我的职位是数据库管理员,所以,好多以前遗留的问题都跑到我这来了,也可说只要用户反应系统漫的问题,都会跑到我这来(通过实践证明,确实应该跑到我这来,呵呵~~)。

说实在,我是第一次做这么专业的程序优化(主要是写在程序里的语句优化)工作。

刚开始的时候我想用优化数据库参数方式来解决问题,可是参数(SGA)已经无法在优化了。

后来还是从SQL语句上下手,通过一个非常笨的办法(上用户那调查明确具体漫的功能模块;查看程序源码找程序中相关的语句,采用一条一条的在PL/SQL中测试,来找到问题所在;分析优化办法,主要就是建索引,调整语句的书写格式)进行问题语句的查找,也解决了一些问题,就是操作起来太麻烦了,语句的性能评估也不专业,只是看执行时间来断定语句的性能。

有一次很好的机会和一个比较老道的DBA接触上了,哈哈~~不能浪费机会,多问几个问题,学到了不少知识。

一是知道了在10G的EM中看顶级会话就可以知道那些语句执行的漫,太好了,以后不用在找程序了;二是知道在PL/SQL中把语句粘进去,按F5可以对语句性能进行分析(以前自己真按过这个键,但是不知道什么意思),能查看到用没用索引、是不是全表扫描、使用了多少系统资源(COST越小越好);三是索引问题,因为我们有的表上有8个索引,而且大多都是复合索引,而且还有多个字段在不同的索引中,自己感觉这样也是不合理的,又和他确认了一下,还真就不合理;四是……其实,在这之前我刚刚学会用ORACLE自带的工具autotrace进行分析。

刚学会一个省事的捕获方法,难题又来了。

呜呜呜~~ORACLE是9i的,没有EM,这可怎么办啊!其实,这次不是去给优化的,而是排除服务器故障的,用户说以前用的很好,最近总是用两周左右服务器中的数据库就无法连接了,重启操作系统就好了,用一段时间就又不行了,应用一起来硬盘灯闪的也很频繁。

Oracle9i中查询优化技术的分析

Oracle9i中查询优化技术的分析

Oracle9i中查询优化技术的分析
余俊新;孙涌
【期刊名称】《计算机技术与发展》
【年(卷),期】2006(016)004
【摘要】在一个企业级信息系统中,数据库端的性能对整个系统的有效运行起着关键的作用,而在数据库的性能上,数据查询的效率占据着十分重要的地位.文中根据Oracle9i中的数据查询机制以及优化器的特性,探讨了Oracle9i中数据库查询语句的优化,并着重对Oracle9i中的几种表连接技术进行了分析比较,给出了在实际开发中如何编写高效率的SQL查询语句.通过文中的分析结果,实现了应用系统在面临大量的数据时,能够快速对数据进行查询,保障系统的可靠运行.
【总页数】4页(P93-95,98)
【作者】余俊新;孙涌
【作者单位】苏州大学,计算机科学与技术学院,江苏,苏州,215006;苏州大学,计算机科学与技术学院,江苏,苏州,215006
【正文语种】中文
【中图分类】TP311.5
【相关文献】
1.传感器网络中的多查询优化技术研究 [J], 程文静
2.Oracle中SQL查询优化技术在ERP数据中的应用研究 [J], 马剑波
3.Oracle9i分区技术在BOSS数据库中的应用研究 [J], 邓德贵
4.Oracle中查询优化技术的应用 [J], 田彬;
5.查询优化技术及SQL Server2000的查询优化方法 [J], 辜小红
因版权原因,仅展示原文概要,查看原文内容请购买。

基于Oracle9i的数据库性能优化策略研究

基于Oracle9i的数据库性能优化策略研究

基于Oracle9i的数据库性能优化策略研究
王振铎;王振辉
【期刊名称】《计算机系统应用》
【年(卷),期】2006(000)006
【摘要】本文从Oracle9i的系统体系结构入手,分析了影响Oracle9i数据库性能的主要因素,主要从软件部分进行优化,操作系统、数据库结构规划、数据库表空间,回滚段、临时表空间、内存、磁盘I/O、SQL语句,应用程序,存储过程等多个方面给出了具体的优化策略.参考资料1.史森、夏丽丽等译,Oracle数据库开发指南,清华大学出版社,1998.2.宋瀚涛、李新社,数据库编程与应用,电子工业出版社,1998.3.范剑波、张晓云,网络数据库技术与应用,西安电子科技大学出版社,2004.
【总页数】4页(P76-79)
【作者】王振铎;王振辉
【作者单位】西京学院经济系,陕西,西安,710123;西北工业大学软件学院,陕西,西安,710065
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于NVRAM的内存数据库性能优化策略研究与设计 [J], 楚天骄;林中
2.基于Oracle9i关系数据库性能优化策略 [J], 熊曾刚;张学敏;王时绘
3.ORACLE9i数据库系统性能优化研究与实践 [J], 杨志和;刘细武;王岳斌;胡虚怀
4.Oracle9i数据库的性能优化方法 [J], 陈迪;陈琴
5.Oracle9i数据库开发(一)——通过JDBC API连接Oracle9i数据库 [J], 何致亿因版权原因,仅展示原文概要,查看原文内容请购买。

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

1、优化前提应用系统方案制定准确,对应用系统运行环境分析合理、正确,在数据库服务器性能、存储空间、网络带宽等方面的配置能够达到系统运行要求.2、优化目标● 响应时间与吞吐量平衡● 临界资源2.1 响应时间与吞吐量平衡根据应用类型的不同,性能优化的目标不同:在线事务处理系统OLTP)把吞吐量定义为性能指标;决策支持系统(DSS)把响应时间定义为性能指标。

响应时间响应时间=服务时间+等待时间系统吞吐量系统吞吐量指在给定的时间内所完成的工作量。

有以下两种技术:● 以相同的资源来完成更多的工作(减少服务时间);● 通过减少整个响应时间来更快完成工作。

等待时间当竞争增强的时候,某个任务的服务时间也许保持不变,但它的等待时间将增长。

我们开发的系统一般为OLTP和DSS的复合系统,侧重于OLTP,在硬件允许的情况下最好能够将运行数据库、分析数据库分离。

2.2 临界资源诸如CPU、内存、I/O容量、网络带宽等资源,都是减少时间的关键因素。

性能好坏取决于以下因素:● 可用资源的数量● 需要该资源的客户方的数目● 客户方等待资源所消耗的时间● 客户保持资源的时间长短随着请求单元的增加,服务时间也增加。

为了处理这种情形,用户可以选择:● 通过限制请求的速率,从而维护可接受响应时间● 还可通过增加资源数目,如CPU和硬盘(增加资源的前提是应用系统设计良好,并且已经做了充分的优化)3、优化阶段从实际做的项目过程来看,除了系统安装优化外,系统优化往往都是在系统实施、运行时才考虑,其实到这阶段做系统优化的局限性比较大,因为系统架构设计都成型、固化,大幅度调整设计的代价非常昂贵,一般只能在局部领域做优化,只能通过重新分配内存或优化I/O来或多或少地提高性能,实际上优化应该贯穿系统设计、开发、安装、测试、运行整个过程。

3.1 设计阶段为了达到最佳的效果,优化工作应当从设计阶段进行,而不是在系统实施后进行。

在数据库设计阶段,个人认为需要注意如下几个方面:● 业务对象不能建立在系统表空间;● 索引表空间和业务表空间分开;● 将LOB类型的字段与其它的类型分开;● 根据应用系统功能确定是否要采用冗余字段;● 正确的主键字段的选择,建议采用数字,不推荐使用复合主键;3.2 开发、测试阶段在开发实现阶段,个人认为需要注意如下几个方面:● 执行sql使用变量绑定的方式,尽可能的保留在共享内存中,提高sql命中率;● 多表关联查询时采用有效的连接顺序;● 尽可能的降低客户端和服务器的网络数据交互,某个业务功能点需要频繁和数据库交互的,建议采用存储过程、临时表实现;● 根据查询条件建立必要的索引,查询条件中使用oracle函数建立相对应的函数索引,数据值范围较小的采用位图索引● 多张表关联查询时,有时可采用先查询符合条件对应的表中关键字,然后通过关键字再查询对应表中相关信息;● 频繁访问,较少更新的数据量较小的表信息可采用缓存的方式;● 在实现批量更新、插入时,要采用jdbc批量执行方法,并且调整对应的fetchsize参数。

在测试阶段,应该模拟实际运行环境,测试出相关性能较差的功能点。

因为在设计、开发阶段往往因为并发用户少、数据量小,很多性能问题显现不出来,如果软件测试充分,很多性能问题都可以显现出来,现在有很多优秀的软件测试工具,如LoadRunner、Robert在做压力测试方面都比较方便、优秀。

尽量将系统因程序设计、编码不当导致的性能问题暴露在测试阶段。

3.3 安装阶段一般在安装生产数据库时,我们根据系统最早的规划,集合软、硬件环境,需要调整操作系统以及数据库参数,3.3.1操作系统交换区交换区是Oracle的一项基本的要求。

可以根据Oracle的发行要求来确定。

一般交换区大小的要求是该服务器内存的2倍至4倍之间,建议是内存的4倍3.3.2操作系统内核参数3.3.3 oracle 文件设置当服务器平台已完成操作系统的安装后,就应该开始认真的考虑下面的问题:● 是否采用裸设备实际应用的生产系统基本都是采用裸设备,使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。

● 安装点的考虑Oracle的安装点就是指数据文件、日志文件和控制文件的安置路径,为了使系统在以后运行性能达到优化,建议将数据文件、日志文件和控制文件的安置路径与数据库系统存放在不同的路径上。

最好将数据文件、日志文件和控制文件分别存放在不同的路径。

● SYSTEM表空间对应数据文件在自定义安装会话中,建议你根据需要设置system表空间所对应的数据文件的大小。

一般要设置比默认值的2倍。

该数据文件的大小最好是在300MB至500MB间。

因为数据文件太小不利于系统的运行。

● 临时表空间对应的数据文件临时表空间对应的数据文件可以根据将来系统存放的应用的处理情况来定。

比如系统将来可能要经常进程排序处理,则需要设置较大的临时表空间,也可能需要再建立新的临时表空间。

这里建议临时表空间的数据文件在100MB至300MB左右。

● 回滚段表空间对应的数据文件9i回滚表空间都是系统管理,初始值也是根据系统事务量预估计的值,实际到运行阶段如果系统常出现ora-01555错误的时候,可能就需要增加回滚表空间的大小。

● 日志文件的大小日志文件的大小对于Oracle系统的运行也是相当重要。

默认值是太小。

实际根据事务繁忙预估计日志大小,没有固定的具体值范围,建议重做日志切换时间不能过短也不能过长,一般在20-40分钟左右。

该参数可以在系统运行期间根据数据库系统日志切换时间重新调整,控制文件的大小。

● 数据库块的大小如果你的应用系统是OLTP的话,可以采用较小的数据库块。

如果是DSS类型的应用系统,则可以设置较大的数据库块,目前Oracle产品所允许的数据库块可以是2KB至64KB之间。

无论你选择较大的块或较小的块,它的值都必须是2的整数倍,比如2048,4096,8192等。

但需要注意的是,如果操作系统为64位,则可选择较大的块。

● 字符集的选择字符集是Oracle系统专门支持的一项技术。

详细请参考另外的章节。

一般不要与另外的已经存放的Oracle系统的字符集产生冲突即可。

但如果你的环境是一个新的平台,不需要与其它平台进行数据交换的话,建议选择默认的字符集。

这样可以利于将来的修改。

3.3.4数据库启动参数3.4.1.2 实时查找如果需要实时的查找性能隐患的相关sql,通过v$session_wait,v$session,v$sqltext_with_newlines三张动态视图就可以基本查找到相关的sql,脚本如下:select sql_text ,sw.event from v$sqltext_with_newlines st,v$sessionse,v$session_wait sw where st.address=se.sql_address andst.hash_value=se.sql_hash_valueand se.sid =sw.sid and(sw.event = 'buffer busy waits' orsw.event = 'enqueue' orsw.event = 'free buffer waits' orsw.event = 'global cache freelist wait' orsw.event = 'latch free' orsw.event = 'log buffer space' orsw.event = 'parallel query qref latch' orsw.event = 'pipe put' orsw.event = 'write complete waits' orsw.event like 'library cache%' orsw.event like 'log file switch%') order by st.hash_value,st.piece;3.4.2分析提取出sql以后就可以进行分析,主要采用分析执行计划的方式。

个人一般喜欢如下的方式进行分析:● 生成计划表(初次)以sys用户执行脚本${oracle_home}/rdbms/admin/utlxplan.sql,● 创建公用同义词,方便在每个用户下生成执行计划(初次)Create public synonym plan_table for plan_table;Grant all on plan_table to public;● 每次分析时设置sqlplus环境变量Set timing onSet autotrace traceonly● 查看相关sql执行计划其他客户端软件pl/sql developer,toad 分析执行计划都比较方便。

● 执行计划路径解释3.4.3优化Oracle运行阶段优化的更多是对sql的优化,个人理解工作主要是:分析性能较差sql;调整性能较差的sql的实现方式,协助程序员更改相关程序;对相关的查询条件建立合理的索引;根据需要合理的更新表、索引的程序信息;3.4.3.1 oracle 优化器●优化器优化方式Oracle的优化器共有两种的优化方式,即基于规则的优化方式(Rule-BasedOptimization,简称为RBO)和基于代价的优化方式(Cost-Based Optimization,简称为CBO)。

A、RBO方式:优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则。

比如我们常见的,当一个where子句中的一列有索引时去走索引。

B、CBO方式:依词义可知,它是看语句的代价(Cost)了,这里的代价主要指Cpu和内存。

优化器在判断是否用这种方式时,主要参照的是表及索引的统计信息。

统计信息给出表的大小、有少行、每行的长度等信息。

这些统计信息起初在库内是没有的,是你在做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些我们应及时更新这些信息。

在Oracle8及以后的版本,Oracle推荐用CBO的方式。

●优化器的优化模式(Optermizer Mode)Rule:走基于规则的方式。

Choose:默认的情况下Oracle用的是这种方式,不建议修改该参数。

指的是当一个表或索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别的小,而且相应的列有索引时,那么就走索引,走RBO的方式。

First Rows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。

相关文档
最新文档