动态性能视图

合集下载

Oracle等待视图v$session_wait

Oracle等待视图v$session_wait
SQL*Net message to client 2 0 2
db file scattered read 2 0 2
V$SESSION_EVENT
本视图记录了每个session的每一项等待事件。由上文所知V$SESSION_WAIT显示了session的当前等待事件,而V$SESSION_EVENT则记录了session自启动起所有的事件。
V$SESSION_EVENT中的常用列
SID:session标识
FROM v$session_wait GROUP BY event ORDER B Curr Tot
--------------------------------------------- ---- ----- -----
值=0:session正在等待当前的事件。
值=-1:最后一次等待时间小于1个统计单位,当前未在等待状态。
值=-2:时间统计状态未置为可用,当前未在等待状态。
3.Wait_time和Second_in_wait字段值与state相关:
如果state值为Waiting,那么wait_time值无用。Second_in_wait值是实际的等待时间(单位:秒)。
210 Session想读入SCUR或XCUR中的块,如果块交换或者session处于非连续的TX模式,所以等待可能需要很长的时间。
220 在缓冲区查询一个块的当前版本,但有人以不合法的模式使用这一块,所以我们只能等待。
230 以CR/CRX方式获得一个块,但块中的更改开始并且没有结束。
231 CR/CRX扫描找到当前块,但块中的更改开始并且没有结束。
EVENT:session等待的事件
TOTAL_WAITS:此session当前事件的总等待数

图书馆管理系统动态视图3

图书馆管理系统动态视图3
– 活动状态
它可被理解为一个组合,它的控制流由其他活动状态或动 作状态组成
– 转移 – 分支(Ex6: Activity_Diagram_Transition)
6.4 活动图(Activity Diagram)
Activity Diagram包括:
– 分叉和汇合(Ex6: Activity_Diagram_Branch) – 泳道
Sequence Diagram是强调消息时间顺序的交 互图 Sequence Diagram它描述类系统中类和类之 间的交互,它将这些交互建模成消息交换,也 就是说,时序图描述了类以及类相互交换以完 成期望行为的消息
6.1 时序图(Sequence Diagram)
Sequence Diagram包括如下元素:
6.1 时序图(Sequence Diagram)
时序图建模技术 使用时序图建模时,可遵循如下策略:
– 从引发某个交互的信息开始,在生命线之间按从上向下的顺 序画出随后的消息
– 设置对象的激活期,这可以可视化实际计算发生的时间点、 可视化消息的嵌套
– 如动作 – 对建模结果进行精化和细化
6.3 状态图(Statechart Diagram)
手机的状态图 Ex6:CellPhone
6.3 状态图(Statechart Diagram)
Java 源代码
– 10个数的和 – Ex6:Statechart_Diagram_Sum
6.4 活动图(Activity Diagram)
– 消息(Message):消息是定义交互和协作中交换信息的类, 用于对实体间的通信内容建模。消息用于在实体间传递信息, 允许实体请求其他的服务,类角色通过发送和接收消息时行 通 信

第3章 静态数据字典与动态性能视图

第3章 静态数据字典与动态性能视图

——静态数据字典

动态性能表记录数据库的运行状况。如:

——动态性能视图


2014
Oracle 11g数据库管理与开发基础教程
3.1 静态数据字典
Oracle数据字典存储在system表空间内,最早被 创建的数据库对象。 由以下两种对象类型组成:


基表:数据字典基表存储有关数据库的信息,其中的 大部分数据是以加密格式存储的。用户不可使用。 用户访问视图:这些视图基于数据字典基表而创建, 它们汇总数据字典基表内的信息,以可读的方式提供 给用户使用。
名称
2014
Oracle 11g数据库管理与开发基础教程
3.2.2 常用动态性能视图
从动态性能视图v$fixed_table中可以查询到Oracle 所有的动态性能视图以及X$基表的名称。 详见教材P54~56。 例如,下面语句执行结果显示Oracle Database 11g中共有1968个动态性能视图基表和X$基表:

