Oracle如何监控表的DML次数
在数据库技术大会上,做了《构建高可用数据库监控系统》的分享以后,很多朋友对北斗如何实现表的DML次数监控有兴趣,会上因为时间的原因,我只是说有系统视图可以查到这个信息,因此有了本文,可以稍微详细一点来说明是如何实现的。
我说的系统视图,具体指的是
dba_tab_modifications/all_tab_modifications/user_tab_modifications,这几个视图收集了表自从上一次分析之后的DML累积次数。但是要注意,考虑到性能的影响,Oracle并不是实时统计这个数据的,在Oracle9i之前,约3个小时SMON进程会刷新一次数据,而Oracle9i以后这个时间间隔变成了15分钟。
因此以较高的频率来实时监控这个表的话,得到的并不是当前的准确数据。Oracle在dbms_stat包中提供了一个过程来手动刷新统计数据,假如在一天的业务低峰期采集一次数据的话,可以先执行该过程,就能得到较为准确的数据。但是,不建议在业务高峰期执行该过程。
exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
在Oracle10g之前,必须手工开启表的monitoring属性,才会将DML统计信息收集到这个视图中。可以通过itoring列查看表是否已经开启了监控。关于这个变化,可以参考Metalink ID 252597.1
alter table test monitoring;
Oracle10g之后,只要statistics_level是TYPICAL(默认)或者ALL,就能自动收集信息了,即使给表设置为nomonitoring也不能阻止,这个表的属性已经被废弃了。
desc dba_tab_modifications
Name                                      Null?    Type
----------------------------------------- --------
----------------------------
TABLE_OWNER                                        VARCHAR2(30)
TABLE_NAME                                        VARCHAR2(30)
PARTITION_NAME                                    VARCHAR2(30)
SUBPARTITION_NAME                                  VARCHAR2(30)
INSERTS                                            NUMBER
UPDATES                                            NUMBER
DELETES                                            NUMBER
TIMESTAMP                                          DATE
TRUNCATED                                          VARCHAR2(3)
DROP_SEGMENTS                                      NUMBER
Posted by NinGoo at 2010-04-27 12:13 | 『数据库』 | 5 Comments »
遭遇Oracle11gR2 ASM文件无法扩展的Bug
在一个11gR2+ASM的环境中,因为产生了大量归档,导致控制文件需要扩展,结果数据库报错:
Errors in file
/opt/oracle/diag/rdbms/test/test/trace/test_:
ORA-00202: control file: '+l'
ORA-17505: ksfdrsz:1 Failed to resize file to size 1920 blocks
ORA-15061: ASM operation not supported [41]
Control file expansion from 1600 blocks to 1920 blocks denied by OS
这是ASM的一个bug 8898852,可以在Oracle Support上到对应的小patch,经过验证可以解决该问题。该patch已经包含在前两天刚发布的ASM的PSU中,只需要安装该PSU即可。
从目前我们使用11gR2的一些经验来看,bug还是比较多,尤其是一些影响比较大的bug,还是让人对11gR2无法完全放心,只能在特定的环境,和有足够容错方案的环境中,才能冒着风险来试用。
除了这个ASM文件不能扩展,有几个从10.2.0.4升级到11.2.0.1的库,在switchover中碰到了两次ORA-600 [ktbdchk1: bad dscn],出现问题后无法执行DML,非常严重的一个问题,并且暂时还没有好的办法解决,只能通过重建有问题的表的方式绕过,因为两次都是在切换后出现,初步推断是Active Data Guard带来的bug,开了SR和Oracle扯了很久,还在继续研究中。
据说Oracle 11.2.0.2将在年中发布,希望这个新的版本能更稳定些吧。
4月份,Oracle11.2.0.1的PSU和ASM(Grid Infrastructure)的第一个PSU都已经发布了,如果需要在产品环境中使用,建议这些PSU都打上吧
注:该表格摘自My Oracle Support Note: 854428.1l
Posted by NinGoo at 2010-04-26 11:22 | 『数据库』 | No Comments »
tbstat:实时监控数据库统计状态的小工具
用perl写了一个简单的工具,用于实时查看数据库的统计状态信息,展现信息主要来源于Oracle数据字典中v$systat和v$system_event。写这个工具的初衷,是因为目前我们对于数据库的监控,更多的是分钟级别抽样的数据来绘制的图形,粒度相对还比较粗,有一些比较深的问题,需要更加细粒度的数据。
而如果把监控的粒度做到秒级,则收集的数据量就会非常大,因此需要一个平衡,平时采用分钟级别的抽样数据已经足够用于预警,而秒级的则用于某个具体问题的分析。
当前tbstat功能还比较简单,类似于iostat/vmstat等os工具,tbstat可以通过指定抽样间隔和抽样次数,来循环抓取Oracle的统计状态信息。tbstat支持三个参数 -i 表示间隔时间 -c 表示循环次数 -n 表示需要查看的统计信息的名字(使用前后%的like来查询)
∙tbstat -i 2 -c 10 表示间隔时间2s,循环次数10次,展示经过人工筛选的36项统计信息
∙tbstat -i 2 -c 10 -n parse 表示间隔时间2s,循环次数10次,展示所有名字包含parse的统计信息
∙tbstat -i 2 -c 10 -n all 表示间隔时间2s,循环次数10次,展示所有不为零的统计信息
也可以使用简化的参数输入方法,第一位表示间隔时间,第二位表示循环次数,第三位表示统计信息名。直接敲入tbstat,则默认的参数为间隔时间10s,次数无限,经过挑选过滤的一些常用的v$sysstat中的统计信息。如果name参数传入的值是event,则展示v$system_event中的等待事件的信息。
$tbstat 1 0
--------------------------------------------------------------------------
-- tbstat v0.3.3 --- a tool for oracle system statistics and event. -- Powered by NinGoo
--------------------------------------------------------------------------
CPU used by this session:    40
CR blocks created:      5
DBWR checkpoint buffers written:    569                  DBWR undo block writes:      64
bytes received via SQL*Net from client: 314297        bytes sent via
SQL*Net to client: 2761660
cleanouts only - consistent read gets:      4                        consistent gets:  48855
db block changes:  2122                          db block gets:    3714
enqueue requests:    900                          enqueue waits:      7
execute count:  3145
free buffer requested:    1402
index crx upgrade (positioned):      3            index fast
full scans (full):      0
leaf node 90-10 splits:      0
leaf node splits:      0
logons cumulative:      1
parse count (failures):      0
parse count (hard):      0                          physical reads:    1546
physical reads cache prefetch:      0                        physical writes:    603
redo size: 618436                        redo synch time:      16
redo synch writes:    181                        redo write time:      15
redo writes:    174  rollbacks only - consistent read gets:      0
sorts (disk):      0                          sorts (memory):    259
table scans (long tables):      0              table
scans (short tables):      9
transaction rollbacks:      0                            user commits:    182
$tbstat 1 0 event
---------------------------------------------------------------------
----------
-- tbstat v0.3.3 --- a tool for oracle system statistics and event.
-- Powered by NinGoo
oracle数据库怎么查询表---------------------------------------------------------------------
-
---------
Event Name:  waits  time                      Event Name: waits  time
--------------------------------------------------------------------------------------------
LGWR wait for redo copy:      1  0.01    SQL*Net more data from client:  151  19.95
SQL*Net more data to client:    1218  0.01                buffer busy waits:    2  0.01
control file parallel write:      1  0.51    control file sequential read:    1  0.26
cursor: pin S:      0  0.00          cursor: pin S wait on X:    0  0.00
db file parallel read:      0  0.00          db file parallel write:    0  0.00
db file scattered read:      0  0.00          db file sequential read:  2040  3.43
direct path read:    269  0.71            direct path read temp:    0  0.00
direct path write:      23  0.26          direct path write temp:    0  0.00
enq: CF - contention:      0  0.00            enq: HW - contention:    7  9.00
enq: SQ - contention:      0  0.00    enq: TX - allocate ITL entry:    0  0.00
enq: TX - index contention:      0  0.00    enq: TX - row lock contention:    0  0.00
latch free:      0  0.00      latch: cache buffers chains:    0  0.00
latch: library cache:      0  0.00              latch: redo writing:    0  0.00
latch: session allocation:      0  0.00              library cache lock:    0  0.00
log buffer space:      0  0.00          log file parallel write:  145  0.60
log file sequential read:    145  0.53      log file switch completion:    0  0.00
log file sync:    147  0.78                os thread startup:    0  0.00
read by other session:      0  0.00                  row cache lock:    0  0.00
undo segment extension:      0  0.00

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