li
  当前位置:主页 > 性能优化 > 文章内容
li
oracle优化:oracle诊断性能问题(2)
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2007-12-23   阅读:60  
本文章共5732字,分4页,当前第2页,快速翻页:
 
10000次调用是否每次都用3秒,还是这些调用中也许有一个用了5分钟,而其余9999次调用每次只用0.02秒。这两种情况需要进行完全不同的处理。

在这种情况下最能为你提供帮助的诊断数据是Oracle的扩展SQL跟踪数据。扩展SQL跟踪文件按时间顺序显示了Oracle数据库内核在指定时间内所完成工作的逐条记录。收集扩展SQL跟踪数据几乎是免费的。最大的花销是存储每一个需要引起注意的跟踪文件所需磁盘空间(很少超过几兆字节)的费用。

IXDBA.NET技术社区

跟踪自己的代码。如果能访问程序的源代码,则打开其扩展SQL跟踪就非常容易。首先必须确保会话的TIMED_STATISTICSMAX_DUMP_ FILE_SIZE参数设置正确:

alter session

set timed_statistics=true

alter session

set max_dump_file_size=unlimited

如果没有设置TIMED_STATISTICS=TRUE,则数据库内核将把0值而不是真正的持续时间发送到跟踪文件中。如果对MAX_DUMP_ FILE_SIZE严加限制,则会在跟踪文件中生成下面这样的消息,而不是你想要的时间数据:

*** DUMP FILE SIZE IS LIMITED TO 1048576 BYTES ***

接下来是激活跟踪。有几种方法可以采用。过去的方法是使用ALTER SESSION命令,如下所示:

alter session set events

'10046 trace name context forever, level 12'

/* code to be traced goes here */

alter session set events

'10046 trace name context off'

更好的方法是使用DBMS_SUPPORT包来激活扩展SQL跟踪:

dbms_support.start_trace(waits=>true, binds=>true)

/* code to be traced goes here */

dbms_support.stop_trace()

 

请注意DBMS_SUPPORT 没有文档说明,可能也不是数据库默认安装的一部分。要了解DBMS_SUPPORT的信息,请参考MetaLink ( metalink.oracle.com)

跟踪别人的代码。如果你想跟踪没有读/写权限的代码,则激活扩展SQL跟踪就有点麻烦了。但也不会难很多。你首先要获得你想跟踪的会话的V$SESSION.SIDV$SESSION.SERIAL#值。然后使用下面的过程调用,可以设置所选会话的TIMED_STATISTICSMAX_DUMP_FILE_SIZE参数:

dbms_system.set_bool_param_in_session(

   sid     => 42,

   serial# => 1215,

   parnam  => 'timed_statistics',

   bval    => true)

 

dbms_system.set_int_param_in_session(

   sid     => 42,

   serial# => 1215,

   parnam  => 'max_dump_file_size',

   intval  => 2147483647)

(对于Oracle8 8.1.6以前的版本,你可以用ALTER SYSTEM命令处理这些参数。)

接下来要激活跟踪。有几种方法可以采用,包括下面两个:

方法一是使用DBMS_SUPPORT

dbms_support.start_trace_in_session(

   sid     => 42,

   serial# => 1215,

   waits   => true,

 

   binds   => true)

/* code to be traced executes during this time window */

dbms_support.stop_trace_in_session(

  sid      => 42,

  serial   => 1215)

若想激活扩展SQL跟踪,请不要使用名为SET_SQL_TRACE_IN_SESSIONDBMS_SUPPORT过程。该过程不允许在跟踪文件中指定等待和绑定的数据。

第二种方法更为精致,但在Oracle数据库10g之前的版本中并不支持这种方法。 DBMS_MONITOR包的引入解决了许多复杂诊断数据收集问题,这些问题是由连接共享和多线程操作所引起的。你可以在Oracle数据库10g中指定要跟踪的服务、模块或行动,而不指定要跟踪的



阅读更多内容<<上一页 · 1 · 2 · 3 · 4 · 下一页>>


  上一篇: 强烈推荐:ORACLE学习笔记--性能优...   下一篇: 关于数据库open的深入探究
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·强烈推荐:ORACLE学习笔记--性能优...
·PGA:关于pga_aggregate_target的...
·我的一个总结:检查点SCN深入研究
·解读oracle控制文件
·ORACLE SQL性能优化系列 (一)
·Latch与lock示疑
·利用冷备创建standby
·Oracle9iR2 Data Guard的保护模式
·关于HWM的一点研究
·数据库物理分布设计
·关于数据库open的深入探究
·强烈推荐:oracle10g+rac配置sta...
·32bit oracle 扩展SGA原理
·问题释疑:如何配置才能使客户端...
·oracle大师谈:OS与oracle异同探...
·案例分析:ora-04031与ora-04030...
·案例分析:ORA-01000: maximum o...
·案例分析:ORA-01178错误释疑
·案例分析:ORA-01461错误
·案例分析:ORA-12500错误案例
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接