2014
Oracle 11g数据库管理与开发基础教程

数据字典是Oracle数据库管理系统的核心,它存 储整个Oracle数据库的所有数据定义信息。如:



物理存储结构和逻辑存储结构 存储空间的分配使用情况 对象的定义及其约束 用户、角色、权限设置等
实例的内存使用情况 I/O状况 当前会话的情况 事务的信息及锁定的资源等
2014
Oracle 11g数据库管理与开发基础教程
第3章 静态数据字典与动态 性能视图
2014
Oracle 11g数据库管理与开发基础教程
本章内容
数据字典的作用、结构及其应用 动态性能视图的作用、结构及其应用

Oracle优化常用概念

Oracle优化常用概念
方式
日期
动态性能视图和数据字典视图
• 动态性能视图:v$开头 • 数据字典视图:dba_*、all_*、user_*
日期
动态性能视图
• v$session,v$session_wait,v$session_event, • v$sql • v$parameter
日期
数据字典视图
• dba_data_files • user_tables • user_indexes • user_objects • user_source • user_segments:对象实际占用空间,非实际使用空间 • user_users,user_errors,user_constraints,user_tablespac
日期
为什么要做柱状图
• Oracle在选择索引时会检查索引的效率从而确定是否使用 索引,而柱状图正是提供了这种信息。如果不做柱状图, oracle就确定不了索引的效率,会倾向于使用索引,可能 反而不如做全表扫描来得快
日期
如何生成柱状图
• analyze table tb_name compute|estimate statistics for all indexed columns; 针对索引列
找到前不返回数据。 • hash join:使用条件:仅用于等价连接;相关资源:内存、临时空间 优点:当缺乏索引或者索引条件模糊时,哈希连接连接比嵌套循环有效。通常比
排序合并连接快。在数据仓库环境下,如果表的纪录数多,效率高。 缺点:为建立哈希表,需要大量内存。第一次的结果返回较慢。
日期
执行计划
• 什么是执行计划 • 如何生成执行计划 • 如何看懂执行计划
日期
创建索引的目的
• 从根本来讲就是为了加快查询速度 • Oracle出于对效率的考虑,某些约束会关联到索引,从而

oracle dictionary

oracle dictionary

--1. 静态数据字典--user_source视图--主要描述当前用户的type and code信息.select * from user_source;select * from all_source;select * from dba_source;-------------------------------user_users视图--主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。

例如执行下列命令即可返回这些信息。

select * from user_users;select * from all_users;select * from dba_users;-------------------------------user_tables视图--主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。

通过此视图可以清楚了解当前用户可以操作的表有哪些。

select * from user_tables;select * from all_tables;select * from dba_tables;--------------------------------user_views视图--主要描述当前用户拥有的所有views的信息.select * from user_views;select * from all_views;select * from dba_views;--------------------------------user_objects视图--主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索引、序列等。

--该视图比user_tables视图更加全面。

例如, 需要获取一个名为“PARTNER_DF_PK”的对象类型和其状态的信息,可以执行下面命令select object_type,status from user_objectswhere object_name=upper('PARTNER_DF_PK');--这里需注意upper的使用,数据字典里的所有对象均为大写形式,而PL/SQL里不是大小写敏感的,所以在实际操作中一定要注意大小写匹配。

Oracle数据库应用

Oracle数据库应用

Oracle账户解锁Oracle数据库自带了许多账户,但默认情况下,Oracle只对其中5个账户进行了解锁,分别是sys、system、dbsnmp、sysman和mgmt_view,而其他账户出于锁定状态,其中sys、system具有管理员权限。

查看Oracle账户的锁定状态:SQL>select username, account_status from dba_users;(expired)表示账户为过期状态(需要设置口令才能解除此状态)SQL>alter user scott account unlock;SQL>alter user scott identified by tiger;(为scott账户设置口令)SQL>select username, account_status from dba_users where username = 'SCOTT'; (通过数据字典dba_users查看scott账户的状态)Oracle数据库体系结构一般Oracle数据库在物理上主要由3种类型的文件组成,分别是数据文件(*.dbf)、控制文件(*.ctl)和重做日志文件(*.log)。

