Oracle数据库“赢在”在架构,这话还是有道理的,除了锁(lock)这个最大的架构上的“赢点”之外,Oracle事件(event)也是另外一个很重要的架构上的“赢点”,因为当今的Oracle数据库,无论日常运维,还是故障分析、诊断、排查和解决,还是性能调整。。。,都离不开事件(event),Oracle提供了很多关于事件(event)的视图,通过这些视图,用户可以获取到系统中的事件信息,通过这些事件信息,专业DBA就可以了解数据库当前,或者某个时间段内的状况,可见事件对Oracle的使用是多么重要,目前,Oracle11g上总共有不到900个事件,针对这些事件的详细说明,至今也没能发现一个非常权威、全面、详细、准确的资料,不过,倒也不是无迹可寻,还是有几个途径可以去了解Oracle的事件的,首先,大家可以去看Oracle官方的资料,其中对事件介绍较多、较详尽的是Oracle参考(Oracle reference),这本书里比较全面、详尽的介绍了常见事件;此外,我们还可以到网上去收集一些相关的资料;最后,我们也可以通过Oracle自身的视图(v$event_name)去了解这些事件,v$event_name虽然列出了所有的事件,但对事件并没有一个说明(Oracle新发布的版本12c对这方面有所改善),我们只能根据事件的名字来猜测事件的用途或作用,除了事件名字,还有几个字段对每个事件进行说明,例如:事件参数,事件类别等,我们可以通过desc v$event_name来列出该视图的字段项,我们不可能对所有的900个事件进行一一详细说明,我们可以在日常的应用中去逐渐学习和积累这些事件的知识,但我们可以看看Oracle11g中所有的事件类别,由此,我们可以看出Oracle在最近的版本里,对事件的重视及这方面的完善程度,通过如下命令,可获取所有的事件类别:
select distinct event_class from v$event_name order by event_class;
事件类别如下:
1、Administrative:Waits resulting from DBA commands that cause users to wait (for example, an index rebuild)
2、Application:Waits resulting from user application code (for example, lock waits caused by row level locking or explicit lock commands)
3、Cluster:Waits related to Real Application Clusters resources (for example, global cache resources such as 'gc cr block busy')
4、Commit: This wait class only comprises one wait event - wait for redo log write confirmation after a commit (that is, 'log file sync')
5、Concurrency:Waits for internal database resources (for example, latches)
6、Configuration:Waits caused by inadequate configuration of database or instance resources (for example, undersized log file sizes, shared pool size)
7、Idle:Waits that signify the session is inactive, waiting for work (for example, 'SQL*Net message from client')
8、Network:Waits related to network messaging (for example, 'SQL*Net more data to dblink')
9、Other:Waits which should not typically occur on a system (for example, 'wait for EMON to spawn')
10、Scheduler:Resource Manager related waits (for example, 'resmgr: become active')
11、System I/O:Waits for background process I/O (for example, DBWR wait for 'db file parallel write')
12、User I/O:Waits for user I/O (for example 'db file sequential read')
目前,Oracle在事件方面已经做的相对比较完善,在使用时也极大的方便了用户,在提高产品质量和可用性的同时,也极大的提高了用户的满意度和认可度,其他数据库厂商也已经开始支持和不断完善数据库事件方面的支持和功能,本人将来也许会发文逐一探讨其他商用数据库这方面的内容,禁止转载。