百科狗-知识改变命运!
--

Oracle10g中如何分析响应时间

泡在奶味里1年前 (2023-12-23)阅读数 7#综合百科

 在Oracle g中 以前版本中比较难于获取的响应时间数据将会变得非常容易获取

 在以前看来 为了尽量获得数据库的最佳性能 Oracle的DBA们和性能分析专家一直很困难获得系统以及用户会话活动的一致的响应时间数据 DBA们面临的问题一直以来包括两个方面 第一个方面是准确定位数据库或者用户会话究竟在哪里消耗了时间 第二个方面就是确定用户体验的客观性质

 在数据库中产生所有可能的行为和交互作用 这些任务都不是没有价值的 Oracle等待接口 在之前的很早的Oracle数据库版本中开始介绍的 对于那些知道如何使用等待接口的管理员来说这已经成为一个伟大的开始 即使它仍然缺乏告诉DBA系统或者用户会话是否有效的处理了事务或者查询这个理想的能力 启用和钻研跟踪文件能够存储这个级别上的详细信息 但是对于大多数超负荷工作管理大型数据库的DBA们 这个钻研是奢侈的而耗费时间的

 幸运的是 那些将数据库升级到Oracle g的DBA们将会发现找到主要的响应时间变得很容易 可以允许一个非常好的图表来显示系统和会话级的响应时间数据 很重要的一点 Oracle的ADDM提供了一个查看响应时间的方法 通过自动分析收集的统计信息 识别问题区域 甚至可以通过Oracle企业管理器网络控制的图形界面提供建议

 此外 与我们这里讨论相关的是Oracle g数据库的历史数据机制允许DBA们按时查看对响应时间趋势的分析 这将有助于DBA们确定事务/系统的高峰时期 更好的定位那些拉长批处理周期和ETL作业的进程和SQL语句

 这里主要讨论用于系统 会话和SQL级别上那些历史机制的用途

 系统层的响应时间分析

 先来看看典型的几个经常问到DBA们的问题

 通常来说 数据库运行的状况如何?

 用户体验感觉的平均响应时间是多少?

 什么行为是最影响整个响应时间的?

 上述问题在Oracle g数据库之前对于DBA们来说是相当不好回答的 但是如果使用了最新的Oracle g数据库之后 这些数据信息将会很容易的被捕获到

 首先 Oracle g数据库运行的状况如何这个问题可以通过下面的查询来获得

 select METRIC_NAME VALUE

 from SYS V_$SYSMETRIC

 where METRIC_NAME IN ( Database CPU Time Ratio Database Wait Time Ratio )

 AND INTSIZE_CSEC = (select max(INTSIZE_CSEC) from SYS V_$SYSMETRIC)

 METRIC_NAME VALUE