还有参数文件、备份文件、归档重做日志文件,以及警告、跟踪日志文件等。

Oracle数据库从逻辑存储结构上来讲,主要包括表空间(tablespace)、段(segment)、区(extent)和数据块(block)。

其中数据块都具有相同的结构:块头部、表目录、行目录、空闲空间、行空间。

Oracle进程结构:DBWn(Database Writer,数据库写入)进程LGWR(Log Writer,日志写入)进程CKPT(Check Point,检查点或检验点)进程SMON(System Monitor,系统监控)进程PMON(Process Monitor,进程监控)进程ARCn(Archive Process,归档)进程RECO(Recovery,恢复)进程数据字典Oracle数据字典的视图类型user视图:user视图的名称以user_为前缀,用来记录用户对象的信息。

第二章Oracle体系结构

第二章Oracle体系结构

2.表空间的使用
在数据库中使用多个表空间具有如下优势: (1)能够将数据字典与用户数据分离开来,避免 由于字典对象和用户对象保存在同一个数据文件 中而产生的1/0冲突。 (2)能够将回退数据与用户数据分离开来,避免 由于硬盘损坏而导致永久性的数据丢失。 (3)能够将表空间的数据文件分散保存到不同硬 盘上,平均分布物理1/0操作。
(4)LGWR日志文件写进程 该进程是日志缓冲区的管理进程,负责把日志缓冲区中 的日志项写入磁盘上的日志文件中。 (5)ARCH归档进程(archiver process) 该进程把已经填满的在线日志文件拷贝到一个指定的存 储设备上。 (6)RECO恢复进程 该进程是在具有分布式选项时使用的一个进程,主要用 于解决引用分布式事务时所出现的故障。 (7)LCKN封锁进程
2.4.2 进程
进程又称任务,是操作系统中一个极为重要的 概念。一个进程执行一组操作,完成一个特定 的任务。对Oracle数据库管理系统来说,进程由 用户进程、服务器进程和后台进程所组成。 进程与程序的区别在于前者是一个动态概念, 后者是一个静态实体;程序仅仅是指令的有序 集合,而进程则强调执行过程。进程可以动态 地创建,完成任务后即会消亡。
2.2.4 数据库块
数据库块也称逻辑块或Oracle块,它对应 磁盘上一个或多个物理块,它的大小由初 始化参数db_block_size(在文件init.ora中) 决定,典型的大小是2k。
Pckfree和Pctused两个参数用来优化数据 块空间的使用。 PCTFREE : 块 中 保 留 用 于 UPDATE 操作的空间百分比,当数据占用的空间达 到此上限时,新的数据将不能再插入到此 块中; PCTUSED:指定块中数据使用空间 的最低百分比;

数据库性能监控与调优考试

数据库性能监控与调优考试

