Posted by dbtan on 四月 9th, 2010 自动负载信息库:AWR的引入
内存中记录的ASH信息始终是有限的,为了保存历史数据,这些信息最终需要写入磁盘。这些历史信息的存储,引出了Oracle 10g的另外一个新特性:自动负载信息库(Automatic Workload Repository,AWR)。
1. AWR的采样机制:
AWR收集关于该特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为每小时一次)为其所有重要统计信息和负载信息执行一次快照,并将这些快照存储在AWR中。这些信息在AWR中保留给定的时间(默认为一周),然后被清除。执行快照的频率及其保持时间都可以自定义,以满足不同环境的独特需要。
AWR
... ...
<阅读全文>
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:
... ...
<阅读全文>
Posted by dbtan on 四月 9th, 2010 Oracle 10g的增强:
虽然v$session_wait记录的信息如此重要,但是这些重要的信息是随session而消逝的,如果我们希望获得数据库的历史状态及session的历史状态及session的历史等待信息等数据,是不可得的。
所以很多时候很难回答这样的问题:
·这个系统昨天是什么样子的?
·今天和昨天相比有什么不同?
·1个小时前的那次性能下滑是哪个用户引起的?
·是哪些事件使我们今天用了更多的时间来等待?
你也可能一次又一次地听到Oracle Support这样问:
·问题出现时系统是怎样的状况?
·问题出现时系统有哪些等待?
·你能否重现(Reproduce)问题以使我们判断?
很多这样的问题是极其使人恼
... ...
<阅读全文>
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
... ...
<阅读全文>
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
... ...
<阅读全文>
Recent Comments