Oracle10g中如何分析响应时间

 

 Database Wait Time Ratio

 Database CPU Time Ratio

 Oracle g数据库中的V$SYSMETRIC视图中存在一些非常有用的响应时间数据 其中两个比较重要的就是Wait Time Ratio 和Database CPU Time Ratio 上面的查询显示了数据库中最新的关于这两个统计数据的快照 这将有助于帮助我们确定是否数据库正在经历著一个比较高的等待百分率和瓶颈 数据库的CPU Time Ratio是由数据库中的 database time 的数值除以CPU的数量 database time 定义为数据库消耗在用户级别调用所花费的时间(不包括实例的后台进程活动所消耗的时间) 比较高的值( % %以上)代表很少等待和瓶颈活动 因为各个系统不同 这个阀值只能作为一个一般的规则来使用

 还可以使用如下的查询来迅速查看最新一个小时的信息 看看数据库的总性能如何

 select end_time value

 from sys v_$sy *** etric_history

 where metric_name = Database CPU Time Ratio

 order by

 END_TIME VALUE

 

 

 

 

 

 

 

 

 

 

 

 

 可以从V$SYSMETRIC_SUMMARY视图中获得数据库整体性能效率的最大 最小和平均值

 select CASE METRIC_NAME

 WHEN SQL Service Response Time then SQL Service Response Time (secs)

 WHEN Response Time Per Txn then Response Time Per Txn (secs)

 ELSE METRIC_NAME

 END METRIC_NAME

 CASE METRIC_NAME

 WHEN SQL Service Response Time then ROUND((MINVAL / ) )

 WHEN Response Time Per Txn then ROUND((MINVAL / ) )

 ELSE MINVAL

 END MININUM

 CASE METRIC_NAME

 WHEN SQL Service Response Time then ROUND((MAXVAL / ) )

 WHEN Response Time Per Txn then ROUND((MAXVAL / ) )

 ELSE MAXVAL

 END MAXIMUM

 CASE METRIC_NAME

 WHEN SQL Service Response Time then ROUND((AVERAGE / ) )

 WHEN Response Time Per Txn then ROUND((AVERAGE / ) )

 ELSE AVERAGE

 END AVERAGE

 from SYS V_$SYSMETRIC_SUMMARY

 where METRIC_NAME in ( CPU Usage Per Sec

  CPU Usage Per Txn

  Database CPU Time Ratio

  Database Wait Time Ratio

  Executions Per Sec

  Executions Per Txn

  Response Time Per Txn

  SQL Service Response Time

  User Transaction Per Sec )

 ORDER BY

 METRIC_NAME MININUM MAXIMUM AVERAGE

 

 CPU Usage Per Sec

 CPU Usage Per Txn

 Database CPU Time Ratio

 Database Wait Time Ratio

 Executions Per Sec

 Executions Per Txn

 Response Time Per Txn (secs)

 SQL Service Response Time (secs)

 User Transaction Per Sec

 上面的查询包含了更多的详细的响应时间数据 DBA们还需要收集在系统级别上的用户通讯的平均响应时间 上面的查询给出了需要的结果 如果用户抱怨响应时间太慢 那么DBA就应该查看Response Time Per Txn和SQL Service Response Time数据是否存在数据库问题

 如果响应时间不在是那么渴求 那么DBA就会想了解究竟是什么类型的用户活动让数据库的响应变得如此的慢 在Oracle g数据库之前 这些信息 是比较难获取的 但是现在就变得非常容易 执行如下查询

 select case db_stat_name

 when parse time elapsed then

  soft parse time

 else db_stat_name

 end db_stat_name

 case db_stat_name

 when sql execute elapsed time then

 time_secs plsql_time

 when parse time elapsed then

 time_secs hard_parse_time

 else time_secs

 end time_secs

 case db_stat_name

 when sql execute elapsed time then

 round( * (time_secs plsql_time) / db_time )

 when parse time elapsed then

 round( * (time_secs hard_parse_time) / db_time )

 else round( * time_secs / db_time )

 end pct_time

 from

 (select stat_name db_stat_name

 round((value / ) ) time_secs

 from sys v_$sys_time_model

 where stat_name not in( DB time background elapsed time

  background cpu time DB CPU ))

 (select round((value / ) ) db_time

 from sys v_$sys_time_model

 where stat_name = DB time )

 (select round((value / ) ) plsql_time

 from sys v_$sys_time_model

 where stat_name = PL/SQL execution elapsed time )

 (select round((value / ) ) hard_parse_time

 from sys v_$sys_time_model

 where stat_name = hard parse elapsed time )

 order by desc

 DB_STAT_NAME TIME_SECS PCT_TIME

 

 sql execute elapsed time

 hard parse elapsed time

 PL/SQL execution elapsed time

 PL/SQL pilation elapsed time

 soft parse time

 connection management call elapsed time

 hard parse (sharing criteria) elapsed time

 repeated bind elapsed time

 failed parse elapsed time

 hard parse (bind mi *** atch) elapsed time

 RMAN cpu time (backup/restore)

 inbound PL/SQL rpc elapsed time

 sequence load elapsed time

 Java execution elapsed time

 failed parse (out of shared memory) elapsed time

 可以在V$SYS_TIME_MODEL视图中找到相应的主要花费时间处理的部分 然后就可以根据这些来对数据库进行相应的调整

 除了活动时间 DBA也还想知道整体的等待时间 在Oracle g数据库之前 DBA必须查看单独的等待事件来找出等待和瓶颈 现在Oracle g数据库提供一个等待的概要机制

 select WAIT_CLASS

 TOTAL_WAITS

 round( * (TOTAL_WAITS / SUM_WAITS) ) PCT_WAITS

 ROUND((TIME_WAITED / ) ) TIME_WAITED_SECS

 round( * (TIME_WAITED / SUM_TIME) ) PCT_TIME

 from

 (select WAIT_CLASS

 TOTAL_WAITS

 TIME_WAITED

 from V$SYSTEM_WAIT_CLASS

 where WAIT_CLASS != Idle )

 (select sum(TOTAL_WAITS) SUM_WAITS

 sum(TIME_WAITED) SUM_TIME

 from V$SYSTEM_WAIT_CLASS

 where WAIT_CLASS != Idle )

 order by desc

 WAIT_CLASS TOTAL_WAITS PCT_WAITS TIME_WAITED_SECS PCT_TIME

 

 User I/O

 Other

 System I/O

 Concurrency

 Commit

 Neork

 Application

 这样就能非常容易的找出大部分的整体等待时间 如同响应时间数据一样 我们可以用下面的查询来及时回顾最新的一个小时等待类型

 select a sid

 b username

 a wait_class

 a total_waits

 round((a time_waited / ) ) time_waited_secs

 from sys v_$session_wait_class a

 sys v_$session b

 where b sid = a sid and

 b username is not null and

 a wait_class != Idle

 order by desc

 SID USERNAME WAIT_CLASS TOTAL_WAITS TIME_WAITED_SECS

 

  SYS User I/O

  SYS User I/O

  SYS Neork

  SYS Neork

  SYS Application

 这个时候 就可以检查标准的单独等待事件就如在以前版本的Oracle数据库中查询V$SESSION_WAIT和V$SESSION_EVENT视图 在Oracle g数据库中DBA还将可以找出新的等待类型在这两张视图中 如果需要找出以前哪个会话登录并且消耗了大部分的资源 你可以使用下面的查询 下面的例子是查找午夜 点到 点的数据库活动 并且包括用户的I/O等待

 select sess_id

 username

 program

 wait_event

 sess_time

 round( * (sess_time / total_time) ) pct_time_waited

 from

 (select a session_id sess_id

 decode(session_type background session_type c username) username

 a program program

 b name wait_event

 sum(a time_waited) sess_time

 from sys v_$active_session_history a

 sys v_$event_name b

 sys dba_users c

 where a event# = b event# and

 a user_id = c user_id and

 sample_time > JAN AM and

 sample_time

 b wait_class = User I/O

 group by a session_id

 decode(session_type background session_type c username)

 a program

 b name)

 SQL语句响应时间分析

 在Oracle i数据库中查看SQL语句的响应时间就变得比较容易了 现在在Oracle g中 DBA们拥有更多的工具可以帮助他们跟踪效率低下的数据库代码 以前可以用来查询的视图是V$SQLAREA 从Oracle i开始 这个视图增加了ELAPSED_TIME和CPU_TIME两个列 这极大的有助于去确定实际用户的SQL语句的执行经历 (如果除以执行的次数列EXECUTIONS 那么将得到平均每次执行这个SQL语句所用的平均时间)在Oracle g数据库中 V$SQLAREA视图中增加了 个新的和等待以及时间相关的列

 l APPLICATION_WAIT_TIME

 l CONCURRENCY_WAIT_TIME

 l CLUSTER_WAIT_TIME

 l USER_IO_WAIT_TIME

 l PLSQL_EXEC_TIME

 l JAVA_EXEC_TIME

 这些新的列有助于确定很多信息 例如 一个存储过程中花费在PL/SQL代码和标准SQL执行上的时间的对比 以及一个SQL语句经历的任何详细的用户I/O等待 例如 下面的SQL语句能帮助找到前 位用户I/O等待最高的SQL语句

 select * from

 (select sql_text

 sql_id

 elapsed_time

 cpu_time

 user_io_wait_time

 from sys v_$sqlarea

 order by desc)

 where rownum

 SQL_TEXT SQL_ID ELAPSED_TIME CPU_TIME USER_IO_WAIT_TIME

 

 DECLARE job BINARY_INTEGER = job next_date DATE = mydate broken BOOLEAN gvch xu ca g

 select /*+ index(idl_ub $ i_idl_ub ) +*/ piece# length piece from idl_ub $ wher cvn b yz s u

 select s synonym_name object_name o object_type from sys all_synonyms s s fqmpmkfr pqyk

 select /*+ rule */ bucket endpoint col# epvalue from histgrm$ where obj#= a db fxqxwxt r

 select /*+ index(idl_ub $ i_idl_ub ) +*/ piece# length piece from idl_ub $ wher m sx k ba

 当然 获取最消耗时间或者等待时间最长的SQL语句非常不错 但是同时也需要抓住其要点——在V$ACTIVE_SESSION_HISTORY视图中又一次出现的SQL语句 通过这个视图 能够找出具体什么等待时间延迟了SQL语句执行 连同实际的文件 对象以及阻塞的对象导致等待

 例如 设想已经找到一个特别的SQL语句 看上去在用户I/O等待时间方面极端的严重 那么可以执行下面的查询来得到等待时间中各个单独的等待事件 等待的文件 等待的对象

 select event

 time_waited

 owner

 object_name

 current_file#

 current_block#

 from sys v_$active_session_history a

 sys dba_objects b

 where sql_id = gvch xu ca g and

 a current_obj# = b object_id and

 time_waited

 EVENT TIME_WAITED OWNER OBJECT_NAME file block

 

 db file sequential read SYSMAN MGMT_METRICS_ HOUR_PK

 db file sequential read SYSMAN SEVERITY_PRIMARY_KEY

 当然 也可以通过使用V$ACTIVE_SESSION_HISTORY视图中的历史数据的方式来限制一段特殊时间内的没有优化的SQL语句 问题在于Oracle g数据库通过简化的数据字典视图把SQL语句的响应时间分析变得非常的简单 比起以前运用消耗时间的trace方法来说

 总结