数据库性能监控与调优考试(答案见尾页)一、选择题1. 数据库性能监控的主要目的是什么?A. 提高数据库的存储效率B. 提升数据库的访问速度C. 优化数据库的配置D. 减少数据库的维护成本2. 在数据库性能监控中,通常关注哪些指标?A. CPU使用率B. 内存使用情况C. 磁盘I/OD. 网络带宽3. 以下哪个工具是常用的数据库性能监控工具?A. MySQL WorkbenchB. Oracle Enterprise ManagerC. SQL Server Management StudioD. pgAdmin4. 在数据库性能调优中,通常会考虑哪些方面?A. 查询优化B. 数据库结构优化C. 硬件资源优化D. 以上都是5. 查询优化通常涉及哪些步骤?A. 分析查询语句B. 识别性能瓶颈C. 选择合适的索引D. 以上都是6. 在数据库结构优化中,通常关注哪些方面?A. 表的设计B. 索引的使用C. 分区的设置D. 以上都是7. 硬件资源优化通常包括哪些措施?A. 增加内存B. 使用更快的磁盘C. 提高网络带宽D. 以上都是8. 在数据库性能调优过程中,如何定位性能瓶颈?A. 使用数据库自带的性能分析工具B. 通过监控工具收集数据进行分析C. 询问开发人员D. 以上都是9. 在进行数据库性能调优时,如何选择合适的索引?A. 根据查询需求选择索引B. 随意创建索引C. 考虑索引的数量和复杂性D. 以上都是10. 在数据库性能监控中,以下哪个指标是衡量数据库响应时间的重要因素?A. CPU使用率B. 磁盘I/OC. 内存使用率D. 网络带宽11. 使用数据库监控工具时,通常关注哪些视图?B. 慢查询视图C. 数据库视图D. 事务视图12. 在进行数据库性能调优时,以下哪个不是常见的性能瓶颈?A. 硬件资源不足B. 索引策略不合理C. 查询语句不高效D. 数据库设计缺陷13. 为了提高数据库性能,通常建议避免使用哪种类型的索引?A. 主键索引B. 唯一索引C. 全文索引D. 组合索引14. 在数据库性能调优中,如何根据查询日志来优化查询?A. 分析查询执行计划B. 改变数据存储结构C. 调整数据库参数设置D. 重新设计数据库模式15. 数据库性能调优中,如何处理大量的写入操作?A. 使用批量插入B. 减少写入操作频率C. 实施数据分片D. 优化数据模型16. 在数据库性能监控中,通常使用哪些工具来收集和分析性能数据?A. 操作系统自带工具B. 第三方数据库监控工具C. 数据库管理系统自带的监控功能17. 在数据库性能调优中,如何根据负载情况调整数据库配置参数?A. 根据经验进行猜测B. 参考他人经验C. 通过监控工具分析性能数据D. 随机调整18. 在数据库性能调优中,如何确保调优措施不会对系统稳定性造成影响?A. 逐步实施调优措施B. 充分测试调优效果C. 关注系统日志和性能指标D. 无需关注系统稳定性19. 在数据库性能监控中,以下哪个指标通常不是直接关注的?A. CPU使用率B. 磁盘I/OC. 网络带宽D. 数据库缓存命中率20. 对于数据库性能调优,以下哪个操作是不恰当的?A. 选择合适的索引B. 增加数据冗余C. 优化查询语句D. 调整数据库参数配置21. 在进行数据库性能调优时,以下哪个工具最适合收集性能数据?A. 操作系统性能监控工具B. 数据库管理系统的内置监控工具C. 第三方性能监控软件D. 系统日志分析工具22. 如果数据库响应时间缓慢,以下哪种方法可以用来诊断问题?A. 检查数据库日志B. 监控网络流量C. 分析系统CPU使用情况D. 以上都是23. 在数据库性能调优中,通常建议避免使用哪种类型的索引?A. 主键索引B. 唯一索引C. 全文索引D. 组合索引24. 为了提高数据库性能,以下哪种做法通常不被推荐?A. 尽可能多地创建索引B. 定期清理无用的数据和索引C. 合理设计数据库表结构D. 使用数据库连接池25. 在数据库性能监控中,以下哪个指标最能反映数据库的当前状态?A. 并发用户数B. 数据库吞吐量C. 数据库响应时间D. CPU使用率26. 在进行数据库性能调优时,以下哪个策略通常不适用于所有场景?A. 根据实际情况调整数据库参数B. 使用数据库备份来恢复数据C. 优化查询和索引以提高效率D. 扩展硬件资源以满足需求27. 在数据库性能监控中,以下哪个指标最能反映数据库的资源利用率?A. 数据库连接数B. 数据库锁等待时间C. 数据库缓冲区命中率D. 数据库事务处理速度28. 对于数据库性能调优,以下哪个操作不是常见的优化手段?A. 添加索引B. 增加数据副本C. 优化SQL查询语句D. 减少表连接29. 数据库索引的最佳实践是什么?A. 使用尽量多的索引以加快查询速度B. 根据查询需求选择合适的索引类型C. 对所有字段创建索引D. 删除不再使用的索引30. 数据库压力测试的目的是什么?A. 评估数据库系统的负载能力B. 发现数据库系统的漏洞C. 验证数据库备份和恢复策略的有效性D. 优化数据库硬件配置31. 在数据库性能调优中,如何根据查询日志进行优化?A. 分析查询执行计划,找出性能瓶颈B. 直接修改SQL语句以提高执行效率C. 调整数据库参数以适应查询需求D. 以上都是32. 数据库归档策略的主要目的是什么?A. 减少数据库存储空间的占用B. 提高数据库查询速度C. 保证数据的安全性和完整性D. 方便数据迁移33. 在数据库性能监控中,如何判断数据库是否存在死锁?A. 监控数据库的锁等待统计信息B. 观察数据库的CPU使用情况C. 检查数据库的日志文件D. 分析数据库的I/O性能34. 如何在数据库性能调优中实现资源平衡?A. 根据数据库的使用情况动态调整资源分配B. 定期重启数据库服务器以释放资源C. 限制某些低优先级的查询请求D. 以上都是35. 以下哪个工具是用于监控数据库性能的常用工具?A. SQL Server Management StudioB. MySQL WorkbenchC. Oracle Enterprise ManagerD. Postgres Profiler36. 数据库性能调优通常涉及哪些方面?A. 硬件配置调整B. 软件参数优化C. 查询优化D. 数据库结构调整37. 在进行数据库性能调优时,首先应该分析哪种性能瓶颈?A. 锁竞争B. 磁盘读写瓶颈C. CPU使用率过高D. 内存泄漏38. 下面哪个命令可以用来查看数据库的当前连接数?A. SHOW PROCESSLIST;B. SELECT * FROM information_schema.processes;C. SELECT COUNT(*) FROM pg_stat_activity;D. SHOW STATUS LIKE 'processes';39. 在数据库性能调优中,如何优化SQL查询?A. 避免使用SELECT *,只查询需要的列B. 使用INNER JOIN代替子查询C. 使用EXISTS代替IND. 使用UNION ALL代替UNION40. 数据库索引对性能有何影响?A. 提高数据检索速度B. 增加数据存储需求C. 减少数据更新速度D. 影响数据分布41. 在数据库性能调优中,如何处理大量的并发请求?A. 增加硬件资源B. 使用缓存技术C. 优化数据库架构D. 使用负载均衡42. 如何判断数据库性能问题是由于硬件故障引起的?A. 监控数据显示CPU使用率持续过高B. 监控数据显示磁盘I/O持续过高C. 监控数据显示内存使用率持续过高D. 监控数据显示网络带宽使用率持续过高二、问答题1. 什么是数据库性能监控?为什么需要它?2. 数据库性能监控的主要指标有哪些?3. 如何使用SQL跟踪查询性能?4. 什么是数据库索引?它如何影响查询性能?5. 如何进行数据库存储优化?6. 什么是数据库缓存?它如何提高性能?7. 如何处理数据库性能瓶颈?8. 什么是数据库性能调优?它包括哪些步骤?参考答案选择题:1. B2. ABCD3. ABCD4. D5. D6. D7. D8. D9. D 10. B11. ABCD 12. D 13. C 14. A 15. A 16. ABC 17. C 18. B 19. C 20. B21. B 22. D 23. C 24. A 25. C 26. B 27. C 28. D 29. B 30. A31. D 32. A 33. A 34. A 35. ABCD 36. ABCD 37. A 38. A 39. ABC 40. ABC41. ABCD 42. ABC问答题:1. 什么是数据库性能监控?为什么需要它?数据库性能监控是指收集和分析数据库系统的性能数据,以便识别潜在的性能问题并优化系统配置和查询。

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

