自动负载信息库:AWR的引入

Posted by dbtan on 四月 9th, 2010

自动负载信息库:AWR的引入
内存中记录的ASH信息始终是有限的,为了保存历史数据,这些信息最终需要写入磁盘。这些历史信息的存储,引出了Oracle 10g的另外一个新特性:自动负载信息库(Automatic Workload Repository,AWR)

1. AWR的采样机制:
AWR收集关于该特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为每小时一次)为其所有重要统计信息和负载信息执行一次快照,并将这些快照存储在AWR中。这些信息在AWR中保留给定的时间(默认为一周),然后被清除。执行快照的频率及其保持时间都可以自定义,以满足不同环境的独特需要。

AWR
... ...
<阅读全文>

ASH新特性

Posted by dbtan on 四月 9th, 2010

ASH新特性:

如果说v$session_wait_history是一小步,那么ASH则是Oracle迈出根本变革的一大步。

从Oracle 10g开始,Oracle引入了ASH新特性,也就是活动session历史信息记录(Active Session History,ASH)ASH以v$session为基础,每秒钟采样一次,记录活动会话等待的事件。因为记录所有会话的活动是非常昂贵的,所以不活动的会话不会被采样,这一点从ASH的“A”上就可以看出。采样工作由Oracle 10g新引入的一个后台进程MMNL来完成。

是否启用ASH功能,受一个内部隐含参数控制:

sys@CCDB> @GetHidPar.sql
Enter value for par: ash_enable
old   4:
... ...
<阅读全文>

新增v$session_wait_history视图

Posted by dbtan on 四月 9th, 2010

Oracle 10g的增强:

虽然v$session_wait记录的信息如此重要,但是这些重要的信息是随session而消逝的,如果我们希望获得数据库的历史状态及session的历史状态及session的历史等待信息等数据,是不可得的。

所以很多时候很难回答这样的问题:
·这个系统昨天是什么样子的?
·今天和昨天相比有什么不同?
·1个小时前的那次性能下滑是哪个用户引起的?
·是哪些事件使我们今天用了更多的时间来等待?
你也可能一次又一次地听到Oracle Support这样问:
·问题出现时系统是怎样的状况?
·问题出现时系统有哪些等待?
·你能否重现(Reproduce)问题以使我们判断?

很多这样的问题是极其使人恼
... ...
<阅读全文>

捕获相关SQL

Posted by dbtan on 四月 9th, 2010

捕获相关SQL:

确定这些进程因为数据访问产生了等待,可以考虑捕获这些SQL以发现问题。这里用到了以下脚本getsqlbysid.sql,该脚本通过已经session的sid,联合v$session、v$sqltext视图,获得相关session正在执行的完整SQL语句。

select sql_text
from v$sqltext a
where a.hash_value = (select sql_hash_value
                      from v$session b
                   &nbs
... ...
<阅读全文>

从v$sqltext中追踪

Posted by dbtan on 四月 9th, 2010

从v$sqltext中追踪:

在数据库出现瓶颈时,通常可以从v$session_wait找到那些正在等待资源的Session,通过Session的sid,联合v$session和v$sqltext视图可以捕获这些Session正在执行的SQL语句。

数据库运行缓慢,转换为数据库语言就是数据库可能经历了等待,那么可以通过v$session_wait(从Oracle 10g,v$session视图可以取代v$session_wait的这一诊断功能)视图来入手。查询v$session_wait获取各进程等待事件:

winks@CCDB> select sid,event,p1,p1text from v$session_wait ;
       SID EVENT            &nb
... ...
<阅读全文>


Copyright © 2010 http://www.dbtan.com. All rights reserved.