首页 > 试题

10g是多少

更新时间:2022-11-16 15:42:23 阅读: 评论:0

2019完全考卷九年级化学全册答案-验证的近义词


2022年11月16日发(作者:离开的时候有些话没亲口说)

Oracle10g数据库中如何分析响应时间

博客分类:

Oracle

OracleSQL

Oracle10g数据库中如何分析响应时间

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

在以前看来,为了尽量获得数据库的最佳性能,Oracle的DBA们和性能分析

困难获得系统以及用户会话活动的一致的响应时间数据。DBA们面临的问题一直以

方面:第一个方面是准确定位数据库或者用户会话究竟在哪里消耗了时间;第二个

确定用户体验的客观性质。

在数据库中产生所有可能的行为和交互作用,这些任务都不是没有价值的。O

接口,在之前的很早的Oracle数据库版本中开始介绍的,对于那些知道如何使用

管理员来说这已经成为一个伟大的开始,即使它仍然缺乏告诉DBA系统或者用户会

效的处理了事务或者查询这个理想的能力。启用和钻研跟踪文件能够存储这个级别

信息,但是对于大多数超负荷工作管理大型数据库的DBA们,这个钻研是奢侈的而

的。

幸运的是,那些将数据库升级到Oracle10g的DBA们将会发现找到主要的响应

很容易,可以允许一个非常好的图表来显示系统和会话级的响应时间数据。很重要

Oracle的ADDM提供了一个查看响应时间的方法,通过自动分析收集的统计信息,

域,甚至可以通过Oracle企业管理器网络控制的图形界面提供建议。

此外,与我们这里讨论相关的是Oracle10g数据库的历史数据机制允许DBA们

对响应时间趋势的分析,这将有助于DBA们确定事务/系统的高峰时期,更好的定

批处理周期和ETL作业的进程和SQL语句。

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

系统层的响应时间分析:

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

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

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

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

上述问题在Oracle10g数据库之前对于DBA们来说是相当不好回答的,但是如果使用了

最新的Oracle10g数据库之后,这些数据信息将会很容易的被捕获到。

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

lectMETRIC_NAME,VALUE

fromSYS.V_$SYSMETRIC