学习动态性能表第四篇-(1)-V$SQLTEXT本视图包括Shared pool中SQL语句的完整文本,一条SQL语句可能分成多个块被保存于多个记录内。

注:V$SQLAREA只包括头1000个字符。

V$SQLTEXT中的常用列HASH_VALUE:SQL语句的Hash值ADDRESS:sql语句在SGA中的地址SQL_TEXT:SQL文本。

PIECE:SQL语句块的序号V$SQLTEXT中的连接列Column View Joined Column(s)HASH_VALUE, ADDRESS V$SQL, V$SESSION HASH_VALUE, ADDRESS HASH_VALUE. ADDRESS V$SESSION SQL_HASH_VALUE, SQL_ADDRESS示例:已知hash_value:3111103299,查询sql语句:select * from v$sqltextwhere hash_value='3111103299'order by piece等待事件有两种类型:空闲事件(idle event)与非空闲事件(non-idle event)。

空闲事件主要指oracle正在等待某种工作,常见的空闲等待事件有:client message、null event、pipe get、pmon/smon timer、rdbms rpc message及sql*net等。

非空闲等待事件:buffer busy waits、db file scattered read、db file sequential read、enqueue、free buffer waits、latch free、log file sync、log file paralle write等。

有人要问什么是瓶颈?当我们熟悉了系统的等待事件,就可以把握问题的关键,并且能够用相应的方法去处理阻塞系统的瓶颈,请注意一定不要随便的进行优化,否则很可能使结果雪上加霜,我们可以通过v$system_event获取系统总的等待情况,然后通过v$session_event查看系统中session的等待情况,最后通过v$session_wait定位瓶颈对象。

