1 告警日志
实例启动的时刻开始,重要消息以及某些报告消息会被写至告警日志。
告警日志以及所有后台跟踪文件都会被写至BACKGOUND_DUMP_DEST参数所指定的目的地。
告警日志的名称为alert_.log,其中SID为实例名。
BACKGOUND_DUMP_DEST参数是动态的。
告警日志中的报告消息的内容如下:
。启动时间以及操作模式的启动和关闭命令。
。涉及物理结构的操作,使用ALTER DATABASE命令。
。表空间操作。
。所有日志切换与归档,包括所影响文件的名称。
。用于启动实例的非默认初始化参数,还包括ALTER SYSTEM命令修改这些参数。
告警日志包含了影响数据库结构和实例的各种操作的连续历史记录。
告警日志不包含sql语句(DML,DDL)。
告警日志包含常见的告警与错误:
。检查点不完全:说明日志文件过小而引起日志切换频繁。
。无法打开文件:在数据库启动过程中产生。
。块讹误:某个数据文件损坏引起。与DBA_EXTENTS视图一起查看。
。归档存在问题:归档目的地满和不可用。
。死锁。
2 后台跟踪文件
所有后台跟踪文件都会被写至BACKGOUND_DUMP_DEST参数所指定的目的地。
所有后台跟踪文件都具有一个头部,这个头部给出了文件的名称以及操作系统和生成该文件的oracle相关的版本信息。接下来的内容是实际的错误。
跟踪文件的命名为:实例的名称+该实例的进程的名称+该进程的操作系统进程号或线程号+后缀.trc
与告警日志不同,跟踪文件始终意味着错误。
DBA能控制放置跟踪文件的位置和其最大大小。
Alter system set max_dump_file_size=’5m’;
告警文件没有最大值,如果没有删除,其将一直增长。
3 服务器生成的告警
服务器告警系统是一种完全可配置的机制,这种机制能够监视数据库、实例和用户的会话,并且能够在达到某些限制以发生特定事件时发生警告。使用MMON监视进程和MMNL辅助进程。
3.1 告警类型
。阀值(threshold)告警:表空间使用
。非阀值告警:ora-1555
V$ALERT_TYPES视图可以查看能够配置告警的指标。
3.2 告警体系结构
实例自身会累积告警系统所使用的统计量。收集统计量不存在任何系统开销。
检索用于计算指标(metric)的统计量是由后台进程MMON完成的。MMON进程是实例的一部分,所以它能够直接访问存储相关信息的数据结构。
MMON进程将告警信息写入至ALERT_QUE队列。订阅者从ALERT_QUE队列读取信息。如果队列存在问题,那么MMON进程会将告警直接写入到告警日志。
告警日志与服务器告警系统完全分离。
3.3 告警信息
DBA_OUTSTANDING_ALERTS:会列出所有已被引发但是尚未处理的有状态的告警。
DBA_ALERT_HISTORY:包括处理的有状态的告警和直接写入到该视图的无状态的告警。
3.4 告警通知机制
该告警通知机制通常会在引发某些告警时向DBA发送邮件消息。DBA可以自定义配置。
3.5 设置阀值
标准的告警有预定义阀值:表空间85%时发出一条告警消息,在97%发出一条临界告警。
使用DATABASE CONTROL工具和DBMS_SERVER_ALEERT程序包设置和编辑阀值。
DBMS_SERVER_ALEERT程序包常用的过程有:
。set_threshold
Tablespace_pct_full:指定要监视的指标。
Operator_ge:大于等于。
Object_type_tablespace:被监视对象的类型。
例子:设置、查看和清除告警
1 创建表空间 sys@ORCL> create tablespace small datafile 'e:\oracle\small.dbf' size 1m;
表空间已创建。 2 设置警告告警和临界告警 sys@ORCL> BEGIN 2 DBMS_SERVER_ALERT.SET_THRESHOLD ( 3 metrics_id=>DBMS_SERVER_ALERT.TABLESPACE_PCT_FULL, 4 warning_operator=>DBMS_SERVER_ALERT.OPERATOR_GE, 5 warning_value=>50, 6 critical_operator=>DBMS_SERVER_ALERT.OPERATOR_GE, 7 critical_value=>75, 8 observation_period=>1, 9 consecutive_occurrences=>1,INSTANCE_NAME=>'null', 10 object_type=>DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE, 11 object_name=>'SMALL'); 12 END; 13 /
PL/SQL 过程已成功完成。 查看设置 sys@ORCL> select metrics_name, WARNING_OPERATOR,status from dba_thresholds where object_name='SMALL';
METRICS_NAME WARNING_OPER STATUS ----------------------------------- ------------ ------- Tablespace Space Usage GE VALID 3 创建表及插入足够记录,从而使空间超过警告阀值 sys@ORCL> create table toobig(c1 char(1000)) tablespace small;
表已创建。 sys@ORCL> begin 2 for n in 1..500 loop 3 insert into toobig values('a row'); 4 end loop; 5 commit; 6 end; 7 /
PL/SQL 过程已成功完成。
4 使用DBA_OUTSTANDING_ALERTS视图查询 sys@ORCL> select object_name, reason from dba_outstanding_alerts;
OBJECT_NAME ------------------------------------------------------------------ REASON ------------------------------------------------------------------ UNDO_NOGUARANTEE 表空间 [UNDO_NOGUARANTEE] 已占用 [86 percent]
SMALL 表空间 [SMALL] 只有 [0 megabytes] 空闲空间 5 给small表空间添加数据文件解决空间告警问题 sys@ORCL> alter tablespace small add datafile 'e:/oracle/small2.dbf' size 2m;
表空间已更改。 6 使用DBA_OUTSTANDING_ALERTS和DBA_ALERT_HISTORY视图查看 sys@ORCL> select object_name, reason from dba_outstanding_alerts;
OBJECT_NAME ------------------------------------------------------------------- REASON ------------------------------------------------------------------- UNDO_NOGUARANTEE 表空间 [UNDO_NOGUARANTEE] 已占用 [86 percent] sys@ORCL> select object_name, reason, suggested_action, resolution from dba_alert_history where object_name='SMALL';
OBJECT_NAME -------------------------------------------------------------------------------- REASON -------------------------------------------------------------------------------- SUGGESTED_ACTION -------------------------------------------------------------------------------- RESOLUT ------- SMALL "表空间的空间使用情况" 度量的阈值已更新 查看 DBA_THRESHOLDS 视图以验证结果 cleared
SMALL 表空间 [SMALL] 只有 [2 megabytes] 空闲空间 给表空间添加空间 cleared
7 删除small表空间 sys@ORCL> drop tablespace small including contents and datafiles;
表空间已删除。 |
8 用户跟踪文件
a) 实例级别的SQL跟踪
启动实例级别的SQL跟踪
Alter system set sql_trace=true;
关闭实例级别的SQL跟踪
Alter system set sql_trace=false;
生成的跟踪文件名为_ora_.trc,由USER_DUMP_DEST参数指定存储位置。
通过以下查询获得:
sys@ORCL> select s.username,s.sid,p.spid from v$session s, v$process p where
s.paddr=p.addr;
然后通过获得_ora_.trc文件
b) 会话级别的SQL跟踪
启动会话级别的SQL跟踪
Alter session set sql_trace=true;
关闭会话级别的SQL跟踪
Alter session set sql_trace=false;
生成的跟踪文件由USER_DUMP_DEST参数指定存储位置。
针对任何用户会话的跟踪,首先找出会话的标识符与序列号 sys@ORCL> select sid, serial# from v$session where username=’TIM’;
SID SERIAL# ---------- ---------- 130 51
其次,使用DBMS_MONITOR程序包,开始写跟踪信息; sys@ORCL> execute dbms_monitor.session_trace_enable( - session_id=>130,serial_num=>51);
PL/SQL 过程已成功完成。
停止写跟踪信息 sys@ORCL> execute dbms_monitor.session_trace_disable( - session_id=>130,serial_num=>51);
PL/SQL 过程已成功完成。 |
c) 使用DATABASE CONTROL进行跟踪
DBMS_MONITOR程序包可以跟踪:
会话级别
模块级别
客户ID级别
服务级别
动作级别
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9537053/viewspace-723162/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9537053/viewspace-723162/