whereMETRIC_NAMEIN('DatabaCPUTime

Ratio','DatabaWaitTimeRatio')

ANDINTSIZE_CSEC=(lectmax(INTSIZE_CSEC)

fromSYS.V_$SYSMETRIC);

METRIC_NAMEVALUE

DatabaWaitTimeRatio31.3499111

DatabaCPUTimeRatio68.6500888

Oracle10g数据库中的V$SYSMETRIC视图中存在一些非常有用的响应时间数据,其中两个

比较重要的就是WaitTimeRatio和DatabaCPUTimeRatio.上面的查询显示了数据库中

最新的关于这两个统计数据的快照,这将有助于帮助我们确定是否数据库正在经历着一个比

较高的等待百分率和瓶颈。数据库的CPUTimeRatio是由数据库中的"databatime"的数

值除以CPU的数量,"databatime"定义为数据库消耗在用户级别调用所花费的时间(不包

括实例的后台进程活动所消耗的时间)。比较高的值(90%-95%以上)代表很少等待和瓶颈活

动,因为各个系统不同,这个阀值只能作为一个一般的规则来使用。

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

lectend_time,value

fromsys.v_$sysmetric_history

wheremetric_name='DatabaCPUTimeRatio'

orderby1;

END_TIMEVALUE

2007-1-2423.21949216

2007-1-2423.01443414

2007-1-2429.75636353

2007-1-2429.28581409

2007-1-24243.3490481

2007-1-24238.8366361

2007-1-24232.0272511

2007-1-2420

2007-1-24222.9580733

2007-1-24233.0615102

2007-1-24243.1294933

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

lectCASEMETRIC_NAME

WHEN'SQLServiceResponTime'then'SQL

ServiceResponTime(cs)'

WHEN'ResponTimePerTxn'then'ResponTime

PerTxn(cs)'

ELSEMETRIC_NAME

ENDMETRIC_NAME,

CASEMETRIC_NAME

WHEN'SQLServiceResponTime'thenROUND

((MINVAL/100),2)

WHEN'ResponTimePerTxn'thenROUND((MINVAL

/100),2)

ELSEMINVAL

ENDMININUM,

CASEMETRIC_NAME

WHEN'SQLServiceResponTime'thenROUND

((MAXVAL/100),2)

WHEN'ResponTimePerTxn'thenROUND((MAXVAL

/100),2)

ELSEMAXVAL

ENDMAXIMUM,

CASEMETRIC_NAME

WHEN'SQLServiceResponTime'thenROUND

((AVERAGE/100),2)

WHEN'ResponTimePerTxn'thenROUND((AVERAGE

/100),2)

ELSEAVERAGE

ENDAVERAGE

fromSYS.V_$SYSMETRIC_SUMMARY

whereMETRIC_NAMEin('CPUUsagePerSec',

'CPUUsagePerTxn',

'DatabaCPUTimeRatio',

'DatabaWaitTimeRatio',

'ExecutionsPerSec',

'ExecutionsPerTxn',

'ResponTimePerTxn',

'SQLServiceResponTime',

'UrTransactionPerSec')

ORDERBY1;

METRIC_NAMEMININUMMAXIMUMAVERAGE

CPUUsagePerSec053.994757711.1603280

CPUUsagePerTxn0168.73166624.8848615

DatabaCPUTimeRatio087.186629535.8114730

DatabaWaitTimeRatio090.714185964.1885269

ExecutionsPerSec0540.768348114.852472

ExecutionsPerTxn01911279.912779

ResponTimePerTxn(cs)03.880.66

SQLServiceResponTime(cs)000

UrTransactionPerSec04.701834860.94469007

上面的查询包含了更多的详细的响应时间数据。DBA们还需要收集在系统级别

讯的平均响应时间,上面的查询给出了需要的结果。如果用户抱怨响应时间太慢,

就应该查看ResponTimePerTxn和SQLServiceResponTime数据是否存在

题。

如果响应时间不在是那么渴求,那么DBA就会想了解究竟是什么类型的用户活

库的响应变得如此的慢,在Oracle10g数据库之前,这些信息是比较难获取的,

变得非常容易,执行如下查询:

lectcadb_stat_name

when'partimeelapd'then

'softpartime'

eldb_stat_name

enddb_stat_name,

cadb_stat_name

when'sqlexecuteelapdtime'then

time_cs-plsql_time

when'partimeelapd'then

time_cs-hard_par_time

eltime_cs

endtime_cs,

cadb_stat_name

when'sqlexecuteelapdtime'then

round(100*(time_cs-plsql_time)/db_time,

2)

when'partimeelapd'then

round(100*(time_cs-hard_par_time)/

db_time,2)

elround(100*time_cs/db_time,2)

endpct_time

from

(lectstat_namedb_stat_name,

round((value/1000000),3)time_cs

fromsys.v_$sys_time_model

wherestat_namenotin('DBtime','background

elapdtime',

'backgroundcputime','DBCPU')),

(lectround((value/1000000),3)db_time

fromsys.v_$sys_time_model

wherestat_name='DBtime'),

(lectround((value/1000000),3)plsql_time

fromsys.v_$sys_time_model

wherestat_name='PL/SQLexecutionelapd

time'),

(lectround((value/1000000),3)

hard_par_time

fromsys.v_$sys_time_model

wherestat_name='hardparelapdtime')

orderby2desc;

DB_STAT_NAMETIME_SECSPCT_TIME

sqlexecuteelapdtime65.64489.7

hardparelapdtime26.66136.43

PL/SQLexecutionelapdtime12.76617.44

PL/SQLcompilationelapdtime6.3538.68

softpartime2.152.94

connectionmanagementcallelapdtime1.084

1.48

hardpar(sharingcriteria)elapdtime

0.4480.61

repeatedbindelapdtime0.0260.04

failedparelapdtime0.0090.01

hardpar(bindmismatch)elapdtime0.002

0

RMANcputime(backup/restore)00

inboundPL/SQLrpcelapdtime00

quenceloadelapdtime00

Javaexecutionelapdtime00

failedpar(outofsharedmemory)elapd

time00

可以在V$SYS_TIME_MODEL视图中找到相应的主要花费时间处理的部分,然后就可以根据

这些来对数据库进行相应的调整。

除了活动时间,DBA也还想知道整体的等待时间。在Oracle10g数据库之前,DBA必须查

看单独的等待事件来找出等待和瓶颈,现在Oracle10g数据库提供一个等待的概要机制。

lectWAIT_CLASS,

TOTAL_WAITS,

round(100*(TOTAL_WAITS/SUM_WAITS),2)

PCT_WAITS,

ROUND((TIME_WAITED/100),2)TIME_WAITED_SECS,

round(100*(TIME_WAITED/SUM_TIME),2)

PCT_TIME

from

(lectWAIT_CLASS,

TOTAL_WAITS,

TIME_WAITED

fromV$SYSTEM_WAIT_CLASS

whereWAIT_CLASS!='Idle'),

(lectsum(TOTAL_WAITS)SUM_WAITS,

sum(TIME_WAITED)SUM_TIME

fromV$SYSTEM_WAIT_CLASS

whereWAIT_CLASS!='Idle')

orderby5desc;

WAIT_CLASSTOTAL_WAITSPCT_WAITS

TIME_WAITED_SECSPCT_TIME

UrI/O574861.7167.5765.79

Other1821.9516.8516.41

SystemI/O297531.9411.2710.97

Concurrency1141.226.766.58

Commit610.650.220.21

Network2332.50.030.03

Application20.0200

这样就能非常容易的找出大部分的整体等待时间。如同响应时间数据一样,我们可以用

下面的查询来及时回顾最新的一个小时等待类型:

me,

_class,

_waits,

round((_waited/100),2)

time_waited_cs

fromsys.v_$ssion_wait_classa,

sys.v_$ssionb

=

meisnotnulland

_class!='Idle'

orderby5desc;

SIDUSERNAMEWAIT_CLASSTOTAL_WAITS

TIME_WAITED_SECS

38SYSUrI/O220.19

48SYSUrI/O150.12

38SYSNetwork210.01

48SYSNetwork240

38SYSApplication20

这个时候,就可以检查标准的单独等待事件就如在以前版本的Oracle数据库中查询

V$SESSION_WAIT和V$SESSION_EVENT视图。在Oracle10g数据库中DBA还将可以找出新的等

待类型在这两张视图中。如果需要找出以前哪个会话登录并且消耗了大部分的资源,你可以

使用下面的查询,下面的例子是查找午夜12点到5点的数据库活动,并且包括用户的I/O等

待。

lectss_id,

urname,

program,

wait_event,

ss_time,

round(100*(ss_time/total_time),2)

pct_time_waited

from

(n_idss_id,

decode(ssion_type,'background',

ssion_type,me)urname,

mprogram,

it_event,

sum(_waited)ss_time

fromsys.v_$active_ssion_historya,

sys.v_$event_nameb,

_ursc

#=#and

_id=_idand

sample_time>'22-JAN-0712:00:00AM'and

sample_time<'22-JAN-0705:00:00AM'and

_class='UrI/O'

n_id,

decode(ssion_type,'background',

ssion_type,me),

m,

),

SQL语句响应时间分析

在Oracle9i数据库中查看SQL语句的响应时间就变得比较容易了,现在在

Oracle10g中,DBA们拥有更多的工具可以帮助他们跟踪效率低下的数据库代

码。以前可以用来查询的视图是V$SQLAREA,从Oracle9i开始,这个视图增加

了ELAPSED_TIME和CPU_TIME两个列,这极大的有助于去确定实际用户的SQL

语句的执行经历。(如果除以执行的次数列EXECUTIONS,那么将得到平均每次

执行这个SQL语句所用的平均时间)在Oracle10g数据库中,V$SQLAREA视图

中增加了6个新的和等待以及时间相关的列:

APPLICATION_WAIT_TIME

CONCURRENCY_WAIT_TIME

CLUSTER_WAIT_TIME

USER_IO_WAIT_TIME

PLSQL_EXEC_TIME

JAVA_EXEC_TIME

这些新的列有助于确定很多信息,例如:一个存储过程中花费在PL/SQL代

码和标准SQL执行上的时间的对比,以及一个SQL语句经历的任何详细的用户

I/O等待。例如:下面的SQL语句能帮助找到前5位用户I/O等待最高的SQL

语句:

lect*from

(lectsql_text,

sql_id,

elapd_time,

cpu_time,

ur_io_wait_time

fromsys.v_$sqlarea

orderby5desc)

whererownum<6;

SQL_TEXTSQL_IDELAPSED_TIMECPU_TIME

USER_IO_WAIT_TIME

DECLAREjobBINARY_INTEGER:=:job;

next_dateDATE:=:mydate;brokenBOOLEAN:

6gvch1xu9ca3g118593479

lect/*+index(idl_ub1$i_idl_ub11)+*/

piece#,

length,piecefromidl_ub1

$whercvn54b7yz0s8u645597622

m_nameobject_name,

__synonymss,

sfqmpmkfr6pqyk1181489450

lect/*+rule*/bucket,endpoint,col#,

epvaluefromhistgrm$whereobj#=:1a

db78fxqxwxt7r

27376811

lect/*+index(idl_ub2$i_idl_ub21)+*/

piece#,

length,piecefromidl_ub2$

where39m4sx9k63ba223226641

当然,获取最消耗时间或者等待时间最长的SQL语句非常不错,但是同时

也需要抓住其要点——在V$ACTIVE_SESSION_HISTORY视图中又一次出现的SQL

语句。通过这个视图,能够找出具体什么等待时间延迟了SQL语句执行,连同

实际的文件,对象以及阻塞的对象导致等待。

例如:设想已经找到一个特别的SQL语句,看上去在用户I/O等待时间方

面极端的严重,那么可以执行下面的查询来得到等待时间中各个单独的等待事

件,等待的文件,等待的对象:

lectevent,

time_waited,

owner,

object_name,

current_file#,

current_block

#fromsys.v_$active_ssion_historya,

_objectsb

wheresql_id='6gvch1xu9ca3g'and

t_obj#=_idand

time_waited<>0;

EVENTTIME_WAITEDOWNEROBJECT_NAMEfileblock

dbfilequentialread27665SYSMAN

MGMT_METRICS_1HOUR_PK329438

dbfilequentialread3985SYSMAN

SEVERITY_PRIMARY_KEY352877

当然,也可以通过使用V$ACTIVE_SESSION_HISTORY视图中的历史数据的方

式来限制一段特殊时间内的没有优化的SQL语句。问题在于Oracle10g数据库

通过简化的数据字典视图把SQL语句的响应时间分析变得非常的简单,比起以

前运用消耗时间的trace方法来说。

总结

DBA们和性能分析专家们管理Oracle10g数据库的性能时会发现在最新的

Oracle旗舰数据库中已经把许多的响应时间数据做成了动态性能视图。这些统

计信息将有助于迅速找出大型复杂数据库中的性能瓶颈所在。

本文发布于:2022-11-16 15:42:23,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/32176.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:parent怎么读
下一篇:grapes怎么读
标签:10g是多少
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图