v$session_wait是会话级的,它包含session的实时信息,最重要的是:它显示了等待事件与相应资源的更深入信息,可确定出产生瓶颈的类型及其对象。

v$session_wait的p1、p2、p3告诉我们等待事件的具体含义,如果wait event是db file scattered read,p1=file_id/p2=block_id/p3=blocks,然后通过dba_extents即可确定出热点对象;如果是latch free 的话,p2为闩锁号,它指向的是v$latch。

◆求等待事件及其对应的latch◆求等待事件及其热点对象◆结合以上两条sql,同时显示latch及热点对象(注释:速度较慢)◆如果是非空闲等待事件,通过等待会话的sid可以求出该会话在执行的sql注释:DBA通过等待事件找出系统中消耗资源较严重的sql是常用的手段,唯一的缺点就是过程比较烦琐,由于session是动态的、瞬息万变、不可捕获,当你想捕获时,该session可能已经释放,但这种捕获是很有针对性的;也可以通过对v$sql或v$sqlarea进行过滤,找出存在性能问题的sql,长时间地对v$sql进行监控,并对捕获的sql进行优化处理,可以在很大程度上解决系统的性能问题。

等待事件Oracle的等待事件是衡量Oracle运行状况的重要依据及指标。

等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件。

在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约有360个等待事件。

主要有两种类别的等待事件,即空闲(idle)等待事件和非空闲(non-idle)等待事件。

空闲事件指Oracle正等待某种工作,在诊断和优化数据库的时候,我们不用过多注意这部分事件。

常见的空闲事件有:• dispatcher tim er• lock element cle anup• Null event• parallel query dequeue wait• parallel query idle wait - Slaves• pipe get• PL/SQL lock tim er• pm on tim er- pm on• rdbms ipc m essage• slave wait• sm on timer• SQL*Net break/reset to client• SQL*Net m essage from client• SQL*Net m ess age to client• SQL*Net m ore data to client• virtual circuit status• client m essage非空闲等待事件专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是我们在调整数据库的时候应该关注与研究的。

一些常见的非空闲等待事件有:• db file scattered read• db file sequential read• buffer busy waits• free buffer waits• enqueue• latch free• log file parallel write• log file sync1. db file scattered read-DB 文件分散读取这种情况通常显示与全表扫描相关的等待。

当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。

如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。