lishixinzhi/Article/program/Oracle/201311/16839

没有区别,动画是根据漫画改编的。

《棋魂》(日语:ヒカルの碁,中文意义为“光的围棋”,“光之棋”)是日本《周刊少年JUMP》(集英社)连载的以围棋为题材的少年漫画。

作者是堀田由美(ほったゆみ),漫画由小畑健绘制,并由日本棋院的女棋士梅泽由香里担当监修,单行本全23卷。

曾被改编为动画,由东京电视台、电通及Studio Pierrot共同制作,并于东京电视台系列(TXN)在2001年至2003年播放,分为两辑,总共75集。另外,2004年1月3日日本播出特别篇《迈向北斗杯之路》。

角色介绍

1、进藤光

在爷爷家的仓库里,发现了一古老的围棋棋盘,当他拿起棋盘时,出现了一平安时代的天才棋士佐为。光原是一个平凡的顽皮小学生,讨厌学习,对任何事都不热衷,但遇到佐为后,阿光开始下围棋,并认识了塔矢亮,受他对围棋的真挚态度所影响,立志誓要超越他,以当专业棋士为目标。

2、藤原佐为

平安时代,佐为曾担任天皇的围棋导师,遭奸人作弊所陷害,含冤投水自尽,遗恨极深,灵魂无法成佛,并寄宿在棋盘之中。到了江户时代,降临至今仍有最强棋士之称的本因坊秀策身上,140年之后,再次遇到能看见自己的进藤光,对能在现实世界再次下棋,感到无比欣慰,希望中有一天能达到神乎其技的境界。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)