1、alert log file:DBA必须定期查看alert log文件,主要关注的信息主要有:内部的errors(ORA-600)和block corruption errors(ORA-1578或ORA-1498);DB的操作信息,如create database、startup、shutdown、archive log、recover等;对非默认参数的设置。它所记录的checkpoint start和end时间、未完成的checkpoint、归档时间crash的恢复时间是对调优很重要的。
注:alert_sid.log文件的路径由参数background_dump_dest决定;只有在参数log_checkpoints_to_alert被设置为true时,才会将checkpoint动作记录其中。
2、后台进程的trace files:Oracle会将后台进程检测出的errors信息写入trace files,主要用于诊断和查找故障原因,不包含tuning信息。
3、user trace files:它可以通过user或DBA的server processes请求产生,分为instance-level-tracing(通过set sql_trace=true/false设置)和session-level-tracing(通过 dbms_system.set_sql_trace_in_session设置指定session的tracing,或用alter session set sql_trace=true设置当前session的tracing)。user trace files包含了对tracing session的sql的信息。此外,还可用于alter database backup controlfile to trace和alter system set events(这个看到后面再说,现在不同了解)
4、views、utilities和tools:
①v$xxx视图显示了当前system的动态统计信息特别是v$sysstat。但是这些信息时往往是自实例启动以来的一个累计数据。所以有时会比较unhelpful。DBA_xxx视图记录了数据的存储统计信息。
②utlbstat和utlestat工具脚本:主要收集某段时间内的性能指标。
③statspack:其本质与utlbstat和utlestat是一致的,收集性能指标,优点在于它可以把统计信息保存在DB中从而进行不同阶段的比较。
④等待事件wait events:在troubleshooting时需要关注那些进程在等待,并在等待什么资源。
⑤此外还有其他的GUI工具用于DB的诊断。
5、dictionary和特殊的views:
当想要获得数据存储的细节信息时,需要先使用analyze语句对数据进行分析统计,再查看相关的DBA_xxx和特定的views。但这些统计信息是静 态的,只有再次运行analyze才会发生改变,而且对于较大data,用时较大。analyze获得的数据主要在下面的视图中:
DBA_TABLES/DBA_TAB_COLUMNS/DBA_CLUSTERS/DBA_INDEXES/INDEX_STATS/DBA_TAB_HISTOGRAMS/INDEX_HISTOGRAM
这个将会在后面详细讲述。
6、动态troubleshooting和性能视图:
①v$ views:是建立在想x$ tables的基础上,存储在内存结构中,保留instance的信息,所以只要在instance处于nomount的情况即可查询了。它们被罗列在v$fixed_table中,只有sys user可用。
②x$ tables:是动态的,数据随时变化,并且在shutdown时被清除,在startup时重新组装。当设置timed_statistics为true时,它们将保存时间信息。
③ systemwide statistics的收集
所有systemwide statistics的指标类型存放在v$statname中。所有指标的统计值存储在v$sysstat中。例如:select name, class, value from v$sysstat;
一般systemwide statistics的类型为:
• Class 1 refers to general instance activity.
• Class 2 refers to redo log buffer activity.
• Class 4 refers to locking.
• Class 8 refers to database buffer cache activity.
• Class 16 refers to OS activity.
• Class 32 refers to parallelization.
• Class 64 refers to tables access.
• Class 128 refers to debugging purposes.
④SGA全局统计,可以通过查看v$SGASTAT获得。
⑤等待事件的统计:所有可能引起等待的事件类型都存放在v$event_name中。
I) 所有的sessions的累计统计存放在v$system_event,显示了自instance startup后所有等待事件的统计数据。
II) 在troubleshooting时,往往需要知道某些进程在等待什么资源,对此,需要查找与session相关的视图。session的数据是从连接建立开始计算的。视图v$mystat显示了当前连接创建的session的统计信息。 eg. select sid, username, server from v$session where type=’USER’;
v$sesstat中显示了所有session的每个v$sysname的统计信息。如上图。
eg. 下面查询pga使用大约30000 bytes的session
select username,name,value
from v$statname a, v$session b, v$sesstat c
where a.statistic# = c.statistic#
and b.sid = c.sid
and b.type = ‘USER’
and a.name = ’session pga memory’
and c.value > 30000;
III) session等待事件的统计:v$session_event显示了自instance startup后,每个session的所有不同等待统计。v$session_wait显示了active的session正在等待的事件或资源。
7、statspack 这个我在其他文章中介绍了,嘻嘻这里只是提一下。sg中说,可以设置dbms_job,从而每周监控DB一定时间段的性能状态,进行对比从而定期进行tuning。
8、Oracle的等待事件:前面已经叙述了很多了,在这里要指出的是,v$session_wait中的p1text字段和 v$event_name中的parameter1字段是相对应。p2text和p3text也是一样的。此外,动态的初始化参数 timed_statistics设置为true时,将可以取wait_time字段的value。
此外,Oracle还提供了performance manager和Oracle enterprise两个可选包,用于性能的检测和管理。另外,DBA还应该根据自己的需要,创建自己的脚本用于统计,例如查看不同数据文件的使用状况的脚本。