然而这个等待事件不一定意味着性能低下,在某些条件下Oracle 会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO 下Oracle 会进行更为智能的选择,在RBO 下Oracle 更倾向于使用索引。

因为全表扫描被置于LRU(Least Recently Used,最近最少适用)列表的冷端(cold end),对于频繁访问的较小的数据表,可以选择把他们Cache 到内存中,以避免反复读取。

当这个等待事件比较显著时,可以结合v$session_longops 动态性能视图来进行诊断,该视图中记录了长时间(运行时间超过6 秒的)运行的事物,可能很多是全表扫描操作(不管怎样,这部分信息都是值得我们注意的)。

并且通过v$session_longops的字段SQL_HASH_VALUE与V$SQL的字段HASH_VALUE查出具体的SQL语句,即select a.sql_text from v$sqlarea a,v$session_longops b wherea.HASH_VALUE=b.SQL_HASH_VALUE;2. db file sequential read-DB 文件顺序读取。

这一事件通常显示与单个数据块相关的读取操作(如索引读取)。

如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,可能没有正确的使用驱动表;或者可能说明不加选择地进行索引。

在大多数情况下我们说,通过索引可以更为快速的获取记录,所以对于一个编码规范、调整良好的数据库,这个等待很大是很正常的。

但是在很多情况下,使用索引并不是最佳的选择,比如读取较大表中大量的数据,全表扫描可能会明显快于索引扫描,所以在开发中我们就应该注意,对于这样的查询应该进行避免使用索引扫描。

3. Free Buffer-释放缓冲区这个等待事件表明系统正在等待内存中的可用空间,这说明当前Buffer 中已经没有Free 的内存空间。

如果应用设计良好,SQL 书写规范,充分绑定变量,那这种等待可能说明Buffer Cache 设置的偏小,你可能需要增大DB_BUFFER_CACHE。

Free Buffer 等待可能说明DBWR 的写出速度不够,或者磁盘存在严重的竞争,可以需要考虑增加检查点、使用更多的DBWR 进程,或者增加物理磁盘的数量,分散负载,平衡IO。

4. Buffer Busy-缓冲区忙该等待事件表示正在等待一个以unshareable方式使用的缓冲区,或者表示当前正在被读入buffer cache。

一般来说Buffer Busy Wait不应大于1%。

检查缓冲等待统计部分(或V$WAITSTAT),看一下等待是否位于段头(Segment Header)。

如果是,可以考虑增加自由列表(freelist,对于Oracle8i DMT)或者增加freelist groups(在很多时候这个调整是立竿见影的,在8.1.6之前,这个freelists参数不能动态修改;在8.1.6及以后版本,动态修改feelists需要设置COMPATIBLE至少为8.1.6).如果这一等待位于undo header,可以通过增加回滚段(rollback segment)来解决缓冲区的问题。

如果等待位于undo block上,我们可能需要检查相关应用,适当减少大规模的一致性读取,或者降低一致性读取(consistent read)的表中的数据密度或者增大DB_CACHE_SIZE。

如果等待处于data block,可以考虑将频繁并发访问的表或数据移到另一数据块或者进行更大范围的分布(可以增加pctfree值,扩大数据分布,减少竞争),以避开这个"热点"数据块,或者可以考虑增加表中的自由列表或使用本地化管理的表空间(Locally Managed Tablespaces)。

如果等待处于索引块,应该考虑重建索引、分割索引或使用反向键索引。

为了防止与数据块相关的缓冲忙等待,也可以使用较小的块:在这种情况下,单个块中的记录就较少,所以这个块就不是那么"繁忙";或者可以设置更大的pctfree,使数据扩大物理分布,减少记录间的热点竞争。

在执行DML (insert/update/ delete)时,Oracle向数据块中写入信息,对于多事务并发访问的数据表,关于ITL的竞争和等待可能出现,为了减少这个等待,可以增加initrans,使用多个ITL槽。

在Oracle9i 中,引入了一个新概念:ASSM(Segment Space Managem ent Auto)。

相关文档
最新文档